Terraform es una poderosa herramienta de infraestructura como código (IaC) que permite crear, modificar y gestionar tu infraestructura de manera segura, repetible y predecible.
TAREA 1️⃣: Usar Terraform en Cloud Shell
Google Cloud Shell ya viene con Terraform instalado. Para verificar la versión, ejecuta:
terraform --version
📁 Ahora, crea un nuevo directorio de trabajo:
Abre el editor integrado de Cloud Shell y crea la siguiente estructura de carpetas y archivos:
🔧 Inicializa Terraform
En el archivo provider.tf define el proveedor de Google Cloud:
Luego ejecuta:
terraform init
✅ Esto descargará los plugins necesarios y preparará tu entorno de trabajo:
TAREA 2️⃣: Configura los archivos .tf
Main.tf
Este archivo define el recurso principal, en este caso, una instancia de máquina virtual en GCP:
resource "google_compute_instance" "vm_instance" {
name = "${var.instance_name}" #Nombre de la instancia
zone = "${var.instance_zone}" #Zona donde se desplegará
machine_type = "${var.instance_type}" #Tipo de máquina (e.g. e2-medium)
boot_disk {
initialize_params {
image = "debian-cloud/debian-11" #Imagen base del disco (Debian 11)
}
}
network_interface {
network = "${var.instance_network}" #Red en la que estará la VM
access_config {
}
}
}
Variables.tf
Aquí definimos las variables utilizadas en el módulo de la instancia:
variable "instance_name" {}
variable "instance_zone" {}
variable "instance_type" {
default = "e2-micro"
}
variable "instance_network" {}
Mynetwork.tf
Este archivo define tres componentes fundamentales para tu infraestructura:
- Una red VPC en modo automático
- Una regla de firewall que permite tráfico HTTP, SSH, RDP e ICMP.
- Dos máquinas virtuales (instancias) desplegadas en diferentes regiones.
# Crear la red "mynetwork" en modo automático
resource "google_compute_network" "mynetwork" {
name = "mynetwork"
auto_create_subnetworks = "true" # Crea subredes automáticamente en todas las regiones
}
# Añadir una regla de firewall para permitir tráfico HTTP, SSH, RDP e ICMP
resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" {
name = "mynetwork-allow-http-ssh-rdp-icmp"
network = google_compute_network.mynetwork.self_link # Apunta a la red creada
allow {
protocol = "tcp"
ports = ["22", "80", "3389"] # SSH (22), HTTP (80), RDP (3389)
}
allow {
protocol = "icmp" # Permite ping
}
source_ranges = ["0.0.0.0/0"] # Permite tráfico desde cualquier IP
}
# Crear la instancia "mynet-vm-1" en la zona us-west1-a usando un módulo
module "mynet-vm-1" {
source = "./instance"
instance_name = "mynet-vm-1"
instance_zone = "us-west1-a"
instance_network = google_compute_network.mynetwork.self_link
}
# Crear la instancia "mynet-vm-2" en la zona asia-south1-b usando el mismo módulo
module "mynet-vm-2" {
source = "./instance"
instance_name = "mynet-vm-2"
instance_zone = "asia-south1-b"
instance_network = google_compute_network.mynetwork.self_link
}
TAREA 3️⃣: Despliegue de infraestructura
terraform plan
terraform apply
🎯 Terraform te da el poder de automatizar tu infraestructura desde código, garantizando entornos replicables, consistentes y fáciles de mantener.
Top comments (1)
pretty cool seeing this broken down into real steps tbh - you think keeping these setups reliable long-term is all about regular updates or does it get more complicated?