# OCP Smart Login - Setup & Integration Guide ## 📋 Checklist - [ ] **Schritt 1:** Neue Dateien in Repository überprüfen - [ ] **Schritt 2:** Dateien mit Sync synchronisieren - [ ] **Schritt 3:** .zshrc konfigurieren - [ ] **Schritt 4:** Environment-Variablen setzen - [ ] **Schritt 5:** Shell neu laden - [ ] **Schritt 6:** Testen --- ## Schritt 1️⃣ - Neue Dateien überprüfen Die folgenden Dateien sollten bereits im Repository sein: ```bash cd ~/mac-home/home-content # Check ob Dateien vorhanden sind ls -lh .bash_oc_smart.sh .bash_oc_smart_aliases.sh # Expected output: # -rwxr-xr-x ... .bash_oc_smart.sh # -rwxr-xr-x ... .bash_oc_smart_aliases.sh ``` Falls nicht vorhanden: ```bash # Script braucht execute permission chmod +x ~/.bash_oc_smart.sh ~/.bash_oc_smart_aliases.sh ``` --- ## Schritt 2️⃣ - Synchronisieren mit Repo Du möchtest die Dateien ins Repo committen: ```bash cd ~/mac-home # Status prüfen ./sync-home-content.sh status # Expected: Neue Dateien werden angezeigt # Synchronisieren (Home → Repo) ./sync-home-content.sh pull --dry-run # Test ./sync-home-content.sh pull # Real # Git commit cd home-content git add .bash_oc_smart.sh .bash_oc_smart_aliases.sh git commit -m "feat: Add OCP smart login system for faster context switching" git push ``` --- ## Schritt 3️⃣ - .zshrc konfigurieren Öffne deine `~/.zshrc`: ```bash vim ~/.zshrc # oder nano ~/.zshrc ``` **Füge am ENDE der Datei ein:** ```bash # ============================================================================ # OCP Smart Login/Context Switch # ============================================================================ # Source helpers and new smart aliases (must be AFTER .bash_aliases) if [[ -f ~/.bash_oc_smart_aliases.sh ]]; then source ~/.bash_oc_smart_aliases.sh fi ``` **Wichtig:** - Dies muss **NACH** den `.bash_aliases` sein (wenn du die sourced) - Manche .zshrc sourced `.bash_aliases` via: `test -f ~/.bash_aliases && . ~/.bash_aliases` Überprüfe, dass `.bash_aliases` sourced wird: ```bash # In .zshrc nach `source ~/.bash_oc_smart_aliases.sh` grep -n "bash_aliases" ~/.zshrc # Expected: irgendwelche Zeilen mit .bash_aliases ``` --- ## Schritt 4️⃣ - Environment-Variablen setzen Die Smart-Login Funktion nutzt Token aus Umgebungsvariablen. ### Option A: In ~/.profile (automatisch bei Login) Öffne `~/.profile` oder `~/.bash_profile`: ```bash # Erstelle/öffne ~/.profile vim ~/.profile ``` **Füge folgende Environment-Variablen hinzu:** ```bash # ============================================================================ # OpenShift Token Environment Variables # ============================================================================ # NOTE: Ersetze die Token mit deinen echten Token! # WICHTIG: Dieses File nicht ins Repository committen (ist geheim!) export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-aws-test-token-here" export OPENSHIFT_TOKEN_AWS_PROD="sha256~your-aws-prod-token-here" export OPENSHIFT_TOKEN_WZU="sha256~your-wzu-token-here" export OPENSHIFT_TOKEN_SC02="sha256~your-sc02-token-here" export OPENSHIFT_TOKEN_SCSputnix="sha256~your-sputnix-token-here" # Alternativ: Load from encrypted file # if [[ -f ~/.secrets/ocp_tokens ]]; then # source ~/.secrets/ocp_tokens # fi ``` **Sicherheit:** ```bash # Berechtigungen setzen chmod 600 ~/.profile # Nur du kannst lesen # Oder in separater Datei: mkdir -p ~/.secrets chmod 700 ~/.secrets vim ~/.secrets/ocp_tokens chmod 600 ~/.secrets/ocp_tokens # In ~/.profile dann: # [[ -f ~/.secrets/ocp_tokens ]] && source ~/.secrets/ocp_tokens ``` ### Option B: Im Moment eingeben (für Test) ```bash # Einmalig für diese Shell-Session: export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-token" export OPENSHIFT_TOKEN_AWS_PROD="sha256~your-token" # ... etc # Testen ocStatus ``` ### Token abrufen Falls du deine Token nicht kennst: ```bash # Login manuell, dann Token auslesen oc login --server=https://api.aws01t.sbb-aws-test.net:6443 # Browser öffnet sich, Token eingeben # Token ist jetzt in kubeconfig oc whoami -t # Copy den Token und speichere ihn in ~/.profile oder ~/.secrets/ocp_tokens ``` --- ## Schritt 5️⃣ - Shell neu laden ```bash # Reload .zshrc source ~/.zshrc # Oder neues Terminal-Tab öffnen (laden neue .profile) ``` Überprüfe dass Aliases geladen sind: ```bash # Check ob aliases vorhanden sind alias | grep ocAWS # Expected: # ocAWS-Dev='oc_smart_switch ...' # ocAWS-Int='oc_smart_switch ...' # ... etc ``` --- ## Schritt 6️⃣ - Testen ### Test 1: Helper-Funktion testen ```bash # Check Auth Status ocStatus # Expected output (wenn nicht angemeldet): # [ERROR] ✗ Not logged in to any cluster # Oder (wenn angemeldet): # [OK] ✓ Authenticated as: u241100 # [OK] ✓ Current context: kihub-dev/... ``` ### Test 2: Cluster wechseln (First time = Login) ```bash # First cluster (sollte Browser öffnen) ocAWS-Test1 # Expected output: # ═══════════════════════════════════════════ # OCP Smart Switch: AWS-Test1 # ═══════════════════════════════════════════ # → Not logged in to any cluster # → Performing full login... # [Browser opens for token] # ✓ Login successful # ✓ Context switched successfully # ✓ Switched to project: kihub-dev-u241100 ``` ### Test 3: Schneller Context-Switch (2x) ```bash # Zu anderem Cluster (Token ist noch valid = nur Context switch) ocAWS-Int # Expected output (SCHNELL): # ═══════════════════════════════════════════ # OCP Smart Switch: AWS-Int # ═══════════════════════════════════════════ # ✓ Token valid, switching context... # From: kihub-dev/api-aws01t-sbb-aws-test-net:6443/u241100 # To: kihub-int/api-lisa-sbb-aws-net:6443/u241100 # ✓ Context switched successfully # ✓ Switched to project: kihub-int ``` ### Test 4: Zurück-Switch (auch schnell!) ```bash # Zurück zum ersten Cluster ocAWS-Test1 # Expected output (schnell, gleicher Token): # ✓ Token valid, switching context... # ✓ Context switched successfully # ✓ Already in project: kihub-dev-u241100 ``` ### Test 5: Helper Aliases ```bash # Show status ocStatus # List contexts ocCtx # Who am I? ocWhoami # Logout ocLogout ``` --- ## 🐛 Häufige Probleme ### Problem: "command not found: ocAWS-Dev" **Ursache:** Alias wurde nicht geladen **Lösung:** ```bash # 1. Überprüfe ob .bash_oc_smart_aliases.sh sourced wird cat ~/.zshrc | grep bash_oc_smart_aliases # 2. Falls nicht vorhanden, hinzufügen (siehe Schritt 3) # 3. Shell neu laden source ~/.zshrc # 4. Überprüfe ob alias vorhanden type ocAWS-Dev ``` ### Problem: "Token environment variable not set" **Ursache:** OPENSHIFT_TOKEN_* nicht gesetzt **Lösung:** ```bash # 1. Check ob Variable gesetzt ist echo $OPENSHIFT_TOKEN_AWS_TEST # 2. Falls leer, setze in ~/.profile echo 'export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-token"' >> ~/.profile # 3. Neue Shell öffnen oder source ~/.profile # 4. Überprüfe echo $OPENSHIFT_TOKEN_AWS_TEST # Sollte nicht leer sein ``` ### Problem: "script permission denied" **Ursache:** .bash_oc_smart.sh hat keine execute permission **Lösung:** ```bash chmod +x ~/.bash_oc_smart.sh ~/.bash_oc_smart_aliases.sh ``` ### Problem: "Failed to switch context" **Ursache:** Context existiert nicht in kubeconfig **Lösung:** ```bash # 1. Überprüfe verfügbare contexts oc config get-contexts # 2. Wenn context fehlt: Login durchführen ocAWS-Test1 # Generiert kubeconfig mit neuen contexts # 3. Erneut versuchen ocAWS-Dev ``` ### Problem: Token wird immer erneut abgefragt **Ursache:** - Token ist sehr kurz gültig (Cluster-Config) - Oder: OPENSHIFT_TOKEN_* Variable ist falsch/abgelaufen **Lösung:** ```bash # 1. Token aktualisieren oc login --server=https://api.aws01t.sbb-aws-test.net:6443 # Browser öffnet oc whoami -t # Neuen Token kopieren # 2. In ~/.profile/~/.secrets/ocp_tokens aktualisieren vim ~/.profile # Ersetze OPENSHIFT_TOKEN_AWS_TEST="..." # 3. Shell neu laden source ~/.profile ``` --- ## 📚 Next Steps ### Nach erfolgreichem Setup: 1. **Speichere die Tokens sicher:** ```bash # Nicht in ~/.zshrc (wird möglicherweise committed) # Nicht in .bash_aliases (auch versioniert) # Am besten: ~/.secrets/ocp_tokens mit 600 permissions ``` 2. **Alias die Aliases:** ```bash # Für noch schnellere Nutzung in ~/.zshrc: alias test='ocAWS-Test1' alias int='ocAWS-Int' alias prod='ocAWS-Prod' alias intsc='ocSC-Int' alias prodsc='ocSC-Prod' # Dann: test # Statt ocAWS-Test1 int # Statt ocAWS-Int ``` 3. **Dokumentiere deine Cluster-Mappings:** ```bash # In Projekt-README oder Konfluence: # Welche Alias entspricht welcher Environment? # ocAWS-Dev → Development cluster (aws01t) # ocAWS-Int → Integration cluster (Lisa) # ocAWS-Prod → Production cluster (Lisa/Maggie) ``` --- ## ✅ Fertig! Dein OCP Smart Login System ist nun aktiv. **Teste mit:** ```bash ocStatus # Check aktueller Status ocAWS-Dev # Switch zu Dev (1x Browser first time) ocAWS-Int # Switch zu Int (schnell!) ocAWS-Prod # Switch zu Prod (schnell!) ocAWS-Dev # Zurück zu Dev (schnell!) ``` **Ersparte Zeit beim täglichen Cluster-Switching: ~50-60%** 🚀 --- ## 🎓 Weitere Ressourcen - Detaillierte Dokumentation: `OCP-SMART-LOGIN.md` - Alte Manual-Logins noch vorhanden: `ocLoginAWS-*`, `ocLoginSC-*` - Helper Functions: `~/.bash_oc_smart.sh` - Alias Definitions: `~/.bash_oc_smart_aliases.sh` --- Viel Erfolg beim schnelleren Cluster-Switching! 🎉