Guía de inicio rápido: Crea una instancia de VM con Terraform

En esta guía de inicio rápido, aprenderás a usar Terraform para crear una instancia de máquina virtual (VM) de Compute Engine y conectarte a esa instancia de VM.

Hashicorp Terraform es una herramienta de infraestructura como código (IaC) que te permite aprovisionar y administrar la infraestructura de nube. El proveedor de Terraform paraGoogle Cloud (proveedor deGoogle Cloud ) te permite aprovisionar y administrar la infraestructura de Google Cloud .

Antes de comenzar

  1. Para usar una terminal en línea con gcloud CLI y Terraform ya configurados, activa Cloud Shell.

    En la parte inferior de esta página, se inicia una sesión de Cloud Shell y se muestra una instrucción de línea de comandos. La sesión puede tardar unos segundos en inicializarse.

  2. Crea o selecciona un Google Cloud proyecto.

    Roles necesarios para seleccionar o crear un proyecto

    • Selecciona un proyecto: Para seleccionar un proyecto, no se requiere un rol de IAM específico. Puedes seleccionar cualquier proyecto en el que se te haya otorgado un rol.
    • Crear un proyecto: Para crear un proyecto, necesitas el rol de Creador de proyectos (roles/resourcemanager.projectCreator), que contiene el permiso resourcemanager.projects.create. Obtén más información para otorgar roles.
    • Crea un proyecto de Google Cloud :

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto Google Cloud que estás creando.

    • Selecciona el proyecto Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre de tu Google Cloud proyecto.

  3. Verifica que la facturación esté habilitada para tu proyecto de Google Cloud .

  4. Habilita la API de Compute Engine con este comando:

    Roles necesarios para habilitar las APIs

    Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

    gcloud services enable compute.googleapis.com
  5. Otorga roles a tu cuenta de usuario. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM: roles/compute.instanceAdmin.v1

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Reemplaza lo siguiente:

Prepare el entorno

  1. Clona el repositorio de GitHub que contiene las muestras de Terraform:

    git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
    
  2. Ve al directorio que contiene la guía de inicio rápido de muestra:

    cd terraform-docs-samples/compute/quickstart/create_vm
    

Revisa los archivos de Terraform

Revisa el archivo main.tf. Este archivo define los recursos de Google Cloudque deseas crear.

cat main.tf

El resultado es similar al que se muestra a continuación:

resource "google_compute_instance" "default" {
  name         = "my-vm"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-minimal-2210-kinetic-amd64-v20230126"
    }
  }

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

En este archivo, se describe el recurso google_compute_instance, que es el recurso de Terraform para la instancia de VM de Compute Engine. google_compute_instance está configurado para tener las siguientes propiedades:

  • name se configura como my-vm.
  • machine_type se configura como n1-standard-1.
  • zone se configura como us-central1-a.
  • boot_disk configura el disco de arranque de la instancia.
  • network_interface está configurado para usar la red predeterminada en tu proyecto deGoogle Cloud .

Crea la instancia de VM de Compute Engine

  1. En Cloud Shell, ejecuta el siguiente comando para verificar que Terraform esté disponible:

    terraform
    

    El resultado debería ser similar al siguiente ejemplo:

    
    Usage: terraform [global options] <subcommand> [args]
    
    The available commands for execution are listed below.
    The primary workflow commands are given first, followed by
    less common or more advanced commands.
    
    Main commands:
      init          Prepare your working directory for other commands
      validate      Check whether the configuration is valid
      plan          Show changes required by the current configuration
      apply         Create or update infrastructure
      destroy       Destroy previously-created infrastructure
    
    
  2. Inicializa Terraform ejecutando el siguiente comando. Este comando prepara tu lugar de trabajo para que Terraform pueda aplicar tu configuración.

    terraform init
    

    El resultado debería ser similar al siguiente ejemplo:

    
    Initializing the backend...
    
    Initializing provider plugins...
    - Finding latest version of hashicorp/google...
    - Installing hashicorp/google v5.35.0...
    - Installed hashicorp/google v5.35.0 (signed by HashiCorp)
    
    Terraform has created a lock file .terraform.lock.hcl to record the provider
    selections it made above. Include this file in your version control repository
    so that Terraform can guarantee to make the same selections by default when
    you run "terraform init" in the future.
    
    Terraform has been successfully initialized!
    
    
  3. Para validar la configuración de Terraform, ejecuta el siguiente comando. Este comando realiza las siguientes acciones:

    • Verifica que la sintaxis de main.tf sea correcta.
    • Muestra una vista previa de los recursos que se crearán.
    terraform plan
    

    El resultado debería ser similar al siguiente ejemplo:

    Plan: 1 to add, 0 to change, 0 to destroy.
    
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    
  4. Aplica la configuración para aprovisionar los recursos descritos en el archivo main.tf:

    terraform apply
    

    Cuando se te solicite, ingresa yes.

    Terraform llama a las APIs de Google Cloud para crear la instancia de VM definida en el archivomain.tf.

    El resultado debería ser similar al siguiente ejemplo:

    Apply complete! Resources: 1 added, 0 changed, 0 destroyed
    

Conéctate a la instancia de VM

Conéctate a la instancia de VM que acabas de crear ejecutando el siguiente comando:

gcloud compute ssh --zone=us-central1-a my-vm

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página, borra el proyecto de Google Cloud que tiene los recursos.

En Cloud Shell, ejecuta el siguiente comando para borrar los recursos de Terraform:

terraform destroy

Cuando se te solicite, ingresa yes.

El resultado debería ser similar al siguiente ejemplo:

Destroy complete! Resources: 1 destroyed.

¿Qué sigue?