En este tema, aprenderemos cómo utilizar Terraform para aprovisionar recursos en Google Cloud Platform (GCP). Exploraremos los conceptos básicos, la configuración inicial y algunos ejemplos prácticos para que puedas comenzar a gestionar tu infraestructura en GCP con Terraform.

Conceptos Básicos

Antes de comenzar con la configuración y aprovisionamiento de recursos en GCP, es importante entender algunos conceptos clave:

  • Proveedor de GCP: Terraform utiliza proveedores para interactuar con las APIs de los servicios en la nube. El proveedor de GCP permite a Terraform gestionar recursos en Google Cloud.
  • Credenciales: Para que Terraform pueda interactuar con GCP, necesitarás configurar las credenciales adecuadas.
  • Recursos: Los recursos son los componentes de infraestructura que deseas crear y gestionar en GCP, como instancias de VM, redes, y bases de datos.

Configuración Inicial

Instalación del Proveedor de GCP

Para comenzar, debes asegurarte de que el proveedor de GCP esté configurado en tu archivo de configuración de Terraform. Aquí tienes un ejemplo de cómo hacerlo:

provider "google" {
  credentials = file("<path-to-your-service-account-key>.json")
  project     = "<your-gcp-project-id>"
  region      = "us-central1"
}

Creación de un Proyecto en GCP

  1. Crear un Proyecto: Si aún no tienes un proyecto en GCP, crea uno desde la consola de Google Cloud.
  2. Habilitar APIs: Asegúrate de habilitar las APIs necesarias para los recursos que planeas gestionar. Por ejemplo, la API de Compute Engine para instancias de VM.
  3. Crear una Cuenta de Servicio: Crea una cuenta de servicio y descarga la clave JSON. Esta clave se utilizará para autenticar Terraform con GCP.

Ejemplo Práctico: Creación de una Instancia de VM

Vamos a crear una instancia de VM en GCP utilizando Terraform. A continuación se muestra un ejemplo de configuración:

Archivo main.tf

provider "google" {
  credentials = file("<path-to-your-service-account-key>.json")
  project     = "<your-gcp-project-id>"
  region      = "us-central1"
}

resource "google_compute_instance" "default" {
  name         = "terraform-instance"
  machine_type = "f1-micro"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }

  network_interface {
    network = "default"
    access_config {
    }
  }
}

Explicación del Código

  • provider "google": Configura el proveedor de GCP con las credenciales, el ID del proyecto y la región.
  • resource "google_compute_instance" "default": Define una instancia de VM.
    • name: Nombre de la instancia.
    • machine_type: Tipo de máquina (por ejemplo, f1-micro).
    • zone: Zona en la que se creará la instancia.
    • boot_disk: Configuración del disco de arranque.
      • initialize_params: Parámetros de inicialización del disco, incluyendo la imagen del sistema operativo.
    • network_interface: Configuración de la interfaz de red.
      • network: Red a la que se conectará la instancia (por defecto, default).
      • access_config: Configuración de acceso, necesaria para obtener una IP pública.

Ejercicio Práctico

Ejercicio 1: Crear una Red y una Subred

  1. Objetivo: Crear una red personalizada y una subred en GCP.
  2. Instrucciones:
    • Define una red personalizada.
    • Define una subred dentro de la red personalizada.

Solución

Archivo main.tf

provider "google" {
  credentials = file("<path-to-your-service-account-key>.json")
  project     = "<your-gcp-project-id>"
  region      = "us-central1"
}

resource "google_compute_network" "custom_network" {
  name                    = "custom-network"
  auto_create_subnetworks = false
}

resource "google_compute_subnetwork" "custom_subnetwork" {
  name          = "custom-subnetwork"
  ip_cidr_range = "10.0.0.0/16"
  region        = "us-central1"
  network       = google_compute_network.custom_network.id
}

Explicación del Código

  • resource "google_compute_network" "custom_network": Define una red personalizada.
    • name: Nombre de la red.
    • auto_create_subnetworks: Si se establece en false, no se crearán subredes automáticamente.
  • resource "google_compute_subnetwork" "custom_subnetwork": Define una subred dentro de la red personalizada.
    • name: Nombre de la subred.
    • ip_cidr_range: Rango CIDR de la subred.
    • region: Región en la que se creará la subred.
    • network: ID de la red a la que pertenece la subred.

Conclusión

En esta sección, hemos aprendido cómo aprovisionar recursos en GCP utilizando Terraform. Hemos cubierto la configuración inicial, la creación de una instancia de VM y la creación de una red y una subred personalizadas. Con estos conocimientos, estás listo para comenzar a gestionar tu infraestructura en GCP con Terraform.

En el próximo módulo, exploraremos funcionalidades avanzadas de Terraform que te permitirán optimizar y gestionar mejor tus configuraciones de infraestructura.

© Copyright 2024. Todos los derechos reservados