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 DevOps Bootcamp 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 DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp 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.micropara 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 DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp 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 DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp 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
- Configuración del proveedor de AWS
- Aprovisionamiento de instancias EC2
- Gestión de buckets de S3 e IAM
- Configuración de VPC y redes