arrow_back

Infraestrutura como código com o Terraform

Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Infraestrutura como código com o Terraform

Lab 1 hora universal_currency_alt 1 crédito show_chart Introdutório
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Informações gerais

Neste laboratório, você vai usar o Terraform para criar, atualizar e destruir recursos do Google Cloud. Você vai começar definindo o Google Cloud como provedor.

Depois, você vai criar uma instância de VM sem mencionar a rede para conferir como o Terraform analisa o código de configuração. Em seguida, você vai incluir a rede no código e criar uma instância de VM no Google Cloud.

Você também vai aprender a atualizar a instância de VM. Você vai adicionar tags à configuração e editar o tipo de máquina. Depois, você vai executar os comandos do Terraform para destruir os recursos criados.

Objetivos

Neste laboratório, você vai aprender a executar as seguintes tarefas:

  • Verificar a instalação do Terraform
  • Definir o Google Cloud como provedor
  • Criar, mudar e destruir recursos do Google Cloud usando o Terraform

Tarefa 1. Fazer login no console do Cloud

Para cada laboratório, você recebe um novo projeto do Google Cloud e um conjunto de recursos por um determinado período e sem custos financeiros.

  1. Faça login no Qwiklabs em uma janela anônima.

  2. Confira o tempo de acesso do laboratório (por exemplo, 1:15:00) e finalize todas as atividades nesse prazo.
    Não é possível pausar o laboratório. Você pode reiniciar o desafio, mas vai precisar refazer todas as etapas.

  3. Quando tudo estiver pronto, clique em Começar o laboratório.

  4. Anote as credenciais (Nome de usuário e Senha). É com elas que você vai fazer login no Console do Google Cloud.

  5. Clique em Abrir Console do Google.

  6. Clique em Usar outra conta, depois copie e cole as credenciais deste laboratório nos locais indicados.
    Se você usar outras credenciais, vai receber mensagens de erro ou cobranças.

  7. Aceite os termos e pule a página de recursos de recuperação.

Tarefa 2: Verificar a instalação do Terraform

  1. No menu do Google Cloud, clique em Ativar o Cloud Shell (Ativar o Cloud Shell). Se aparecer uma caixa de diálogo, clique em Continuar.

  2. Se for solicitado, clique em "Continuar".

  3. Para confirmar se o Terraform está instalado, execute o seguinte comando:

Observação: não se preocupe se você receber um aviso informando que a versão do Terraform está desatualizada, porque as instruções do laboratório vão funcionar com o Terraform v1.0.5 e versões mais recentes. terraform --version Observação: os downloads da versão mais recente estão disponíveis no site do Terraform. O Terraform é distribuído como um pacote binário para todas as plataformas e arquiteturas suportadas, e o Cloud Shell usa o Linux de 64 bits.

A saída será parecida com esta (não copie, este é o exemplo de saída):

Terraform v1.2.2

O Terraform vem pré-instalado no Cloud Shell. Com o Terraform já instalado, é possível criar algumas infraestruturas diretamente.

Tarefa 3. Adicionar o Google Cloud como provedor

  1. Crie um diretório chamado compute:
mkdir compute
  1. Crie o arquivo main.tf:
touch main.tf
  1. Na barra de ferramentas do Cloud Shell, clique em Abrir Editor. Clique em Abrir em uma nova janela para deixar o Editor aberto em uma guia separada.

  2. Copie o código a seguir no arquivo main.tf.

terraform { required_providers { google = { source = "hashicorp/google" } } } provider "google" { project = "{{{project_0.project_id | Project ID}}}" region = "{{{project_0.default_region | Region}}}" zone = "{{{project_0.default_zone | Zone}}}" }
  1. Clique em Arquivo > Salvar.
  2. Mude para o Cloud Shell e execute o comando terraform init.
terraform init

A saída será parecida com esta (não copie, este é o exemplo de saída):

Initializing the backend... Initializing provider plugins... - Finding hashicorp/google versions matching "4.15.0"... - Installing hashicorp/google v4.15.0... - Installed hashicorp/google v4.15.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!

