Conceptos y configuración de Terraform

LinuxBeginner
Practicar Ahora

Introducción

Le damos la bienvenida al mundo de la Infraestructura como código (IaC).

Imagine que es el chef principal de un restaurante muy concurrido. Tradicionalmente, tendría que preparar cada plato a mano, paso a paso. En el mundo de TI, esto equivale a configurar manualmente los servidores uno por uno: es lento y propenso a errores.

En lugar de configurar la infraestructura manualmente mediante comandos repetidos o clics en las consolas en la nube, la IaC le permite describir la infraestructura en archivos que se pueden versionar, revisar y reutilizar.

Terraform es una de las herramientas de IaC más utilizadas. Es declarativa: usted describe el estado final deseado y Terraform determina cómo alcanzarlo.

Este modelo declarativo es una de las ideas fundamentales de Terraform. Usted describe qué infraestructura debe existir, no el script imperativo completo con cada paso de bajo nivel necesario para crearla.

En este laboratorio preparará su «cocina» y enseñará a su robot su primera habilidad. Aprenderá sobre los Providers, que son como las herramientas de cocina específicas que el robot necesita para acceder a distintos ingredientes, como AWS, Google Cloud o Docker.

Al finalizar este laboratorio, habrá instalado Terraform, creado su primer archivo de «receta» y preparado el entorno para empezar a construir.

Instalar Terraform

Necesitamos instalar el programa terraform. Piense en esto como descargar el cerebro del robot. Lo haremos manualmente para que pueda ver con claridad de dónde procede el programa y dónde se almacena.

Primero, compruebe en qué ubicación está trabajando actualmente. Debe encontrarse dentro de la carpeta del proyecto.

pwd

A continuación, descargue el paquete de Terraform desde Internet. Usaremos el comando wget para obtener una versión específica (1.14.3) y asegurarnos de que todo funcione correctamente en este laboratorio.

wget https://releases.hashicorp.com/terraform/1.14.3/terraform_1.14.3_linux_amd64.zip

El archivo descargado es un archivo comprimido «zip», como una maleta que contiene nuestra herramienta. Debe abrirlo con el comando unzip.

unzip terraform_1.14.3_linux_amd64.zip

Ahora tiene el programa terraform, pero todavía se encuentra en esta carpeta específica. Queremos poder ejecutarlo desde cualquier ubicación del sistema, igual que los comandos estándar ls o cd.

Para ello, muévalo a una carpeta especial del sistema llamada /usr/local/bin. Este directorio funciona como una caja de herramientas pública que el sistema siempre revisa cuando usted escribe un comando.

sudo mv terraform /usr/local/bin/

Por último, verifique la instalación comprobando la versión.

terraform -version

Debería ver una salida que indique Terraform v1.14.3.

Elimine el archivo zip descargado para mantener ordenado el espacio de trabajo:

rm terraform_1.14.3_linux_amd64.zip

Crear el plano

Terraform necesita un plano para saber qué debe construir. Estos planos se escriben en archivos de texto que terminan con la extensión .tf.

En este paso creará el archivo de configuración principal. Por convención, el archivo principal suele llamarse main.tf. Piense en él como la página principal de su libro de recetas.

Cree un archivo nuevo llamado main.tf en el directorio ~/project. Primero puede usar el comando touch para crear un archivo vacío.

touch main.tf

Compruebe que el archivo se haya creado:

ls -l main.tf

En este momento, el archivo está vacío. En el siguiente paso añadiremos contenido. Este archivo será el plano de su infraestructura.

Configurar un proveedor

Ahora que tenemos el archivo main.tf, debemos añadirle instrucciones.

Terraform es una herramienta de propósito general. De forma predeterminada, no sabe cómo comunicarse con Docker, AWS o Azure. Necesitamos introducir un Provider, que actúa como un traductor. Este enseña a Terraform el lenguaje específico de la plataforma que queremos administrar. En nuestro caso, queremos administrar contenedores de Docker, por lo que necesitamos el proveedor de Docker.

Esta separación entre el motor principal y los complementos de los proveedores permite que el mismo patrón de trabajo de Terraform administre muchos sistemas de infraestructura diferentes.

Abra main.tf con el editor de texto nano.

nano main.tf

Copie y pegue el código siguiente en el archivo. La primera parte, el bloque terraform, indica a Terraform exactamente qué complemento traductor debe descargar. La segunda parte, el bloque provider, activa ese complemento.

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0.1"
    }
  }
}

provider "docker" {}

Después de pegar el código, guarde los cambios y salga del editor. Presione Ctrl + O para escribir el archivo, pulse Enter para confirmar el nombre del archivo y, a continuación, presione Ctrl + X para salir.

Esta configuración indica a Terraform: «Tengo la intención de usar el proveedor de Docker, específicamente la versión 3.0.1 o una versión compatible».

Inicializar el proyecto

Ya tiene instalada la herramienta y ha escrito el plano, pero Terraform todavía no está completamente preparado. Terraform detectó en main.tf que necesita el traductor «Docker» (el complemento), pero aún no lo ha descargado.

Debe ejecutar el comando init. Piense en esto como «preparar el taller». Terraform leerá su plano, comprobará qué herramientas faltan y las descargará automáticamente en una carpeta oculta.

Por tanto, terraform init es un paso de preparación inicial del proyecto, no un paso que modifique la infraestructura. Prepara el directorio de trabajo para que los comandos posteriores puedan interpretar correctamente la configuración.

Ejecute el comando de inicialización:

terraform init

Debería ver una salida similar a esta:

Initializing the backend...

Initializing provider plugins...
- Finding kreuzwerker/docker versions matching "~> 3.0.1"...
- Installing kreuzwerker/docker v3.0.2...
- Installed kreuzwerker/docker v3.0.2 (self-signed, key ID 24E54F214539BC63)

Terraform has been successfully initialized!

Este comando creó un directorio oculto llamado .terraform en la carpeta del proyecto. Terraform utiliza este directorio para almacenar los complementos de proveedores descargados.

Puede comprobar que el directorio existe mostrando todos los archivos, incluidos los ocultos:

ls -a

Debería ver .terraform y .terraform.lock.hcl. El archivo de bloqueo garantiza que las ejecuciones futuras utilicen exactamente las mismas versiones de los proveedores, lo que mantiene la coherencia.

Resumen

¡Felicitaciones! Ha configurado correctamente su entorno de Terraform.

En este laboratorio aprendió:

  • Instalación: cómo colocar el binario de Terraform en la ruta del sistema (/usr/local/bin).
  • Configuración: cómo crear un archivo main.tf, que sirve como plano de su infraestructura.
  • Proveedores: «traductores» únicos que permiten a Terraform comunicarse con distintas plataformas, como Docker.
  • Inicialización: cómo usar terraform init para descargar los complementos necesarios antes de comenzar a trabajar.

Ahora está listo para empezar a definir recursos reales y construir infraestructura en el siguiente laboratorio.