Inicialización de Proyectos Terraform

LinuxBeginner
Practicar Ahora

Introducción

Terraform es una popular herramienta de Infraestructura como Código (IaC) de código abierto creada por HashiCorp. Permite definir y aprovisionar recursos de infraestructura utilizando un lenguaje de configuración declarativo.

El primer comando que ejecutarás en cualquier proyecto nuevo de Terraform es terraform init. Este comando es crucial ya que prepara tu directorio de trabajo para su uso con Terraform. Realiza varias acciones clave:

  • Inicialización del Backend: Configura el backend de almacenamiento del estado (state storage backend).
  • Instalación de Plugins de Proveedor (Provider Plugin Installation): Escanea tus archivos de configuración, determina qué proveedores se necesitan y los descarga del Terraform Registry.
  • Instalación de Módulos (Module Installation): Descarga cualquier módulo referenciado en tu configuración.

En este laboratorio, aprenderás el proceso fundamental de inicializar un nuevo proyecto de Terraform. Crearás un directorio de proyecto, definirás un archivo de configuración simple y usarás terraform init para descargar el plugin de proveedor requerido.

Crear un nuevo directorio para el proyecto Terraform

En este paso, crearás un directorio dedicado para tu nuevo proyecto de Terraform. Es una buena práctica mantener cada proyecto de Terraform en su propio directorio para evitar conflictos y mantener las configuraciones organizadas. Todas tus operaciones se realizarán dentro del directorio ~/project.

Primero, crea un nuevo directorio llamado terraform-init-lab.

mkdir terraform-init-lab

A continuación, navega hacia el directorio recién creado. Este será tu directorio de trabajo para el resto del laboratorio.

cd terraform-init-lab

Tu prompt de terminal ahora debería indicar que te encuentras dentro del directorio ~/project/terraform-init-lab.

Crear el archivo main.tf en el directorio del proyecto

En este paso, crearás el archivo de configuración principal para tu proyecto. Los archivos de configuración de Terraform utilizan la extensión .tf y están escritos en el Lenguaje de Configuración de HashiCorp (HCL). Por convención, el archivo de configuración principal a menudo se denomina main.tf.

Desde dentro de tu directorio terraform-init-lab, crea un archivo vacío llamado main.tf usando el comando touch.

touch main.tf

Puedes verificar que el archivo ha sido creado listando el contenido del directorio.

ls

Deberías ver el archivo main.tf en la salida.

main.tf

Definir la configuración del proveedor local en main.tf

En este paso, añadirás código de configuración a tu archivo main.tf. Este código le indicará a Terraform qué proveedor necesita descargar y utilizar. Un proveedor es un plugin que permite a Terraform interactuar con una API específica, como un proveedor de nube (cloud provider) o un servicio SaaS.

Para este laboratorio, utilizaremos el proveedor local, que te permite gestionar archivos locales. Es un excelente proveedor para aprender, ya que no requiere credenciales de nube.

Abre el archivo main.tf usando el editor de texto nano.

nano main.tf

Ahora, copia y pega el siguiente bloque de código en el editor nano. Este bloque terraform especifica los proveedores requeridos para el proyecto.

terraform {
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "2.4.0"
    }
  }
}

Esta configuración le indica a Terraform:

  • required_providers: Estamos declarando los proveedores que este proyecto necesita.
  • local: El nombre local que le estamos dando al proveedor.
  • source: La dirección global del proveedor en el Terraform Registry, que es hashicorp/local.
  • version: La versión específica del proveedor a utilizar.

Después de pegar el código, guarda el archivo y sal de nano presionando Ctrl+O, luego Enter, y finalmente Ctrl+X.

Ejecutar terraform init para inicializar el proyecto

En este paso, ejecutarás el comando terraform init. Con la configuración del proveedor establecida, Terraform ahora sabe lo que necesita hacer para inicializar el proyecto. Leerá el archivo main.tf, encontrará el bloque required_providers y descargará la versión especificada del proveedor hashicorp/local desde el Terraform Registry.

Asegúrate de que todavía te encuentras en el directorio terraform-init-lab y luego ejecuta el comando de inicialización.

terraform init

Verás una salida que indica que Terraform está inicializando el backend y los plugins del proveedor. Una inicialización exitosa terminará con un mensaje de éxito.

Initializing the backend...

Initializing provider plugins...
- Finding hashicorp/local versions matching "2.4.0"...
- Installing hashicorp/local v2.4.0...
- Installed hashicorp/local v2.4.0 (signed by HashiCorp)

Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Comprobar el directorio .terraform en busca de plugins descargados

En este paso, verificarás que terraform init ha descargado con éxito el plugin del proveedor. El comando crea un directorio oculto llamado .terraform en tu carpeta de proyecto para almacenar estos plugins y otros datos de inicialización.

Primero, lista todos los archivos y directorios, incluidos los ocultos, para ver los nuevos artefactos creados por el comando init.

ls -a

Deberías ver el directorio .terraform y un archivo .terraform.lock.hcl en la salida. El archivo de bloqueo (lock file) registra las versiones del proveedor seleccionadas durante la inicialización.

.  ..  main.tf  .terraform  .terraform.lock.hcl

Ahora, inspeccionemos el contenido del directorio .terraform para ver el proveedor descargado. Puedes usar el comando tree para una vista jerárquica clara.

tree .terraform

La salida mostrará la estructura de directorios donde se almacena el plugin del proveedor. Podrás ver el archivo ejecutable para el proveedor local descargado del registry.

.terraform
└── providers
    └── registry.terraform.io
        └── hashicorp
            └── local
                └── 2.4.0
                    └── linux_amd64
                        └── terraform-provider-local_v2.4.0_x5

6 directories, 1 file

Esto confirma que terraform init ha configurado con éxito tu proyecto con el proveedor necesario.

Resumen

¡Felicidades! Has completado con éxito este laboratorio sobre la inicialización de proyectos de Terraform.

En este laboratorio, aprendiste los pasos iniciales esenciales para comenzar un nuevo proyecto de Terraform. Has practicado:

  • Crear un directorio dedicado para un proyecto de Terraform.
  • Definir los proveedores requeridos en un archivo de configuración main.tf.
  • Ejecutar el comando terraform init para preparar el proyecto.
  • Verificar que los plugins del proveedor se descargaron en el directorio .terraform.

Con tu proyecto inicializado, ahora estás listo para pasar a los siguientes pasos en el flujo de trabajo de Terraform, como escribir definiciones de recursos y usar terraform plan y terraform apply para gestionar tu infraestructura.