Gestión de Salidas (Outputs) de Terraform

LinuxBeginner
Practicar Ahora

Introducción

En Terraform, los valores de salida (output values) son una forma de exponer datos significativos sobre tus recursos después de que han sido desplegados. Son como los valores de retorno de un módulo de Terraform y se pueden usar para consultar fácilmente información como la dirección IP de un servidor, una cadena de conexión de 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 ver los valores de salida. Comenzaremos con una configuración básica de Terraform que crea un archivo local y luego agregaremos un bloque output para exponer la ruta del archivo.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 95%. Ha recibido una tasa de reseñas positivas del 85% por parte de los estudiantes.

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 los bloques output en cualquier archivo .tf, es una convención común y una buena práctica colocarlos en un archivo separado llamado outputs.tf. Esto mantiene organizada tu configuración y facilita encontrar todas las salidas (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 precreado 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 la salida para el nombre de archivo de local_file

En este paso, definirás un bloque output en el archivo outputs.tf. Un bloque output 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 la salida, el cual usarás más tarde para consultar su valor.

Abramos el archivo outputs.tf con el editor nano y agreguemos nuestro primer bloque de salida.

nano outputs.tf

Ahora, añade el siguiente código al archivo. Nombraráremos nuestra salida como 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 el atributo del recurso en el bloque de salida

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

La sintaxis para referenciar un atributo de recurso es <TIPO_RECURSO>.<NOMBRE_RECURSO>.<ATRIBUTO>.

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 de nuevo 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 la salida 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. Cada vez que añadas, elimines o modifiques salidas (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 salidas.

Ejecuta el comando terraform apply en tu terminal.

terraform apply

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

Se te pedirá que confirmes 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 la salida file_path con su valor.

Ejecutar terraform output para ver el nombre del archivo

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

Para ver todas las salidas definidas en tu configuración, simplemente ejecuta el comando sin argumentos.

terraform output

Esto mostrará todas las salidas 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 una única información.

terraform output file_path

Este comando imprimirá solo el valor sin formato (raw value) de la salida especificada.

"./example.txt"

Esto facilita el uso de la salida en scripts de shell, por ejemplo, asignándola a una variable: FILE=$(terraform output -raw file_path). La bandera -raw elimina las comillas.

Resumen

¡Felicidades por completar el laboratorio!

En este laboratorio, has aprendido los fundamentos de la gestión de salidas (outputs) en Terraform. Has logrado con éxito:

  • 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 disponible la salida.
  • Consultar el valor de salida desde la línea de comandos usando terraform output.

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