Creación de Recursos Básicos con Terraform

LinuxBeginner
Practicar Ahora

Introducción

Terraform es una herramienta de Infraestructura como Código (IaC) de código abierto creada por HashiCorp. Permite definir y aprovisionar infraestructura de centro de datos utilizando un lenguaje de configuración declarativo. Esto significa que usted describe la infraestructura deseada en archivos de configuración, y Terraform se encargará de determinar cómo crear, actualizar o eliminar los recursos para que coincidan con ese estado.

El flujo de trabajo central de Terraform consta de tres etapas principales:

  1. Escribir (Write): Autorizar la infraestructura como código.
  2. Planificar (Plan): Previsualizar los cambios antes de aplicarlos.
  3. Aplicar (Apply): Aprovisionar y gestionar su infraestructura.

En este laboratorio, recorrerá todo este flujo de trabajo creando un recurso muy simple: un archivo local. Usar el proveedor local es una excelente manera de aprender la mecánica de Terraform sin necesidad de credenciales para un proveedor de nube. Definirá un archivo, planificará su creación, aplicará los cambios y verificará el resultado.

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 98%. Ha recibido una tasa de reseñas positivas del 97% por parte de los estudiantes.

Definir un recurso local_file en main.tf

En este paso, comenzará definiendo un recurso en su archivo de configuración de Terraform. Todas las configuraciones de Terraform se escriben en archivos que terminan con la extensión .tf. El archivo de configuración principal se denomina comúnmente main.tf.

Un bloque resource es la sintaxis principal para declarar un objeto de infraestructura. Define un recurso de un tipo dado (ej. local_file) con un nombre local dado (ej. example). La combinación del tipo y el nombre debe ser única dentro de un módulo.

Primero, abra el archivo main.tf en su directorio ~/project usando el editor de texto nano.

nano main.tf

Ahora, añada el siguiente código al archivo. Esto define un recurso de tipo local_file y le asigna el nombre local example. Por ahora, el bloque de recurso está vacío.

resource "local_file" "example" {
}

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

Especificar nombre de archivo y contenido en el bloque de recursos

En este paso, añadirá argumentos al bloque de recurso para especificar las propiedades del archivo que desea crear. Los argumentos son los pares clave-valor dentro de un bloque de recurso que definen su configuración. Para un recurso local_file, los dos argumentos más importantes son filename y content.

  • filename: La ruta al archivo que se creará.
  • content: El contenido que se escribirá en el archivo.

Abra el archivo main.tf de nuevo con nano.

nano main.tf

Modifique el bloque de recurso local_file para incluir los argumentos filename y content como se muestra a continuación.

resource "local_file" "example" {
  content  = "Hello, Terraform!"
  filename = "${path.module}/hello.txt"
}

Aquí, le estamos indicando a Terraform que cree un archivo llamado hello.txt en el directorio del proyecto actual. ${path.module} es una expresión especial de Terraform que se resuelve a la ruta del módulo actual, que en este caso es ~/project. El contenido del archivo será la cadena "Hello, Terraform!".

Guarde el archivo y salga de nano presionando Ctrl+X, Y, y Enter.

Inicializar Terraform y Previsualizar Cambios

En este paso, primero inicializará su proyecto de Terraform y luego ejecutará el comando terraform plan para crear un plan de ejecución.

Antes de poder planificar cualquier cambio, debe inicializar el proyecto. El comando terraform init escanea su configuración, descarga los providers (proveedores) requeridos (en este caso, para local_file) y configura el backend.

En su terminal, primero ejecute terraform init:

terraform init

Una vez que la inicialización sea exitosa, ejecute terraform plan. Este comando es una parte crucial del flujo de trabajo de Terraform ya que proporciona una "ejecución de prueba" (dry run) de los cambios. Le muestra lo que Terraform hará con su infraestructura sin realizar realmente ningún cambio. Esto le permite revisar y verificar las acciones previstas antes de que se apliquen.

terraform plan

Terraform leerá su archivo de configuración y lo comparará con el estado actual de su infraestructura (que actualmente está vacía). Luego mostrará un plan de acción. Debería ver una salida similar a la siguiente, indicando que se va a crear un recurso.

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              = "Hello, 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             = "./hello.txt"
      + id                   = (known after apply)
    }

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

El símbolo + junto a resource "local_file" "example" significa que este recurso será creado. La salida detalla todos los atributos que se establecerán en el nuevo archivo.

Ejecutar terraform apply para crear el recurso

En este paso, aplicará los cambios utilizando el comando terraform apply para crear realmente el archivo. Este comando ejecuta las acciones propuestas en la salida de terraform plan.

Por defecto, terraform apply le mostrará el plan nuevamente y solicitará confirmación interactiva antes de continuar. Para hacerlo no interactivo, lo cual es útil para laboratorios y automatización, puede usar la bandera -auto-approve.

Ejecute el siguiente comando en su terminal:

terraform apply -auto-approve

Terraform ejecutará ahora el plan. La salida primero mostrará el plan de nuevo, seguido del progreso de la aplicación. Una vez completado, verá un mensaje de confirmación.

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              = "Hello, 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             = "./hello.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.
local_file.example: Creating...
local_file.example: Creation complete after 0s [id=42086c02e03bf671ddf621ed9922f52f2c7a605c]

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

El mensaje "Apply complete!" confirma que Terraform ha creado exitosamente el recurso según lo definido en su configuración.

Verificar que el archivo creado existe en el sistema de archivos

En este paso final, verificará que Terraform ha creado exitosamente el archivo en su sistema de archivos local según lo especificado. Dado que utilizó el recurso local_file, el resultado es un archivo tangible en su directorio de proyecto.

Primero, use el comando ls para listar los archivos en el directorio actual. Ahora debería ver hello.txt junto a su archivo de configuración de Terraform.

ls

Salida esperada:

hello.txt  main.tf  terraform.tfstate

A continuación, use el comando cat para mostrar el contenido del archivo hello.txt recién creado.

cat hello.txt

Debería ver el contenido que definió en main.tf.

Hello, Terraform!

Esto confirma que su configuración de Terraform se aplicó con éxito y que el recurso se creó exactamente como lo definió en su código.

Resumen

¡Felicidades! Ha completado con éxito su primer proyecto de Terraform.

En este laboratorio, aprendió el flujo de trabajo fundamental de Terraform:

  1. Escribir (Write): Definió un recurso local_file en un archivo de configuración main.tf.
  2. Planificar (Plan): Utilizó terraform plan para previsualizar la creación del archivo sin realizar ningún cambio.
  3. Aplicar (Apply): Utilizó terraform apply para ejecutar el plan y crear el archivo en su sistema de archivos local.

Este simple ejemplo de creación de un archivo local demuestra el poder central de la Infraestructura como Código (Infrastructure as Code). Declaró el estado deseado de un recurso en un archivo de configuración, y Terraform manejó la lógica para alcanzar ese estado. Los mismos principios se aplican al gestionar infraestructura más compleja, como máquinas virtuales, redes y bases de datos en la nube.