Configuración del Entorno para Terraform: Guía Completa
Introducción
¿Nunca has usado Terraform ni sabes qué es IaC? No te preocupes. Terraform es una herramienta que te permite crear y gestionar recursos en la nube (como servidores, redes o bases de datos) usando archivos de texto. Esto se llama “Infraestructura como Código” (IaC), y hace que todo sea más fácil de repetir, modificar y compartir.
En esta guía, te explico desde cero cómo preparar tu ordenador para usar Terraform, aunque nunca hayas trabajado con la nube ni con programación.
Requisitos Básicos
1. Instalar Terraform CLI
Terraform CLI es el programa principal que necesitas para crear y gestionar recursos en la nube desde tu ordenador. Aquí tienes cómo instalarlo en Windows y Linux, y cómo comprobar que la instalación fue exitosa.
Windows (con Chocolatey):
choco install terraform
Linux (con apt):
sudo apt-get update && sudo apt-get install -y terraform
Verificar la instalación:
terraform version
2. Editor de Código
Para escribir y editar tus archivos de Terraform de forma cómoda, se recomienda usar Visual Studio Code junto con la extensión oficial de HashiCorp. Esto te dará ayudas visuales, autocompletado y validación de tu código.
- Instalar Visual Studio Code
- Instalar la extensión HashiCorp Terraform
Beneficios de la extensión:
- Syntax highlighting (colores para el código)
- IntelliSense (sugerencias automáticas)
- Validación de código (te avisa de errores)
- Formato automático
- Referencias y definiciones
3. Git
Git te permite llevar un control de los cambios en tu código y colaborar con otras personas. Es fundamental para cualquier proyecto de infraestructura como código.
# Windows (Chocolatey)
choco install git
# Linux
sudo apt-get install git
4. Credenciales del Proveedor Cloud
Para conectarte a Azure o AWS desde Terraform, necesitas instalar las herramientas de línea de comandos y configurar tus credenciales. Esto permite que Terraform se autentique y gestione recursos en la nube.
Azure
# Instalar Azure CLI
# Windows
winget install -e --id Microsoft.AzureCLI
# Linux
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# Iniciar sesión
az login
AWS
# Instalar AWS CLI
# Windows
msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi
# Linux
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
# Configurar credenciales
aws configure
Estructura de Proyecto Recomendada
Organizar tus archivos en carpetas te ayudará a mantener el proyecto limpio y escalable. Aquí tienes un ejemplo de cómo puedes estructurar un proyecto de Terraform, separando los módulos y las variables.
proyecto-terraform/
├── main.tf # Configuración principal
├── variables.tf # Definición de variables
├── outputs.tf # Outputs definidos
├── providers.tf # Configuración de proveedores
├── backend.tf # Configuración del backend
└── environments/
├── dev/
│ └── terraform.tfvars
├── staging/
│ └── terraform.tfvars
└── prod/
└── terraform.tfvars
Configuración del Backend
El backend es el lugar donde Terraform guarda el estado de tu infraestructura. Usar Azure Storage como backend permite que varios miembros del equipo compartan el mismo estado y evita conflictos.
# backend.tf
terraform {
backend "azurerm" {
resource_group_name = "tfstate-rg"
storage_account_name = "tfstateaccount"
container_name = "tfstate"
key = "prod.terraform.tfstate"
}
}
Extensiones VS Code Recomendadas
- HashiCorp Terraform
- Azure Terraform
- Terraform doc snippets
- YAML
- GitLens
Buenas Prácticas
- Control de Versiones
- Usar .gitignore para archivos sensibles
- Commit con mensajes descriptivos
- Una rama por feature/cambio
- Seguridad
- No versionar credenciales
- Usar variables de entorno
- Implementar least privilege
- Organización
- Módulos reutilizables
- Variables bien documentadas
- Outputs relevantes
- Testing
- Terraform plan antes de apply
- Validación de sintaxis
- Test automatizados
Configuración de Pre-commit Hooks
Los pre-commit hooks son herramientas que se ejecutan automáticamente antes de cada commit para validar tu código. Esto asegura que tu código Terraform esté bien formateado y sin errores antes de guardarlo en el repositorio.
# Instalar pre-commit
pip install pre-commit
# Crear .pre-commit-config.yaml
cat << EOF > .pre-commit-config.yaml
repos:
- repo: https://github.com/antonbabenko/pre-commit-terraform
rev: v1.76.0
hooks:
- id: terraform_fmt
- id: terraform_docs
- id: terraform_validate
EOF
# Inicializar pre-commit
pre-commit install
Próximos Pasos
- Crear tu primer proyecto Terraform
- Configurar un backend remoto
- Implementar control de versiones
- Desarrollar módulos reutilizables
- Integrar con CI/CD
Este entorno te permitirá desarrollar IaC de manera eficiente y siguiendo las mejores prácticas de la industria. En próximos artículos, profundizaremos en cada uno de estos aspectos.