Promuovere la configurazione con keenauth config promote
keenauth config promote copia la configurazione di un ambiente in un altro, per esempio da staging a production. Esegue gli stessi passaggi che eseguiresti a mano con config export, config plan e config apply, senza scrivere il documento su un file:
- Esporta il documento di configurazione dell'ambiente
--from. - Crea un piano per quel documento nell'ambiente
--to. - Stampa il diff:
+creazioni,~aggiornamenti,-eliminazioni; le risorse invariate vengono solo contate. - Applica il piano dopo la tua conferma.
I due ambienti possono trovarsi in regioni diverse. Le regioni non si chiamano mai tra loro: il documento passa dalla tua macchina, solo in memoria.
Prima di iniziare
Il comando usa il tuo accesso alla dashboard, perché serve accedere a entrambi gli ambienti. Accedi con keenauth login (vedi Accedere con keenauth login); ti serve un ruolo nella dashboard in entrambi gli ambienti che consenta di leggere la configurazione dell'origine e di scrivere quella della destinazione. Una chiave API appartiene a un solo ambiente, quindi il comando si rifiuta di essere eseguito mentre KEENAUTH_API_KEY è impostato ed esce con codice 2.
Utilizzo
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0
| Flag | Descrizione |
|---|---|
--from |
ID dell'ambiente di origine (env_…), la cui configurazione viene esportata (obbligatorio). |
--to |
ID dell'ambiente di destinazione (env_…), dove il piano viene creato e applicato (obbligatorio). |
--kinds |
Tipi da promuovere, separati da virgola o ripetuti, come per config export. Predefinito: tutti i tipi. |
--prune |
Elimina anche le risorse dei tipi promossi che esistono solo nella destinazione. Senza il flag vengono mantenute. |
--secrets-from-env |
Leggi i client secret necessari al piano dalle variabili d'ambiente locali (vedi sotto). |
--confirm-deletion |
Conferma un'eliminazione protetta come <kind>/<key>, come per config apply. |
--sp-host |
Host del service provider dell'ambiente di destinazione, per esempio login.example.com. Serve solo quando il piano crea il materiale OIDC di una connessione enterprise nella destinazione (vedi sotto); altrimenti omettilo. |
--yes, -y |
Applica senza chiedere. Obbligatorio quando lo standard input non è un terminale. |
--output, -o |
table, json o yaml. Senza il flag la CLI stampa una tabella in un terminale e JSON altrimenti. |
In un terminale (table), il diff viene stampato su stdout, la domanda su stderr e, dopo l'applicazione, una riga con l'ID del piano, il suo stato e il numero di modifiche. Con json o yaml, il diff va su stderr e stdout contiene solo il piano applicato, così uno script può leggerlo. Se la destinazione è già uguale all'origine, il comando stampa nothing to promote e non applica nulla.
Quando lo standard input non è un terminale e manca --yes, il comando esce con codice 2 prima di inviare qualsiasi richiesta.
I segreti non vengono mai promossi
Il documento esportato non contiene mai un valore segreto: il client secret di una connessione appare come un segnaposto secret_ref (per esempio KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET). Una modifica nella destinazione che richiede un segreto viene mostrata con [needs a client secret].
Un piano del genere non viene applicato a meno che tu non fornisca tu stesso il segreto: imposta la variabile d'ambiente indicata nell'errore ed esegui di nuovo il comando con --secrets-from-env. Il valore viene letto dal tuo ambiente locale e inviato solo nel body della richiesta di applicazione. Non viene mai stampato, mai scritto su un file e mai letto dall'ambiente di origine.
export KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET=... # the production client secret
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0 --secrets-from-env
Connessioni OIDC enterprise e social
Le impostazioni OIDC di una connessione enterprise (spec.oidc: issuer, client ID, metodo di autenticazione del client e profilo del provider) vengono promosse insieme alla connessione. Quando la destinazione non ha ancora queste impostazioni, l'applicazione le crea e fissa la callback URL dall'host della destinazione, quindi passa --sp-host con l'host su cui i tuoi utenti accedono nell'ambiente di destinazione. L'host non fa parte del documento, perché differisce tra gli ambienti.
Il client secret di una connessione social non può ancora essere applicato da un piano: quando il piano ne richiede uno, l'applicazione viene rifiutata con 501 not_implemented anche con --secrets-from-env, e non viene modificato nulla. Promuovi gli altri tipi con --kinds, oppure escludi la connessione social dall'origine finché non sarà supportata.
Errori
Il piano è valido per un'ora. Se una risorsa della destinazione cambia tra la creazione del piano e l'applicazione, l'applicazione viene rifiutata con 409 config_conflict e non viene modificato nulla; esegui di nuovo il comando. Gli altri errori di applicazione sono uguali a quelli di config apply.
Codici di uscita
| Codice | Significato |
|---|---|
0 |
Il piano è stato applicato, oppure non c'era nulla da promuovere. |
1 |
Un errore del server, oppure hai rifiutato la conferma (aborted). |
2 |
Errore di utilizzo: un ID di ambiente non valido o uguale, --yes mancante su un terminale non interattivo, KEENAUTH_API_KEY impostato, oppure manca un segreto richiesto dal piano. Non è stato applicato nulla. |
3 |
Non hai effettuato l'accesso, oppure il server ha risposto 401 o 403. |
4 |
Il piano non include la funzionalità (403 con plan_feature_unavailable). |