Cómo Configurar un Servidor AWS EC2 Usando Terraform en Mac [Guía Paso a Paso]
Introducción: La Forma Más Inteligente de Lanzar Servidores AWS desde Mac
Si alguna vez has creado una instancia EC2 manualmente a través de la Consola de AWS, ya sabes lo fácil que es cometer errores — seleccionar la región incorrecta, olvidar configurar los grupos de seguridad o no configurar la clave SSH.
Ahora imagina lanzar tu infraestructura completa en la nube automáticamente con un solo comando. Ahí es donde entra Terraform.
Terraform es una poderosa herramienta de Infraestructura como Código (IaC) que te permite definir, versionar y automatizar despliegues en la nube en AWS, Azure, Google Cloud y más. Para desarrolladores que trabajan en Mac, ofrece una forma limpia, eficiente y repetible de gestionar servidores — sin tocar el panel de AWS.
En esta guía, aprenderás exactamente cómo:
- Configurar Terraform en tu Mac
- Conectarlo con credenciales de AWS
- Escribir un archivo de configuración Terraform para lanzar una instancia EC2
- Aplicar, verificar y gestionar tu despliegue con confianza
Al final, tendrás un servidor AWS EC2 completamente funcional desplegado con Terraform — reproducible en cualquier momento y lugar.
Paso 1: Lo Que Necesitas Antes de Empezar
Antes de comenzar, asegúrate de tener los siguientes requisitos previos:
🧰 Requisitos del Sistema
- macOS 12+
- Homebrew (para instalación fácil de paquetes)
- Una cuenta de AWS con claves de acceso
- Conocimientos básicos de AWS EC2
☁️ Configuración de la Cuenta AWS
-
Inicia sesión en tu Consola de AWS.
-
Ve a IAM → Users → Security Credentials.
-
Genera un Access Key ID y Secret Access Key.
- Guárdalos de forma segura — Terraform los necesita para autenticarse con AWS.
Paso 2: Instalar Terraform en Mac
La forma más fácil de instalar Terraform en macOS es a través de Homebrew.
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
Verifica la instalación:
terraform -version
✅ Ejemplo de salida:
Terraform v1.9.0
on darwin_amd64
¡Eso es todo! Terraform ahora está instalado globalmente en tu sistema.
Paso 3: Configurar AWS CLI
Terraform se comunica con AWS a través de AWS CLI. Vamos a instalarlo y configurarlo.
brew install awscli
Una vez instalado, configúralo con tus credenciales:
aws configure
Ingresa:
AWS Access Key ID: <your-access-key>
AWS Secret Access Key: <your-secret-key>
Default region name: us-east-1
Default output format: json
Esto crea un archivo de configuración en ~/.aws/credentials, que Terraform usará para la autenticación.
Paso 4: Configurar un Nuevo Proyecto Terraform
Ahora crearemos un directorio de proyecto para tus archivos Terraform.
mkdir terraform-ec2-setup
cd terraform-ec2-setup
Dentro de esta carpeta, crea un nuevo archivo llamado main.tf:
touch main.tf
Aquí es donde irán todas tus configuraciones de Terraform.
Paso 5: Escribir tu Archivo de Configuración Terraform
Definamos todo lo que Terraform necesita para crear una instancia EC2 — proveedor, región, AMI, tipo de instancia y grupos de seguridad.
Abre main.tf y agrega el siguiente código:
# Especificar AWS como proveedor
provider "aws" {
region = "us-east-1"
}
# Crear un par de claves
resource "aws_key_pair" "mac_key" {
key_name = "mac-terraform-key"
public_key = file("~/.ssh/id_rsa.pub")
}
# Crear un grupo de seguridad
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh"
description = "Allow SSH inbound traffic"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
# Crear una instancia EC2
resource "aws_instance" "my_ec2" {
ami = "ami-0c02fb55956c7d316"
instance_type = "t2.micro"
key_name = aws_key_pair.mac_key.key_name
security_groups = [aws_security_group.allow_ssh.name]
tags = {
Name = "Terraform-Mac-Instance"
}
}
Paso 6: Inicializar Terraform
Antes de aplicar cualquier configuración, inicializa Terraform. Esto descarga todos los plugins de proveedores necesarios.
terraform init
✅ Salida esperada:
Initializing the backend...
Initializing provider plugins...
Terraform has been successfully initialized!
Paso 7: Validar la Configuración
Siempre valida tus archivos .tf antes de aplicar cambios.
terraform validate
Si todo es correcto, verás:
Success! The configuration is valid.
Paso 8: Previsualizar el Plan de Infraestructura
Ahora, veamos qué creará Terraform — sin hacer cambios reales todavía.
terraform plan
Terraform mostrará un plan detallado de los recursos a crear:
+ aws_instance.my_ec2
+ aws_security_group.allow_ssh
+ aws_key_pair.mac_key
Esta es tu oportunidad de confirmar la configuración antes del despliegue.
Paso 9: Aplicar y Crear la Instancia EC2
Una vez que estés listo, despliega la instancia:
terraform apply
Escribe yes cuando se te solicite.
Terraform:
- Creará un par de claves
- Configurará un grupo de seguridad
- Desplegará una instancia EC2
✅ Salida esperada:
Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
Outputs:
instance_public_ip = "54.210.19.33"
Ahora puedes conectarte por SSH a tu nueva instancia:
ssh [email protected]
Paso 10: Verificar en la Consola de AWS
Abre tu Consola de Administración de AWS → EC2 Dashboard, y verás tu nueva instancia ejecutándose bajo:
Name: Terraform-Mac-Instance
Esto confirma que Terraform ha desplegado exitosamente tu infraestructura.
Paso 11: Limpiar Recursos (Opcional)
Cuando termines de probar, siempre destruye la infraestructura para evitar costos innecesarios de AWS.
terraform destroy
Escribe yes para confirmar.
Paso 12: Entendiendo el Flujo de Trabajo de Terraform
Aquí hay un resumen rápido de los comandos del ciclo de vida de Terraform que usarás frecuentemente:
| Comando | Descripción |
|---|---|
terraform init |
Inicializa el proyecto e instala plugins de proveedores |
terraform validate |
Verifica la sintaxis de la configuración |
terraform plan |
Previsualiza los cambios propuestos de infraestructura |
terraform apply |
Aplica y despliega los cambios en AWS |
terraform destroy |
Elimina los recursos creados |
Paso 13: Problemas Comunes y Soluciones
❌ Error: Credenciales de AWS Inválidas
Verifica tu archivo ~/.aws/credentials o vuelve a ejecutar aws configure.
❌ Permission Denied (publickey)
Asegúrate de que tu clave SSH esté agregada correctamente en el recurso de par de claves de Terraform y en el directorio ~/.ssh de tu Mac.
❌ Security Group Not Found
Terraform crea dependencias automáticamente, pero si modificas nombres de recursos, vuelve a ejecutar terraform init.
❌ Conflictos de Archivo de Estado
Nunca edites manualmente terraform.tfstate. Usa backends remotos como S3 para entornos de equipo.
Paso 14: Mejores Prácticas para Terraform + AWS en Mac
✅ Usar Almacenamiento Remoto de Estado
Almacena el estado de Terraform en AWS S3 con bloqueo DynamoDB para evitar conflictos:
terraform {
backend "s3" {
bucket = "terraform-state-bucket"
key = "ec2/terraform.tfstate"
region = "us-east-1"
}
}
✅ Control de Versiones
Agrega .terraform/ a tu .gitignore y almacena los archivos .tf en Git para colaboración.
✅ Modularizar Infraestructura
Usa módulos de Terraform para configuraciones reutilizables — como vpc, ec2 y security_groups.
✅ Etiquetar Todo
Siempre etiqueta los recursos de AWS para facilitar la gestión, facturación y auditoría.
Paso 15: Automatizando la Configuración EC2 con Variables
Crea un archivo variables.tf para hacer las configuraciones reutilizables:
variable "instance_type" {
default = "t2.micro"
}
variable "region" {
default = "us-east-1"
}
Luego actualiza main.tf:
provider "aws" {
region = var.region
}
resource "aws_instance" "my_ec2" {
ami = "ami-0c02fb55956c7d316"
instance_type = var.instance_type
}
Ejecuta:
terraform plan
terraform apply
Esto hace que tu despliegue sea flexible e independiente del entorno.
Paso 16: Bonus – Automatizar con GitHub Actions (CI/CD)
Para usuarios avanzados, automatiza los despliegues de Terraform directamente desde GitHub.
Crea .github/workflows/deploy.yml:
name: Terraform AWS Deploy
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
- name: Terraform Init
run: terraform init
- name: Terraform Apply
run: terraform apply -auto-approve
Este pipeline ejecuta Terraform automáticamente cada vez que haces push a main — perfecto para automatización en equipo.
Puntos Clave
- 💻 Terraform te permite automatizar la configuración de AWS EC2 desde tu Mac con código limpio y reutilizable.
- 🔐 Usa claves de acceso IAM para autenticación — nunca codifiques credenciales directamente.
- 🧠 Valida y previsualiza los planes antes de aplicar.
- 🧩 Modulariza tu configuración de Terraform para escalabilidad.
- ☁️ Limpia los recursos no utilizados para controlar los costos de AWS.
Llamada a la Acción
¿Listo para llevar tu automatización de AWS al siguiente nivel? Dominar Terraform en Mac es solo el comienzo — desde aquí, puedes expandirte a gestionar despliegues multi-entorno, buckets S3, VPCs e incluso clústeres de Kubernetes — todo a través de código.
👉 Comienza ahora configurando tu primera instancia EC2 gestionada con Terraform, y experimenta lo fácil que puede ser la automatización en la nube.
Preguntas Frecuentes
P: ¿Para qué se usa Terraform?
Terraform automatiza el despliegue de infraestructura en plataformas cloud como AWS, Azure y Google Cloud mediante archivos de configuración simples.
P: ¿Es Terraform gratuito?
Sí. Terraform CLI es de código abierto, aunque HashiCorp ofrece versiones de pago para equipos y automatización empresarial.
P: ¿Puedo usar Terraform en Windows o Linux también?
Absolutamente. Terraform funciona en todos los sistemas operativos principales. Los comandos de configuración varían ligeramente según la plataforma.
P: ¿Cómo me conecto por SSH a mi instancia EC2 de Terraform?
Usa tu clave SSH privada y la IP pública de la instancia:
ssh ec2-user@<instance_ip>
P: ¿Debería eliminar los recursos después de probar?
Sí — siempre ejecuta terraform destroy después de probar para evitar facturación inesperada de AWS.