La automatización de infraestructura es una necesidad crucial en el desarrollo y operaciones modernas. Terraform, una herramienta de infraestructura como código (IaC) de HashiCorp, permite a los desarrolladores y administradores de sistemas definir y aprovisionar recursos de infraestructura en varios proveedores de servicios en la nube de manera eficiente y reproducible. En este tutorial básico, aprenderemos cómo empezar con Terraform, desde la instalación hasta la configuración de un recurso simple en AWS.
1. ¿Qué es Terraform?
Terraform es una herramienta de código abierto que permite a los usuarios definir y aprovisionar infraestructura utilizando un lenguaje declarativo llamado HashiCorp Configuration Language (HCL). La principal ventaja de Terraform es que es independiente del proveedor de servicios en la nube, lo que significa que puede gestionar recursos en AWS, Azure, Google Cloud y otros.
2. Instalación de Terraform
Antes de empezar, necesitamos instalar Terraform en nuestra máquina local. Los pasos para la instalación pueden variar según el sistema operativo:
En Linux:
sudo apt-get update
sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update
sudo apt-get install terraform
En macOS:
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
En Windows:
Descarga el archivo binario desde la página de releases de Terraform y sigue las instrucciones de instalación.
3. Configuración de AWS CLI
Para interactuar con AWS, necesitamos configurar AWS CLI con nuestras credenciales. Si aún no tienes AWS CLI instalado, puedes hacerlo siguiendo estos pasos:
En Linux y macOS:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
En Windows:
Descarga el instalador de AWS CLI desde la página oficial y sigue las instrucciones de instalación.
Una vez instalado, configura AWS CLI:
aws configure
Introduce tu Access Key ID, Secret Access Key, región por defecto (por ejemplo, us-west-2
), y el formato de salida (por ejemplo, json
).
4. Creación de un Proyecto de Terraform
Crea un directorio para tu proyecto de Terraform:
mkdir my-terraform-project
cd my-terraform-project
5. Escribiendo el Archivo de Configuración de Terraform
Crea un archivo llamado main.tf
en tu directorio de proyecto. Este archivo definirá los recursos que queremos crear en AWS. Vamos a empezar con un recurso simple: una instancia EC2.
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI ID en us-west-2
instance_type = "t2.micro"
tags = {
Name = "TerraformExample"
}
}
6. Inicialización del Proyecto de Terraform
Antes de aplicar cualquier cambio, necesitamos inicializar el proyecto de Terraform. Esto descargará los proveedores necesarios y preparará el directorio de trabajo.
terraform init
Salida esperada:
Initializing the backend...
Initializing provider plugins...
- Finding hashicorp/aws versions matching ">= 2.7.0"...
- Installing hashicorp/aws v3.63.0...
- Installed hashicorp/aws v3.63.0 (signed by HashiCorp)
Terraform has been successfully initialized!
7. Planificación y Aplicación de los Cambios
El siguiente paso es crear un plan de ejecución. Terraform mostrará qué recursos serán creados, modificados o eliminados.
terraform plan
Salida esperada (resumen):
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
Para aplicar los cambios, ejecuta:
terraform apply
Terraform te pedirá confirmar antes de proceder. Escribe yes
para continuar. Salida esperada (resumen):
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed]
aws_instance.example: Creation complete after 17s [id=i-0abcdef1234567890]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
8. Verificación del Recurso
Una vez que Terraform haya creado la instancia, puedes verificar su existencia en la consola de AWS EC2 o utilizando el siguiente comando de AWS CLI:
aws ec2 describe-instances --filters "Name=tag:Name,Values=TerraformExample"
Salida esperada (resumen):
{
"Reservations": [
{
"Instances": [
{
"InstanceId": "i-0abcdef1234567890",
"InstanceType": "t2.micro",
"State": {
"Name": "running"
},
"Tags": [
{
"Key": "Name",
"Value": "TerraformExample"
}
]
}
]
}
]
}
9. Limpieza
Para eliminar los recursos creados, usa el comando terraform destroy
:
terraform destroy
Terraform te pedirá confirmar antes de proceder. Escribe yes
para continuar. Salida esperada (resumen):
aws_instance.example: Destroying... [id=i-0abcdef1234567890]
aws_instance.example: Still destroying... [10s elapsed]
aws_instance.example: Destruction complete after 17s
Destroy complete! Resources: 1 destroyed.
Conclusión
En este tutorial, hemos cubierto los pasos básicos para instalar y configurar Terraform, crear un proyecto, definir y desplegar una instancia EC2 en AWS. Terraform es una herramienta poderosa que permite la gestión y automatización de infraestructura de manera eficiente y reproducible. A medida que te sientas más cómodo con los conceptos básicos, puedes explorar configuraciones más avanzadas y la integración con otros servicios y proveedores de la nube.