Tarefa 4. Criar a infraestrutura

Vamos tentar criar uma instância de computação sem especificar o parâmetro de rede e conferir como o Terraform processa essa configuração.

  1. Mude para a janela do editor. No arquivo main.tf, insira o seguinte bloco de código.
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-micro" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } }
  1. Para salvar o arquivo main.tf, clique em Arquivo > Salvar.

  2. Agora, execute o seguinte comando para conferir se o mecanismo de computação será criado.

terraform plan
  1. Se a configuração falhar, será mostrado o seguinte erro. Isso acontece porque não é possível configurar um mecanismo de computação sem uma rede.
│ Error: Insufficient network_interface blocks │ │ on main.tf line 15, in resource "google_compute_instance" "terraform": │ 15: resource "google_compute_instance" "terraform" { │ │ At least 1 "network_interface" blocks are required.
  1. Agora, inclua o seguinte segmento de código ao bloco google_compute_instance para adicionar a rede.
network_interface { network = "default" access_config { } }

O código final no arquivo main.tf vai ficar assim:

terraform { required_providers { google = { source = "hashicorp/google" } } } provider "google" { project = "{{{project_0.project_id | Project ID}}}" region = "{{{project_0.default_region | Region}}}" zone = "{{{project_0.default_zone | Zone}}}" } resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-micro" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "default" access_config { } } }
  1. Para salvar o arquivo main.tf, clique em Arquivo > Salvar.
  2. Agora, execute o comando terraform plan para conferir se o mecanismo de computação será criado.
terraform plan

Clique em Autorizar quando solicitado.

A saída será parecida com esta (não copie, este é o exemplo de saída):

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_compute_instance.terraform vai ser criada + resource "google_compute_instance" "terraform" { + can_ip_forward = false + cpu_platform = (known after apply) + current_status = (known after apply) + deletion_protection = false ... Plan: 1 to add, 0 to change, 0 to destroy.
  1. Para aplicar as mudanças desejadas, execute o seguinte comando.
terraform apply
  1. Digite yes para confirmar as ações planejadas.

A saída será parecida com esta (não copie, este é o exemplo de saída):

... Apply complete! Resources: 1 added, 0 changed, 0 destroyed. Observação: se ocorrer um erro, revise as etapas anteriores para verificar se o código correto foi inserido no arquivo main.tf.

Clique em Verificar meu progresso para confirmar se o mecanismo de computação foi criado.

Criar a infraestrutura

Verificar no console do Cloud

Verifique se os recursos foram criados no console do Cloud.

  1. No console do Cloud, acesse o Menu de navegação (Menu de navegação) e clique em Compute Engine > Instâncias de VM.

  2. Confira a instância terraform que foi criada. terraform_instance

Tarefa 5. Mudar a infraestrutura

Nesta tarefa, você vai realizar dois tipos de mudanças na infraestrutura:

  • Adicionar tags de rede
  • Editar o tipo de máquina

Adicionar tags ao recurso de computação

O Terraform não serve só para criar, mas também para mudar recursos.

  1. Adicione um argumento tags à instância que acabamos de criar para que ela fique assim:
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-micro" tags = ["web", "dev"] # ... }
  1. Execute terraform plan.
terraform plan
  1. Execute terraform apply para atualizar a instância.
terraform apply

A saída será parecida com esta (não copie, este é o exemplo de saída):

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place Terraform will perform the following actions: # google_compute_instance.terraform vai ser atualizada no local ~ resource "google_compute_instance" "terraform" { id = "projects/qwiklabs-gcp-00-da04aeabe9ab/zones/us-central1-c/instances/terraform" name = "terraform" ~ tags = [ + "dev", + "web", ] # (17 atributos inalterados ocultos) # (4 blocos inalterados ocultos) } Plan: 0 to add, 1 to change, 0 to destroy.

O prefixo ~ significa que o Terraform vai atualizar o recurso correspondente.

  1. Responda yes quando solicitado para que o Terraform adicione as tags à sua instância.

Clique em Verificar meu progresso para conferir se as tags foram adicionadas. Adicionar tags ao recurso de computação

Editar o tipo de máquina sem interromper a VM

Não é possível mudar o tipo de máquina de uma VM se ela estiver sendo executada. Vamos conferir como o Terraform processa uma mudança de tipo de máquina quando a VM está em execução.

  1. Acesse o arquivo main.tf e edite o argumento machine_type da instância fornecida pelo Terraform de e2-micro para e2-medium. Ele precisa ficar assim:
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-medium" tags = ["web", "dev"] # ... }
  1. Execute terraform plan.
terraform plan
  1. Execute terraform apply de novo para atualizar a instância.
terraform apply

O comando "terraform apply" vai falhar e será mostrado um aviso parecido com este (não copie, porque é apenas um exemplo de saída):

╷ │ Error: Changing the machine_type, min_cpu_platform, service_account, enable_display, shielded_instance_config, scheduling.node_affinities or network_interface.[#d].(network/subnetwork/subnetwork_project) or advanced_machine_features on a started instance requires stopping it. To acknowledge this, please set allow_stopping_for_update = true in your config. You can also stop it by setting desired_status = "TERMINATED", but the instance will not be restarted after the update. │ │ with google_compute_instance.terraform, │ on main.tf line 31, in resource "google_compute_instance" "terraform": │ 31: resource "google_compute_instance" "terraform" {
  1. Não é possível mudar o tipo de máquina se a VM estiver sendo executada. Para garantir que a VM seja interrompida antes de atualizar machine_type, defina o argumento allow_stopping_for_update como true para que o código fique assim:
resource "google_compute_instance" "terraform" { name = "terraform" machine_type = "e2-medium" tags = ["web", "dev"] boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = "default" access_config { } } allow_stopping_for_update = true }
  1. Execute terraform plan.
terraform plan
  1. Execute terraform apply de novo para atualizar a instância.
terraform apply
  1. Responda yes quando solicitado.

  2. Para conferir a mudança no tipo de máquina e as tags adicionadas, acesse Instâncias de VM no console do Cloud e clique na instância terraform criada. machine_type network_tags

Clique em Verificar meu progresso para conferir se o tipo de máquina do recurso de computação fornecido pelo Terraform é e2-medium. Mudar o tipo de máquina na infraestrutura

Tarefa 6. Destruir a infraestrutura

Agora você já sabe criar e mudar a infraestrutura. Antes de passar para a criação de vários recursos e mostrar as dependências deles, você vai conferir como destruir completamente a infraestrutura gerenciada pelo Terraform.

  1. Execute o comando a seguir. Responda yes para executar esse plano e destruir a infraestrutura:
terraform destroy

O prefixo - indica que a instância e a rede serão destruídas.

  1. Para verificar se a instância fornecida pelo Terraform não existe mais, acesse Instâncias de VM no console do Cloud.

Clique em Verificar meu progresso para conferir se a infraestrutura foi destruída. Destruir a infraestrutura

Parabéns!

Neste laboratório, você aprendeu a executar as seguintes tarefas:

  • Verificar a instalação do Terraform
  • Definir o Google Cloud como provedor
  • Criar, mudar e destruir recursos do Google Cloud usando o Terraform

Finalize o laboratório

Clique em Terminar o laboratório após a conclusão. O Google Cloud Ensina remove os recursos usados e limpa a conta por você.

Você vai poder avaliar sua experiência no laboratório. Basta selecionar o número de estrelas, digitar um comentário e clicar em Enviar.

O número de estrelas indica o seguinte:

  • 1 estrela = muito insatisfeito
  • 2 estrelas = insatisfeito
  • 3 estrelas = neutro
  • 4 estrelas = satisfeito
  • 5 estrelas = muito satisfeito

Feche a caixa de diálogo se não quiser enviar feedback.

Para enviar seu feedback, fazer sugestões ou correções, use a guia Suporte.

Copyright 2020 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.