Konfiguration mit keenauth config promote übertragen
keenauth config promote kopiert die Konfiguration einer Umgebung in eine andere, zum Beispiel von staging nach production. Er führt dieselben Schritte aus, die Sie manuell mit config export, config plan und config apply ausführen würden, ohne das Dokument in eine Datei zu schreiben:
- Exportiert das Konfigurationsdokument der
--from-Umgebung. - Erstellt für dieses Dokument einen Plan in der
--to-Umgebung. - Gibt den Diff aus:
+anlegen,~aktualisieren,-löschen; unveränderte Ressourcen werden nur gezählt. - Wendet den Plan nach Ihrer Bestätigung an.
Die beiden Umgebungen können in verschiedenen Regionen liegen. Die Regionen rufen einander nie auf: Das Dokument läuft über Ihren Rechner und existiert nur im Speicher.
Bevor Sie beginnen
Der Befehl verwendet Ihre Dashboard-Anmeldung, da er Zugriff auf beide Umgebungen benötigt. Melden Sie sich mit keenauth login an (siehe Anmelden mit keenauth login); Sie benötigen in beiden Umgebungen eine Dashboard-Rolle, die das Lesen der Konfiguration der Quelle und das Schreiben der Konfiguration des Ziels erlaubt. Ein API-Schlüssel gehört zu genau einer Umgebung, daher verweigert der Befehl die Ausführung, solange KEENAUTH_API_KEY gesetzt ist, und beendet sich mit Code 2.
Verwendung
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0
| Flag | Beschreibung |
|---|---|
--from |
ID der Quellumgebung (env_…), deren Konfiguration exportiert wird (erforderlich). |
--to |
ID der Zielumgebung (env_…), in der der Plan erstellt und angewendet wird (erforderlich). |
--kinds |
Zu übertragende Arten, durch Kommata getrennt oder wiederholt, wie bei config export. Standard: alle Arten. |
--prune |
Löscht außerdem Ressourcen der übertragenen Arten, die nur im Ziel existieren. Ohne das Flag bleiben sie erhalten. |
--secrets-from-env |
Liest die Client-Geheimnisse, die der Plan benötigt, aus lokalen Umgebungsvariablen (siehe unten). |
--confirm-deletion |
Bestätigt eine geschützte Löschung als <kind>/<key>, wie bei config apply. |
--sp-host |
Service-Provider-Host der Zielumgebung, zum Beispiel login.example.com. Nur nötig, wenn der Plan das OIDC-Material einer Enterprise-Verbindung im Ziel erstellt (siehe unten); andernfalls weglassen. |
--yes, -y |
Ohne Rückfrage anwenden. Erforderlich, wenn die Standardeingabe kein Terminal ist. |
--output, -o |
table, json oder yaml. Ohne das Flag gibt die CLI in einem Terminal eine Tabelle und sonst JSON aus. |
Im Terminal (table) wird der Diff auf der Standardausgabe ausgegeben, die Rückfrage auf der Standardfehlerausgabe, und nach der Anwendung eine Zeile mit der Plan-ID, ihrem Status und der Anzahl der Änderungen. Mit json oder yaml geht der Diff auf die Standardfehlerausgabe, und die Standardausgabe enthält nur den angewendeten Plan, sodass ein Skript ihn lesen kann. Wenn das Ziel bereits der Quelle entspricht, gibt der Befehl nothing to promote aus und wendet nichts an.
Wenn die Standardeingabe kein Terminal ist und --yes fehlt, beendet sich der Befehl mit Code 2, bevor er eine Anfrage sendet.
Geheimnisse werden nie übertragen
Das exportierte Dokument enthält nie einen Geheimniswert: Das Client-Geheimnis einer Verbindung erscheint als secret_ref-Platzhalter (zum Beispiel KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET). Eine Änderung im Ziel, die ein Geheimnis benötigt, wird mit [needs a client secret] angezeigt.
Ein solcher Plan wird nicht angewendet, solange Sie das Geheimnis nicht selbst angeben: Setzen Sie die Umgebungsvariable, die der Fehler nennt, und führen Sie den Befehl mit --secrets-from-env erneut aus. Der Wert wird aus Ihrer lokalen Umgebung gelesen und nur im Body der Anwendungsanfrage gesendet. Er wird nie ausgegeben, nie in eine Datei geschrieben und nie aus der Quellumgebung gelesen.
export KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET=... # the production client secret
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0 --secrets-from-env
Enterprise-OIDC- und Social-Verbindungen
Die OIDC-Einstellungen einer Enterprise-Verbindung (spec.oidc: Issuer, Client-ID, Client-Authentifizierungsmethode und Provider-Profil) werden zusammen mit der Verbindung übertragen. Wenn das Ziel diese Einstellungen noch nicht hat, legt die Anwendung sie an und setzt die Callback-URL aus dem Host des Ziels; übergeben Sie daher --sp-host mit dem Host, auf dem sich Ihre Benutzer im Ziel anmelden. Der Host ist nicht Teil des Dokuments, da er sich zwischen Umgebungen unterscheidet.
Das Client-Geheimnis einer Social-Verbindung kann aus einem Plan noch nicht angewendet werden: Wird es benötigt, wird die Anwendung mit 501 not_implemented abgelehnt, auch mit --secrets-from-env, und nichts wird geändert. Übertragen Sie die anderen Arten mit --kinds oder lassen Sie die Social-Verbindung aus der Quelle heraus, bis sie unterstützt wird.
Fehler
Der Plan ist eine Stunde gültig. Ändert sich eine Ressource des Ziels zwischen Plan und Anwendung, wird die Anwendung mit 409 config_conflict abgelehnt und nichts wird geändert; führen Sie den Befehl erneut aus. Die übrigen Anwendungsfehler entsprechen denen von config apply.
Exit-Codes
| Code | Bedeutung |
|---|---|
0 |
Der Plan wurde angewendet oder es gab nichts zu übertragen. |
1 |
Ein Serverfehler, oder Sie haben die Bestätigung abgelehnt (aborted). |
2 |
Verwendungsfehler: eine ungültige oder identische Umgebungs-ID, --yes fehlt in einem nicht interaktiven Terminal, KEENAUTH_API_KEY ist gesetzt oder ein Geheimnis, das der Plan benötigt, fehlt. Nichts wurde angewendet. |
3 |
Sie sind nicht angemeldet, oder der Server antwortete mit 401 oder 403. |
4 |
Der Plan enthält die Funktion nicht (403 mit plan_feature_unavailable). |