Promover la configuración con keenauth config promote
keenauth config promote copia la configuración de un entorno a otro, por ejemplo de staging a production. Ejecuta los mismos pasos que ejecutaría a mano con config export, config plan y config apply, sin escribir el documento en un archivo:
- Exporta el documento de configuración del entorno
--from. - Crea un plan para ese documento en el entorno
--to. - Muestra la diferencia:
+creaciones,~actualizaciones,-eliminaciones; los recursos sin cambios solo se cuentan. - Aplica el plan después de que confirme.
Los dos entornos pueden estar en regiones distintas. Las regiones nunca se llaman entre sí: el documento pasa por su equipo, solo en memoria.
Antes de empezar
El comando usa su inicio de sesión en el panel, porque necesita acceso a ambos entornos. Inicie sesión con keenauth login (consulte Cómo iniciar sesión con keenauth login); necesita un rol en el panel en ambos entornos que permita leer la configuración del origen y escribir la configuración del destino. Una clave de API pertenece a un solo entorno, por lo que el comando se niega a ejecutarse mientras KEENAUTH_API_KEY esté definido y termina con el código de salida 2.
Uso
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0
| Opción | Descripción |
|---|---|
--from |
ID del entorno de origen (env_…), cuya configuración se exporta (obligatorio). |
--to |
ID del entorno de destino (env_…), donde se crea y aplica el plan (obligatorio). |
--kinds |
Tipos a promover, separados por comas o repetidos, como en config export. Predeterminado: todos los tipos. |
--prune |
Elimina también los recursos de los tipos promovidos que existan solo en el destino. Sin esta opción se conservan. |
--secrets-from-env |
Lee los secretos de cliente que necesita el plan desde variables de entorno locales (véase más abajo). |
--confirm-deletion |
Confirma una eliminación protegida como <kind>/<key>, como en config apply. |
--sp-host |
Host del proveedor de servicios del entorno de destino, por ejemplo login.example.com. Solo es necesario cuando el plan crea el material OIDC de una conexión empresarial en el destino (véase más abajo); en otro caso, omítala. |
--yes, -y |
Aplica sin preguntar. Obligatorio cuando la entrada estándar no es una terminal. |
--output, -o |
table, json o yaml. Sin esta opción, la CLI muestra una tabla en una terminal y JSON en caso contrario. |
En una terminal (table), la diferencia se imprime en stdout, la pregunta en stderr y, después de aplicar, una línea con el ID del plan, su estado y el número de cambios. Con json o yaml, la diferencia va a stderr y stdout contiene solo el plan aplicado, para que un script pueda leerlo. Si el destino ya coincide con el origen, el comando muestra nothing to promote y no aplica nada.
Cuando la entrada estándar no es una terminal y falta --yes, el comando termina con el código de salida 2 antes de enviar cualquier solicitud.
Los secretos nunca se promueven
El documento exportado nunca contiene el valor de un secreto: el secreto de cliente de una conexión aparece como un marcador secret_ref (por ejemplo KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET). Un cambio en el destino que necesite un secreto se muestra con [needs a client secret].
No se aplica un plan así a menos que usted proporcione el secreto: defina la variable de entorno que indica el error y vuelva a ejecutar el comando con --secrets-from-env. El valor se lee de su entorno local y se envía solo en el cuerpo de la solicitud de aplicación. Nunca se imprime, nunca se escribe en un archivo y nunca se lee del entorno de origen.
export KEENAUTH_CONNECTION_GOOGLE_CLIENT_SECRET=... # the production client secret
keenauth config promote --from env_01j9z3k4m5n6p7q8r9s0t1stg0 --to env_01j9z3k4m5n6p7q8r9s0t1prd0 --secrets-from-env
Conexiones OIDC empresariales y sociales
La configuración OIDC de una conexión empresarial (spec.oidc: emisor, ID de cliente, método de autenticación del cliente y perfil del proveedor) se promueve junto con la conexión. Cuando el destino aún no tiene esta configuración, la aplicación la crea y fija la URL de callback a partir del host del destino, por lo que debe pasar --sp-host con el host en el que sus usuarios inician sesión en el entorno de destino. El host no forma parte del documento, porque cambia entre entornos.
El secreto de cliente de una conexión social todavía no se puede aplicar desde un plan: cuando el plan lo necesita, la aplicación se rechaza con 501 not_implemented incluso con --secrets-from-env, y no se cambia nada. Promueva los demás tipos con --kinds, o deje la conexión social fuera del origen hasta que se admita.
Errores
El plan es válido durante una hora. Si un recurso del destino cambia entre el plan y la aplicación, la aplicación se rechaza con 409 config_conflict y no se cambia nada; vuelva a ejecutar el comando. Los demás errores de aplicación son los mismos que para config apply.
Códigos de salida
| Código | Significado |
|---|---|
0 |
El plan se aplicó, o no había nada que promover. |
1 |
Un error del servidor, o usted rechazó la confirmación (aborted). |
2 |
Error de uso: un ID de entorno no válido o idéntico, falta --yes en una terminal no interactiva, KEENAUTH_API_KEY definido, o falta un secreto que necesita el plan. No se aplicó nada. |
3 |
No ha iniciado sesión, o el servidor respondió 401 o 403. |
4 |
El plan no incluye la función (403 con plan_feature_unavailable). |