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?