Crear tu Primer Recurso AWS: Una VPC Básica

Video
25 min~5 min lectura

Reproductor de video

Concepto clave

Una VPC (Virtual Private Cloud) es el bloque fundamental de tu infraestructura en AWS. Imagina que es como construir tu propio centro de datos virtual dentro de la nube de AWS, completamente aislado y bajo tu control. Con Terraform, defines esta VPC como código, lo que significa que puedes versionarla, compartirla y recrearla exactamente igual en cualquier momento.

La analogía perfecta es planificar una casa antes de construirla: los planos (tu código Terraform) especifican exactamente cómo será la estructura, dónde irán las habitaciones (subredes), y cómo se conectará al exterior (gateways). Esto elimina la configuración manual en la consola AWS, que es propensa a errores y difícil de replicar.

Cómo funciona en la práctica

Para crear una VPC básica con Terraform, sigues un flujo estructurado. Primero, configuras el proveedor AWS en tu archivo main.tf, definiendo la región donde desplegarás. Luego, defines el recurso aws_vpc con parámetros clave como el bloque CIDR (que determina el rango de direcciones IP privadas). Finalmente, ejecutas terraform apply para que Terraform se comunique con AWS y cree la VPC físicamente.

Un ejemplo paso a paso:

  1. Escribe el código en un archivo main.tf
  2. Ejecuta terraform init para inicializar el proyecto y descargar el proveedor AWS
  3. Usa terraform plan para ver qué cambios se aplicarán
  4. Aplica con terraform apply y confirma
  5. Verifica en la consola AWS que la VPC se creó correctamente

Código en acción

Aquí tienes un ejemplo funcional para crear una VPC básica en la región us-east-1. Este código es copiable y ejecutable directamente.

# main.tf - Configuración del proveedor AWS
provider "aws" {
  region = "us-east-1"
}

# Definición de la VPC
resource "aws_vpc" "mi_primera_vpc" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_support   = true
  enable_dns_hostnames = true
  tags = {
    Name = "VPC-Terraform-Demo"
    Environment = "Dev"
  }
}

Después de ejecutar terraform apply, puedes mejorar este código añadiendo una subred. Aquí el antes y después:

Antes: Solo la VPC (como arriba).

Después: VPC con una subred pública:

# main.tf - VPC con subred
provider "aws" {
  region = "us-east-1"
}

resource "aws_vpc" "mi_primera_vpc" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_support   = true
  enable_dns_hostnames = true
  tags = {
    Name = "VPC-Terraform-Demo"
  }
}

resource "aws_subnet" "subred_publica" {
  vpc_id     = aws_vpc.mi_primera_vpc.id
  cidr_block = "10.0.1.0/24"
  availability_zone = "us-east-1a"
  map_public_ip_on_launch = true
  tags = {
    Name = "Subred-Publica-1"
  }
}

Errores comunes

  • Olvidar terraform init: Si no ejecutas terraform init antes de plan o apply, Terraform no tendrá el proveedor AWS configurado y fallará. Siempre inicia tu proyecto primero.
  • Bloques CIDR superpuestos: Definir un cidr_block que se solape con otras VPCs en tu cuenta puede causar conflictos. Usa rangos únicos como 10.0.0.0/16, 172.16.0.0/16, o 192.168.0.0/16.
  • No etiquetar recursos: Sin etiquetas, es difícil identificar y gestionar recursos en AWS. Incluye siempre tags como Name y Environment para mejor organización.
  • Ignorar terraform plan Saltar terraform plan y aplicar directamente puede llevar a cambios no deseados. Usa plan para revisar y validar antes de aplicar.
  • Credenciales AWS incorrectas Si no configuras correctamente las credenciales AWS (via AWS CLI o variables de entorno), Terraform no podrá autenticarse. Verifica con aws sts get-caller-identity.

Checklist de dominio

  • He escrito y ejecutado un archivo main.tf que define una VPC básica con Terraform.
  • He ejecutado terraform init, plan, y apply exitosamente para crear la VPC en AWS.
  • He verificado en la consola AWS que la VPC existe y tiene las propiedades definidas (CIDR, tags).
  • He añadido al menos una subred a la VPC y entendido cómo se relacionan los recursos.
  • He usado etiquetas (tags) en todos mis recursos para identificación clara.
  • He probado terraform destroy para eliminar la infraestructura y confirmar que no hay costos residuales.
  • He versionado mi código Terraform en un sistema como Git, con un commit inicial.

Crear una VPC con dos subredes usando Terraform

En este ejercicio practico, vas a crear una VPC en AWS con dos subredes: una publica y una privada. Sigue estos pasos:

  1. Configura tu entorno AWS con credenciales validas usando AWS CLI o variables de entorno.
  2. Crea un nuevo directorio para tu proyecto Terraform y dentro, un archivo llamado main.tf.
  3. En main.tf, define el proveedor AWS para la region us-east-1.
  4. Define un recurso aws_vpc con CIDR block 10.0.0.0/16 y habilita soporte DNS y nombres de host. Añade tags: Name con valor "MiVPC-Ejercicio" y Environment con valor "Testing".
  5. Define dos recursos aws_subnet:
    • Subred publica: CIDR 10.0.1.0/24, en zona de disponibilidad us-east-1a, con map_public_ip_on_launch = true.
    • Subred privada: CIDR 10.0.2.0/24, en zona us-east-1b, sin IP publica automatica.
    Asegurate de referenciar correctamente el ID de la VPC usando aws_vpc.mi_vpc.id (ajusta el nombre si es necesario).
  6. Ejecuta terraform init para inicializar el proyecto.
  7. Ejecuta terraform plan y revisa los cambios propuestos.
  8. Aplica la configuracion con terraform apply y confirma escribiendo "yes".
  9. Verifica en la consola AWS que la VPC y las dos subredes se han creado correctamente.
  10. Opcional: Ejecuta terraform destroy para limpiar los recursos y evitar costos.
Pistas
  • Recuerda que el CIDR de las subredes debe estar dentro del rango de la VPC (10.0.0.0/16).
  • Usa terraform state list para ver los recursos creados si tienes dudas.
  • Si falla la autenticacion, verifica tus credenciales AWS con aws configure list.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.