Introducción
Terraform es una popular herramienta de código abierto de Infraestructura como Código (IaC, por sus siglas en inglés) creada por HashiCorp. Permite definir y aprovisionar recursos de infraestructura mediante un lenguaje de configuración declarativo.
El primer comando que ejecutarás en cualquier proyecto nuevo de Terraform es terraform init. Este comando es fundamental, ya que prepara tu directorio de trabajo para ser utilizado con Terraform. Realiza varias acciones clave:
- Inicialización del backend: Configura el backend para el almacenamiento del estado (state).
- Instalación de plugins de proveedores: Escanea tus archivos de configuración, determina qué proveedores son necesarios y los descarga desde el Registro de Terraform (Terraform Registry).
- Instalación de módulos: Descarga cualquier módulo referenciado en tu configuración.
En este laboratorio, aprenderás el proceso fundamental para inicializar un nuevo proyecto de Terraform. Crearás un directorio de proyecto, definirás un archivo de configuración simple y utilizarás terraform init para descargar el plugin del proveedor requerido.
Crear un nuevo directorio para el proyecto de 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 al directorio recién creado. Este será tu directorio de trabajo durante el resto del laboratorio.
cd terraform-init-lab
Tu terminal debería indicar ahora 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 suele llamarse main.tf.
Desde tu directorio terraform-init-lab, crea un archivo vacío llamado main.tf utilizando el comando touch.
touch main.tf
Puedes verificar que el archivo se ha 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 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 ninguna credencial de nube.
Abre el archivo main.tf utilizando 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 lo siguiente:
required_providers: Estamos declarando los proveedores que este proyecto necesita.local: El nombre local que le damos al proveedor.source: La dirección global del proveedor en el Registro de Terraform, que eshashicorp/local.version: La versión específica del proveedor que se debe 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 debe 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 Registro de Terraform.
Asegúrate de seguir estando 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 de los proveedores. 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 para ver los plugins descargados
En este paso, verificarás que terraform init ha descargado correctamente el plugin del proveedor. El comando crea un directorio oculto llamado .terraform en la carpeta de tu 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 de los proveedores seleccionadas durante la inicialización.
. .. main.tf .terraform .terraform.lock.hcl
Ahora, inspeccionemos el contenido del directorio .terraform para ver el proveedor descargado. Puedes utilizar el comando tree para obtener una vista jerárquica clara.
tree .terraform
La salida mostrará la estructura de directorios donde se almacena el plugin del proveedor. Puedes ver el archivo ejecutable del proveedor local descargado desde el registro.
.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 correctamente 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 primeros pasos 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 initpara preparar el proyecto. - Verificar que los plugins de los proveedores se descargaron en el directorio
.terraform.
Con tu proyecto inicializado, ahora estás listo para avanzar a los siguientes pasos en el flujo de trabajo de Terraform, como escribir definiciones de recursos y utilizar terraform plan y terraform apply para gestionar tu infraestructura.



