Promouvoir une configuration avec keenauth config promote

keenauth config promote copie la configuration d'un environnement vers un autre, par exemple de staging vers production. Elle exécute les mêmes étapes que vous feriez à la main avec config export, config plan et config apply, sans écrire le document dans un fichier :

  1. Exporte le document de configuration de l'environnement --from.
  2. Crée un plan pour ce document dans l'environnement --to.
  3. Affiche le diff : + création(s), ~ mise(s) à jour, - suppression(s) ; les ressources inchangées sont seulement comptées.
  4. Applique le plan après votre confirmation.

Les deux environnements peuvent se trouver dans des régions différentes. Les régions ne s'appellent jamais entre elles : le document transite par votre machine, en mémoire uniquement.

Avant de commencer

La commande utilise votre connexion au tableau de bord, car elle a besoin d'accéder aux deux environnements. Connectez-vous avec keenauth login (voir Se connecter avec keenauth login) ; vous avez besoin d'un rôle sur le tableau de bord dans les deux environnements, permettant de lire la configuration de la source et d'écrire celle de la cible. Une clé API appartient à un seul environnement, donc la commande refuse de s'exécuter tant que KEENAUTH_API_KEY est défini et quitte avec le code 2.

Utilisation

keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0
Option Description
--from Identifiant de l'environnement source (env_…), dont la configuration est exportée (obligatoire).
--to Identifiant de l'environnement cible (env_…), où le plan est créé et appliqué (obligatoire).
--kinds Types à promouvoir, séparés par des virgules ou répétés, comme pour config export. Par défaut : tous les types.
--prune Supprime aussi les ressources des types promus qui n'existent que dans la cible. Sans cette option, elles sont conservées.
--secrets-from-env Lit les secrets client nécessaires au plan à partir des variables d'environnement locales (voir ci-dessous).
--confirm-deletion Confirme une suppression protégée avec <kind>/<key>, comme pour config apply.
--sp-host Hôte du fournisseur de service de l'environnement cible, par exemple login.example.com. Nécessaire uniquement lorsque le plan crée le matériel OIDC d'une connexion d'entreprise dans la cible (voir ci-dessous) ; sinon, omettez-la.
--yes, -y Applique sans demander de confirmation. Obligatoire lorsque l'entrée standard n'est pas un terminal.
--output, -o table, json ou yaml. Sans cette option, la CLI affiche un tableau dans un terminal et du JSON sinon.

Dans un terminal (table), le diff est affiché sur stdout, la question sur stderr, et après l'application, une ligne avec l'identifiant du plan, son statut et le nombre de modifications. Avec json ou yaml, le diff part sur stderr et stdout ne contient que le plan appliqué, afin qu'un script puisse le lire. Si la cible correspond déjà à la source, la commande affiche nothing to promote et n'applique rien.

Lorsque l'entrée standard n'est pas un terminal et que --yes est absent, la commande quitte avec le code 2 avant d'envoyer la moindre requête.

Les secrets ne sont jamais promus

Le document exporté ne contient jamais de valeur secrète : le secret client d'une connexion apparaît sous la forme d'un espace réservé secret_ref (par exemple KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET). Une modification de la cible qui nécessite un secret est signalée par [needs a client secret].

Un tel plan n'est pas appliqué tant que vous ne fournissez pas le secret vous-même : définissez la variable d'environnement indiquée par l'erreur, puis relancez la commande avec --secrets-from-env. La valeur est lue dans votre environnement local et envoyée uniquement dans le corps de la requête d'application. Elle n'est jamais affichée, jamais écrite dans un fichier et jamais lue depuis l'environnement source.

export KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET=...   # the production client secret
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0 --secrets-from-env

OIDC d'entreprise et connexions sociales

Les paramètres OIDC d'une connexion d'entreprise (spec.oidc : émetteur, identifiant client, méthode d'authentification du client et profil du fournisseur) sont promus avec la connexion. Lorsque la cible ne dispose pas encore de ces paramètres, l'application les crée et fixe l'URL de rappel à partir de l'hôte de la cible ; passez donc --sp-host avec l'hôte sur lequel vos utilisateurs se connectent dans l'environnement cible. Cet hôte ne fait pas partie du document, car il diffère d'un environnement à l'autre.

Le secret client d'une connexion sociale ne peut pas encore être appliqué à partir d'un plan : lorsque le plan en a besoin, l'application est refusée avec 501 not_implemented, même avec --secrets-from-env, et rien n'est modifié. Promouvez les autres types avec --kinds, ou retirez la connexion sociale de la source tant qu'elle n'est pas prise en charge.

Erreurs

Le plan est valide pendant une heure. Si une ressource de la cible change entre la création du plan et son application, l'application est refusée avec 409 config_conflict et rien n'est modifié ; relancez la commande. Les autres erreurs d'application sont les mêmes que pour config apply.

Codes de sortie

Code Signification
0 Le plan a été appliqué, ou il n'y avait rien à promouvoir.
1 Une erreur serveur, ou vous avez refusé la confirmation (aborted).
2 Erreur d'utilisation : identifiant d'environnement invalide ou identique, --yes absent dans un terminal non interactif, KEENAUTH_API_KEY défini, ou un secret nécessaire au plan est manquant. Rien n'a été appliqué.
3 Vous n'êtes pas connecté, ou le serveur a répondu 401 ou 403.
4 Le plan n'inclut pas la fonctionnalité (403 avec plan_feature_unavailable).