Manejar variables de salida entre módulos

Ya en un post previo mencioné como puedes usar módulos para hacer el despliegue de toda tu infraestructura. La cuestión vendrá cuando te des cuenta que ciertos módulos dependen de la creación de otros más. Esto puede ser un problema ¿no? Veamos un caso simple en Azure.

Si quieres crear una Web App es indispensable que tengas ya creado un App Service Plan, lo fácil sería que simplemente lo crearas antes y le pases el nombre, pero tú y yo sabemos que eso no es viable y no es la razón por la que estamos aquí, además, eso sería simple y aburrido.

Por otro lado, si creas dos módulos en una infraestructura de Terraform entonces las cosas se ponen buenas. ¿Cómo puedo pasarle el identificador del módulo del Service Plan al módulo de mi Web App? Es fácil, utilizando variables de salida o mejor dicho output.tf.

Comienza por crear dos carpetas, una para el plan y otra para la aplicación web. Dentro de la carpeta del plan, agrega después de main y variables, un archivo de output.tf.

En el archivo output.tf, debes poner todos los datos que desees extraer del elemento recién creado, en este caso puedes solo extraer el identificador.

output "service_plan_id" {
  value = azurerm_app_service_plan.service_plan.id
}

Como verás, la sintaxis del valor de salida es el nombre de la herramienta por crear, el nombre asignado en Terraform y la propiedad esperada. De esta manera estos datos pueden ser extraídos por el otro módulo PERO ÚNICAMENTE desde el archivo donde todos los nodos son invocados.

module "web_app" {
  source              = "./modules/webApp"
  resource_group_name = azurerm_resource_group.rg.name
  location            = var.location
  tag_env             = var.tag_env
  app_name            = var.app_name
  plan_id             = module.app_service_plan.service_plan_id
}

Aquí puedes ver que se invoca al otro módulo, el del plan, se invoca por medio de la palabra module, el nombre del módulo y la propiedad extraída de la variable de salida.

Por último, algo súper importante, esto crea cierta secuencia, es decir, para poder crear la aplicación web es necesario tener la variable obtenida del plan así que esta herramienta no se creará hasta que el plan haya sido creado garantizando así que no vayas a tener un problema por no tener un plan y tratar de crear una web app en este escenario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *