0Pricing
Terraform Infrastructure as Code · Lección

Aprovisionamiento de instancias EC2

Escriba configuraciones de Terraform para implementar y gestionar máquinas virtuales de Amazon EC2, incluidos los ajustes de red y de grupos de seguridad.

Aprovisionamiento de instancias EC2 es una lección gratuita de Terraform Infrastructure as Code en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Terraform Infrastructure as Code, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

Instancias EC2 con Terraform

¡Bienvenido! En esta lección, aprenderá a aprovisionar y administrar máquinas virtuales Amazon EC2 mediante Terraform.

EC2 (Elastic Compute Cloud) proporciona servidores virtuales escalables en la nube. Al utilizar Infraestructura como Código (IaC) con Terraform para EC2, puede definir sus servidores en código y garantizar implementaciones coherentes y repetibles.

Definir una instancia EC2

El recurso principal para una instancia EC2 en Terraform es aws_instance. Debe especificar al menos dos argumentos clave:

  • ami: la Amazon Machine Image (sistema operativo y software) que se utilizará.
  • instance_type: la configuración de hardware (por ejemplo, t2.micro para instancias aptas para la capa gratuita).

Este es el aspecto de un bloque básico aws_instance:

resource "aws_instance" "web_server" {
  ami           = "ami-053b04dcd42d5397e" # Example: Amazon Linux 2 in us-east-1
  instance_type = "t2.micro"

  tags = {
    Name = "MyWebServer"
  }
}

Lance su primera instancia EC2

Reunamos todos los elementos para lanzar una instancia EC2 sencilla. Esta configuración define el proveedor de AWS y la instancia EC2.

Para implementarla, guárdela como un archivo .tf y, después, ejecute terraform init, terraform plan y terraform apply en su terminal.

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "web_server" {
  ami           = "ami-053b04dcd42d5397e" # Amazon Linux 2 AMI for us-east-1
  instance_type = "t2.micro"

  tags = {
    Name = "MyBasicWebServer"
  }
}

Proteja su EC2: grupos de seguridad

Los grupos de seguridad actúan como firewalls virtuales para sus instancias EC2. Controlan qué tráfico de red entrante (ingress) y saliente (egress) puede llegar a su instancia o salir de ella.

Es fundamental configurarlos correctamente para proteger sus servidores frente a accesos no autorizados y, al mismo tiempo, permitir los servicios necesarios, como SSH o HTTP.

Crear un grupo de seguridad

Defina un grupo de seguridad mediante el recurso aws_security_group. Añadiremos una regla ingress para permitir el acceso SSH (puerto 22) desde cualquier lugar (0.0.0.0/0).

Deberá especificar un vpc_id existente en el que residirá el grupo de seguridad.

resource "aws_security_group" "allow_ssh" {
  name        = "allow_ssh_traffic"
  description = "Allow SSH inbound traffic"
  vpc_id      = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!

  ingress {
    description = "SSH from anywhere"
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1" # All protocols
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = {
    Name = "allow_ssh_sg"
  }
}

Asociar un grupo de seguridad a EC2

Ahora, actualicemos nuestro aws_instance para que utilice este nuevo grupo de seguridad. Hacemos referencia al ID del grupo de seguridad mediante aws_security_group.allow_ssh.id.

Recuerde reemplazar el vpc_id del grupo de seguridad por un ID de VPC real de su cuenta de AWS para que la configuración sea ejecutable.

provider "aws" {
  region = "us-east-1"
}

resource "aws_security_group" "allow_ssh" {
  name        = "allow_ssh_traffic_example"
  description = "Allow SSH inbound traffic"
  vpc_id      = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!

  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"]
  }
}

resource "aws_instance" "web_server" {
  ami             = "ami-053b04dcd42d5397e"
  instance_type   = "t2.micro"
  vpc_security_group_ids = [
    aws_security_group.allow_ssh.id
  ]

  tags = {
    Name = "WebServerWithSSH"
  }
}

Redes de EC2: VPC y subredes

Cada instancia EC2 se encuentra dentro de una nube virtual privada (VPC) y de una subred específica dentro de esa VPC. Una VPC es una red virtual aislada, y las subredes son divisiones lógicas de su VPC (por ejemplo, públicas o privadas).

De forma predeterminada, EC2 puede iniciarse en una VPC o subred predeterminada. Para obtener un mayor control y organización, normalmente se especifica qué subred debe utilizar la instancia.

Crear una red básica

Para controlar completamente la red de nuestra instancia EC2, definamos una VPC mínima y una subred pública. Esto también requiere una puerta de enlace de Internet para el acceso público y una tabla de rutas para dirigir el tráfico.

Esta configuración completa garantiza que su instancia EC2 pueda comunicarse con Internet.

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  tags = {
    Name = "main-vpc-lesson"
  }
}

resource "aws_subnet" "public" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.1.0/24"
  availability_zone = "us-east-1a"
  map_public_ip_on_launch = true # Instances in this subnet get a public IP
  tags = {
    Name = "public-subnet-lesson"
  }
}

resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.main.id
  tags = {
    Name = "main-gw-lesson"
  }
}

resource "aws_route_table" "public_rt" {
  vpc_id = aws_vpc.main.id

  route {
    cidr_block = "0.0.0.0/0" # Traffic to the internet
    gateway_id = aws_internet_gateway.gw.id
  }
  tags = {
    Name = "public-rt-lesson"
  }
}

resource "aws_route_table_association" "public_rt_assoc" {
  subnet_id      = aws_subnet.public.id
  route_table_id = aws_route_table.public_rt.id
}

EC2 en su red personalizada

Ahora combinaremos todas las piezas: una VPC personalizada, una subred, un grupo de seguridad y nuestra instancia EC2. La instancia EC2 se iniciará en nuestra subred pública específica y obtendrá automáticamente una IP pública.

Esta configuración completa le proporciona un control detallado sobre la implementación de EC2 y permite el acceso mediante SSH.

provider "aws" {
  region = "us-east-1"
}

resource "aws_vpc" "main" {
  cidr_block = "10.0.0.0/16"
  tags = { Name = "main-vpc-lesson" }
}

resource "aws_subnet" "public" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.1.0/24"
  availability_zone = "us-east-1a"
  map_public_ip_on_launch = true
  tags = { Name = "public-subnet-lesson" }
}

resource "aws_internet_gateway" "gw" {
  vpc_id = aws_vpc.main.id
  tags = { Name = "main-gw-lesson" }
}

resource "aws_route_table" "public_rt" {
  vpc_id = aws_vpc.main.id
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.gw.id
  }
  tags = { Name = "public-rt-lesson" }
}

resource "aws_route_table_association" "public_rt_assoc" {
  subnet_id      = aws_subnet.public.id
  route_table_id = aws_route_table.public_rt.id
}

resource "aws_security_group" "allow_ssh" {
  name        = "allow_ssh_lesson"
  description = "Allow SSH inbound traffic"
  vpc_id      = aws_vpc.main.id
  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"]
  }
}

resource "aws_instance" "web_server" {
  ami             = "ami-053b04dcd42d5397e"
  instance_type   = "t2.micro"
  subnet_id       = aws_subnet.public.id
  vpc_security_group_ids = [
    aws_security_group.allow_ssh.id
  ]
  associate_public_ip_address = true
  tags = {
    Name = "FullWebServerLesson"
  }
}

Comprobación de la configuración de EC2

¿Cuáles de los siguientes argumentos son esenciales para definir un recurso aws_instance básico en Terraform?

Repaso: EC2 con Terraform

¡Excelente trabajo! Ha aprendido a aprovisionar instancias de Amazon EC2 mediante Terraform.

  • Definimos instancias de EC2 mediante el recurso aws_instance.
  • Las protegimos con aws_security_group, controlando el tráfico de red.
  • Configuramos una red personalizada básica (VPC, subred, puerta de enlace de Internet y tabla de enrutamiento) para alojar nuestras instancias de EC2.
  • Ahora cuenta con los fundamentos necesarios para implementar y administrar sus servidores virtuales como código.

Preguntas frecuentes

¿La lección «Aprovisionamiento de instancias EC2» es gratis?

Sí — el texto completo de «Aprovisionamiento de instancias EC2» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Terraform Infrastructure as Code, actualiza a CoddyKit PRO. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

¿Qué aprenderé en «Aprovisionamiento de instancias EC2»?

Escriba configuraciones de Terraform para implementar y gestionar máquinas virtuales de Amazon EC2, incluidos los ajustes de red y de grupos de seguridad. Practicas Terraform Infrastructure as Code con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Terraform Infrastructure as Code?

No se requiere experiencia previa. Terraform Infrastructure as Code en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Aprovisionamiento de instancias EC2»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Terraform Infrastructure as Code?

Sí. Cada lección de Terraform Infrastructure as Code incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configuración del proveedor de AWS
  2. Aprovisionamiento de instancias EC2
  3. Gestión de buckets de S3 e IAM
  4. Configuración de VPC y redes
← Volver a Terraform Infrastructure as Code