Gestión de Outputs en Terraform

LinuxBeginner
Practicar Ahora

Introducción

En Terraform, los valores de salida (outputs) son una forma de exponer datos significativos sobre tus recursos una vez que han sido desplegados. Funcionan de manera similar a los valores de retorno de una función en programación y pueden utilizarse para consultar fácilmente información como la dirección IP de un servidor, una cadena de conexión a una base de datos o la ruta de un archivo. Esto hace que la información sea fácilmente accesible desde la línea de comandos y permite que otras configuraciones de Terraform la utilicen.

En este laboratorio, aprenderás a definir, aplicar y visualizar valores de salida. Comenzaremos con una configuración básica de Terraform que crea un archivo local y luego añadiremos un bloque de salida para exponer la ruta de dicho archivo.

Crear el archivo outputs.tf para las definiciones de salida

En este paso, crearemos un archivo dedicado para nuestras definiciones de salida. Aunque puedes colocar bloques de salida en cualquier archivo .tf, es una convención común y una buena práctica ubicarlos en un archivo separado llamado outputs.tf. Esto mantiene tu configuración organizada y facilita la localización de todos los outputs de tu proyecto.

Todo tu trabajo se realizará en el directorio ~/project, que es el directorio predeterminado en tu terminal.

Primero, verifiquemos el archivo main.tf que ha sido preconfigurado para ti.

ls -l

Deberías ver el archivo main.tf y un directorio .terraform.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf

Ahora, crea el archivo outputs.tf usando el comando touch.

touch outputs.tf

Este comando crea un archivo vacío llamado outputs.tf en el directorio actual. Puedes verificar su creación listando los archivos nuevamente.

ls -l

Ahora verás outputs.tf en la lista de archivos.

total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
-rw-rw-r-- 1 labex labex   0 Oct 15 12:39 outputs.tf

Definir un output para el nombre de archivo de local_file

En este paso, definirás un bloque de salida en el archivo outputs.tf. Un bloque de salida declara un único valor de salida para tu configuración de Terraform.

La sintaxis básica para un bloque de salida es:

output "NAME" {
  ## Los argumentos van aquí
}

Aquí, NAME es una cadena que proporciona un nombre para el output, el cual utilizarás más adelante para consultar su valor.

Abramos el archivo outputs.tf con el editor nano y añadamos nuestro primer bloque de salida.

nano outputs.tf

Ahora, añade el siguiente código al archivo. Llamaremos a nuestro output file_path.

output "file_path" {

}

Después de añadir el código, guarda el archivo y sal de nano presionando Ctrl+X, luego Y, y finalmente Enter.

Este bloque aún no hace mucho, ya que le falta el argumento value. Lo añadiremos en el siguiente paso.

Referenciar un atributo de recurso en el bloque de salida

En este paso, haremos que nuestro output sea útil indicándole qué valor debe mostrar. Esto se hace mediante el argumento value dentro del bloque de salida. El valor es, por lo general, una referencia a un atributo de un recurso definido en tu configuración.

La sintaxis para referenciar un atributo de recurso es <RESOURCE_TYPE>.<RESOURCE_NAME>.<ATTRIBUTE>.

En nuestro archivo main.tf, tenemos un recurso definido como:

resource "local_file" "example" {
  ## ...
}

El recurso local_file tiene un atributo llamado filename, que contiene la ruta al archivo que gestiona. Para referenciar este atributo, usamos local_file.example.filename.

Añadamos esta referencia a nuestro bloque de salida. Abre outputs.tf nuevamente con nano.

nano outputs.tf

Modifica el archivo para incluir el argumento value como se muestra a continuación:

output "file_path" {
  value = local_file.example.filename
}

Esto le indica a Terraform que el output file_path debe tener el valor del atributo filename del recurso local_file llamado example.

Guarda el archivo y sal de nano presionando Ctrl+X, Y, y Enter.

Ejecutar terraform apply para actualizar la configuración

En este paso, aplicarás los cambios de configuración. Siempre que añadas, elimines o modifiques outputs, debes ejecutar terraform apply para que Terraform reconozca los cambios y actualice el archivo de estado (state file). El archivo de estado es donde Terraform almacena los valores de tus outputs.

Ejecuta el comando terraform apply en tu terminal.

terraform apply

Terraform primero te mostrará un plan de ejecución. Detectará que has añadido un output y planificará su creación. Dado que el recurso local_file aún no existe, también planificará su creación.

Se te pedirá confirmar la acción. Escribe yes y presiona Enter.

Terraform used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  ## local_file.example will be created
  + resource "local_file" "example" {
      + content              = "This is an example file managed by Terraform."
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "./example.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Changes to Outputs:
  + file_path = "./example.txt"

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

local_file.example: Creating...
local_file.example: Creation complete after 0s [id=ec3adcab998872def2df6200fb03992ac6f237a4]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

file_path = "./example.txt"

Como puedes ver en la salida, la aplicación fue exitosa y Terraform ahora muestra el output file_path con su valor.

Ejecutar terraform output para visualizar el nombre del archivo

En este paso, utilizarás el comando terraform output para ver los valores de salida desde tu archivo de estado. Esto es útil para recuperar información sobre tu infraestructura sin tener que analizar el archivo de estado manualmente o volver a ejecutar terraform apply.

Para ver todos los outputs definidos en tu configuración, simplemente ejecuta el comando sin argumentos.

terraform output

Esto mostrará todos los outputs en un formato legible para humanos.

file_path = "./example.txt"

También puedes consultar un valor de salida específico proporcionando su nombre como argumento. Esto es útil en scripts o cuando solo necesitas un dato en particular.

terraform output file_path

Este comando imprimirá solo el valor bruto del output especificado.

"./example.txt"

Esto facilita el uso del output en scripts de shell, por ejemplo, asignándolo a una variable: FILE=$(terraform output -raw file_path). El flag -raw elimina las comillas.

Resumen

¡Felicidades por completar el laboratorio!

En este laboratorio, has aprendido los fundamentos de la gestión de outputs en Terraform. Has logrado:

  • Organizar tu configuración creando un archivo dedicado outputs.tf.
  • Definir un bloque output para declarar un valor de salida.
  • Referenciar un atributo de recurso dentro de un bloque de salida para exponer su valor.
  • Aplicar la configuración usando terraform apply para hacer que el output esté disponible.
  • Consultar el valor de salida desde la línea de comandos usando terraform output.

Los outputs de Terraform son una característica poderosa para extraer información importante de tu infraestructura e integrar tus flujos de trabajo de Terraform con otras herramientas y scripts.