Estoy usando el proveedor de kubernetes en terraform y ejecuto un trabajo de kubernetes en un clúster de EKS en AWS. Quiero obtener algunos resultados del trabajo y almacenarlos en mis variables de terraformación (o almacén de parámetros de AWS) para poder usarlos en mis archivos de terraformación en otros lugares.
No estoy seguro de cómo hacerlo.
¿Puede el trabajo escribir esta información en un archivo y volver a colocarla en el mapa de configuración que recibió? ¿O hay alguna forma en terraform de analizar el registro (la salida estándar) del trabajo k8s?
Aquí está, más o menos, mi archivo terraform:
resource "kubernetes_job" "my_job" { metadata { name = "my_job" namespace = var.namespace } spec { template { metadata {} spec { volume { name = local.config_name config_map { name = kubernetes_config_map.my_job.metadata[0].name default_mode = "0777" } } container { name = "my_container" image = "123456789012.dkr.ecr.us-east-1.amazonaws.com/my_container:6.4.1.37" command = ["/bin/bash","/opt/utilities/run_pre_db_script.sh"] working_dir = "/opt/utilities" volume_mount { name = local.config_name mount_path = "/opt/my_container_mount" } } restart_policy = "Never" } } } timeouts { create="5m" } wait_for_completion = true }Terraform no puede analizar los registros que produce el trabajo, y no se recomienda cambiar los valores del mapa de configuración, ya que creará una diferencia entre su configuración y el estado en producción.
La mejor solución que se me ocurre para lograr su tarea es hacer que el trabajo produzca archivos tarraform / archivos de parámetros de terraform generados dinámicamente, enviarlos a la tienda donde se almacenan el resto de sus archivos de terraform (un repositorio de git, por ejemplo).
Una vez que lo logre, puede hacer que la siguiente invocación de terraformación recupere los resultados del trabajo e incorpórelo a la siguiente ejecución.