Guia de início rápido: criar uma instância de VM usando o Terraform

Neste guia de início rápido, você vai aprender a usar o Terraform para criar uma instância de máquina virtual (VM) e conectar-se a ela.

Hashicorp Terraform é uma ferramenta de infraestrutura como código (IaC, na sigla em inglês) que permite provisionar e gerenciar infraestrutura em nuvem. O provedor do Terraform para Google Cloud (provedor doGoogle Cloud ) permite provisionar e gerenciar a infraestrutura do Google Cloud .

Antes de começar

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

    Na parte de baixo desta página, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. A inicialização da sessão pode levar alguns segundos.

  2. Crie ou selecione um Google Cloud projeto.

    Funções necessárias para selecionar ou criar um projeto

    • Selecionar um projeto: não é necessário um papel específico do IAM para selecionar um projeto. Você pode escolher qualquer projeto em que tenha recebido um papel.
    • Criar um projeto: para criar um projeto, é necessário ter o papel de Criador de projetos (roles/resourcemanager.projectCreator), que contém a permissão resourcemanager.projects.create. Saiba como conceder papéis.
    • Crie um projeto do Google Cloud :

      gcloud projects create PROJECT_ID

      Substitua PROJECT_ID por um nome para o projeto Google Cloud que você está criando.

    • Selecione o projeto Google Cloud que você criou:

      gcloud config set project PROJECT_ID

      Substitua PROJECT_ID pelo nome do projeto do Google Cloud .

  3. Verifique se o faturamento está ativado para o projeto do Google Cloud .

  4. Ative a API Compute Engine:

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador do Service Usage (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    gcloud services enable compute.googleapis.com
  5. Atribua papéis à sua conta de usuário. Execute o seguinte comando uma vez para cada um dos seguintes papéis do IAM: roles/compute.instanceAdmin.v1

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

    Substitua:

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. Acesse o diretório que contém o exemplo do guia de início rápido:

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

Revisar os arquivos do Terraform

Revise o arquivo main.tf. Esse arquivo define os recursos do Google Cloud que você quer criar.

cat main.tf

A saída será assim

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

Esse arquivo descreve o recurso google_compute_instance, que é o recurso do Terraform para instâncias de VM do Compute Engine. google_compute_instance está configurado para ter as seguintes propriedades:

  • name, definida como my-vm.
  • machine_type, definida como n1-standard-1.
  • zone, definida como us-central1-a.
  • boot_disk define o disco de inicialização da instância.
  • network_interface está configurado para usar a rede padrão no seu projetoGoogle Cloud .

Criar 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
    

    A saída será semelhante a esta:

    
    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. Esse comando prepara seu espaço de trabalho para que o Terraform aplique sua configuração.

    terraform init
    

    A saída será semelhante a esta:

    
    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 comando a seguir. Esse comando realiza as seguintes ações:

    • verifica se a sintaxe de main.tf está correta;
    • mostra uma prévia dos recursos que serão criados.
    terraform plan
    

    A saída será semelhante a esta:

    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 provisionar os recursos descritos no arquivo main.tf:

    terraform apply
    

    Quando solicitado, digite yes.

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

    A saída será semelhante a esta:

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

Conectar-se à instância de VM

Execute o comando a seguir para se conectar à instância de VM recém-criada:

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

Limpar

Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, exclua o projeto do Google Cloud e os recursos.

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

terraform destroy

Quando solicitado, digite yes.

A saída será semelhante a esta:

Destroy complete! Resources: 1 destroyed.

A seguir