Início rápido: crie uma instância de VM com o Terraform

Neste início rápido, vai aprender a usar o Terraform para criar uma instância de máquina virtual (VM) do Compute Engine e estabelecer ligação a essa instância de VM.

O Hashicorp Terraform é uma ferramenta de infraestrutura como código (IaC) que lhe permite aprovisionar e gerir a infraestrutura na nuvem. O fornecedor do Terraform para Google Cloud (Google Cloud provider) permite-lhe aprovisionar e gerir Google Cloud infraestrutura.

Antes de começar

  1. Para usar um terminal online com a CLI gcloud e o Terraform já configurados, ative o Cloud Shell:

    Na parte inferior desta página, é iniciada uma sessão do Cloud Shell e é apresentado um comando. A sessão pode demorar alguns segundos a ser inicializada.

  2. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable compute.googleapis.com
  5. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/compute.instanceAdmin.v1

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

    Replace the following:

Prepare o ambiente

  1. Clone o repositório do GitHub que contém exemplos do Terraform:

    git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
    
  2. Aceda ao diretório que contém o exemplo de início rápido:

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

Reveja os ficheiros do Terraform

Reveja o ficheiro main.tf. Este ficheiro define os Google Cloudrecursos que quer criar.

cat main.tf

O resultado é semelhante ao seguinte

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 {}
  }
}

Este ficheiro descreve o recurso google_compute_instance, que é o recurso do Terraform para a instância de VM do Compute Engine. O google_compute_instance está configurado para ter as seguintes propriedades:

  • A definição de name é my-vm.
  • A definição de machine_type é n1-standard-1.
  • A definição de zone é us-central1-a.
  • boot_disk define o disco de arranque para a instância.
  • network_interface está definido para usar a rede predefinida no seu projetoGoogle Cloud .

Crie a instância de VM do Compute Engine

  1. No Cloud Shell, execute o seguinte comando para verificar se o Terraform está disponível:

    terraform
    

    O resultado deve ser semelhante ao seguinte:

    
    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. Inicialize o Terraform executando o seguinte comando. Este comando prepara o seu espaço de trabalho para que o Terraform possa aplicar a sua configuração.

    terraform init
    

    O resultado deve ser semelhante ao seguinte:

    
    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. Valide a configuração do Terraform executando o seguinte comando. Este comando realiza as seguintes ações:

    • Verifica se a sintaxe de main.tf está correta.
    • Mostra uma pré-visualização dos recursos que vão ser criados.
    terraform plan
    

    O resultado deve ser semelhante ao seguinte:

    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. Aplique a configuração para aprovisionar recursos descritos no ficheiro main.tf:

    terraform apply
    

    Quando lhe for pedido, introduza yes.

    O Terraform chama as Google Cloud APIs para criar a instância de VM definida no ficheiro main.tf.

    O resultado deve ser semelhante ao seguinte:

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

Estabeleça ligação à instância de VM

Ligue-se à instância de VM que acabou de criar executando o seguinte comando:

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

Limpar

Para evitar incorrer em custos na sua Google Cloud conta pelos recursos usados nesta página, elimine o Google Cloud projeto com os recursos.

No Cloud Shell, execute o seguinte comando para eliminar os recursos do Terraform:

terraform destroy

Quando lhe for pedido, introduza yes.

O resultado deve ser semelhante ao seguinte:

Destroy complete! Resources: 1 destroyed.

O que se segue?