Automatizar un despliegue en Google Cloud con Terraform
Robert Orozco

Robert Orozco @robertdev

About: Cloud Architect

Location:
Ecuador
Joined:
May 30, 2025

Automatizar un despliegue en Google Cloud con Terraform

Publish Date: Jun 3
1 1

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
Enter fullscreen mode Exit fullscreen mode

📁 Ahora, crea un nuevo directorio de trabajo:
Image description
Abre el editor integrado de Cloud Shell y crea la siguiente estructura de carpetas y archivos:
Image description
🔧 Inicializa Terraform
En el archivo provider.tf define el proveedor de Google Cloud:
Image description
Luego ejecuta:

terraform init
Enter fullscreen mode Exit fullscreen mode

✅ Esto descargará los plugins necesarios y preparará tu entorno de trabajo:
Image description

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 {
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

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" {}
Enter fullscreen mode Exit fullscreen mode

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
}
Enter fullscreen mode Exit fullscreen mode

TAREA 3️⃣: Despliegue de infraestructura

terraform plan
terraform apply
Enter fullscreen mode Exit fullscreen mode

El resultado
Image description

Image description

🎯 Terraform te da el poder de automatizar tu infraestructura desde código, garantizando entornos replicables, consistentes y fáciles de mantener.

Comments 1 total

  • Nevo David
    Nevo DavidJun 3, 2025

    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?

Add comment