Carregando...
Nenhum resultado encontrado.

Aplique suas habilidades no console do Google Cloud

Acesse mais de 700 laboratórios e cursos

Infraestrutura como código com o Terraform

Laboratório 1 hora universal_currency_alt 5 créditos show_chart Intermediário
info Este laboratório pode incorporar ferramentas de IA para ajudar no seu aprendizado.
Acesse mais de 700 laboratórios e cursos

Este laboratório foi desenvolvido com nossa parceira, a HashiCorp (link em inglês). Suas informações pessoais podem ser compartilhadas com a HashiCorp, patrocinadora do laboratório, caso você tenha optado por receber atualizações de produtos, novidades e ofertas em seu perfil de conta.

GSP750

Logotipo dos laboratórios autoguiados do Google Cloud

Informações gerais

O Terraform é um produto de Infraestrutura como Código desenvolvido pela HashiCorp. É uma ferramenta para criar, alterar e gerenciar infraestruturas de maneira segura e repetível. Os operadores e as equipes de infraestrutura podem usar o Terraform para gerenciar ambientes com uma linguagem de configuração chamada HCL (Linguagem de Configuração da HashiCorp) e fazer implantações automatizadas legíveis por humanos.

A Infraestrutura como Código é o processo de gerenciar a infraestrutura usando um ou vários arquivos em vez de configurar manualmente os recursos em uma interface do usuário. Nesse processo, um recurso é qualquer fragmento de infraestrutura em um determinado ambiente, como uma máquina virtual, um grupo de segurança, uma interface de rede etc. Em alto nível, o Terraform permite que os operadores usem a HCL para criar arquivos que contêm definições dos recursos desejados em quase qualquer provedor (AWS, Google Cloud, GitHub, Docker etc.) e automatiza a criação desses recursos no momento da aplicação.

Um fluxo de trabalho simples para implantação segue de perto as etapas abaixo:

  • Escopo: confirme quais recursos precisam ser criados para um projeto.
  • Autoria: crie o arquivo de configuração em HCL com base nos parâmetros do escopo.
  • Inicializar: execute terraform init no diretório do projeto com os arquivos de configuração. Isso fará o download dos plug-ins de provedor corretos para o projeto.
  • Planejar e aplicar: execute terraform plan para verificar o processo de criação e, em seguida, terraform apply para criar recursos reais e o arquivo de estado que compara alterações futuras nos arquivos de configuração com o que realmente existe no ambiente de implantação.

Objetivos

Neste laboratório, você aprenderá a fazer o seguinte:

  • Criar, alterar e destruir infraestruturas com o Terraform
  • Criar dependências de recursos com o Terraform
  • Provisionar infraestruturas com o Terraform

Configuração e requisitos

Antes de clicar no botão Começar o Laboratório

Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.

Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.

Confira os requisitos para concluir o laboratório:

  • Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
  • Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.

Como iniciar seu laboratório e fazer login no console do Google Cloud

  1. Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento. No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:

    • O botão Abrir Console do Google Cloud
    • O tempo restante
    • As credenciais temporárias que você vai usar neste laboratório
    • Outras informações, se forem necessárias
  2. Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.

    O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.

    Dica: coloque as guias em janelas separadas lado a lado.

    Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
  3. Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.

    {{{user_0.username | "Username"}}}

    Você também encontra o nome de usuário no painel Detalhes do Laboratório.

  4. Clique em Próxima.

  5. Copie a Senha abaixo e cole na caixa de diálogo de Olá.

    {{{user_0.password | "Password"}}}

    Você também encontra a senha no painel Detalhes do Laboratório.

  6. Clique em Próxima.

    Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud. Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
  7. Acesse as próximas páginas:

    • Aceite os Termos e Condições.
    • Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
    • Não se inscreva em testes gratuitos.

Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.

Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar. Ícone do menu de navegação e campo de pesquisa

Ativar o Cloud Shell

O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.

  1. Clique em Ativar o Cloud Shell Ícone "Ativar o Cloud Shell" na parte de cima do console do Google Cloud.

  2. Clique nas seguintes janelas:

    • Continue na janela de informações do Cloud Shell.
    • Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.

Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

A gcloud é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.

  1. (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
  1. Clique em Autorizar.

Saída:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project

Saída:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Observação: consulte a documentação completa da gcloud no Google Cloud no guia de visão geral da gcloud CLI.

Tarefa 1: Criar a infraestrutura

O Terraform vem pré-instalado no Cloud Shell, então você já pode começar a criar uma infraestrutura.

Comece criando um exemplo de configuração para um arquivo chamado main.tf. O Terraform reconhece arquivos que terminam em .tf ou .tf.json como arquivos de configuração e os carrega na execução.

  1. Crie o arquivo main.tf:
touch main.tf
  1. Clique no botão Abrir editor na barra de ferramentas do Cloud Shell. É possível alternar entre o Cloud Shell e o editor de código usando os ícones Abrir editor e Abrir terminal, conforme necessário. Outra opção é clicar no botão Abrir em uma nova janela para deixar o Editor aberto em uma guia separada.

  2. No Editor, adicione o conteúdo abaixo ao arquivo main.tf.

terraform { required_providers { google = { source = "hashicorp/google" version = "3.5.0" } } } provider "google" { project = "{{{project_0.project_id | PROJECT ID}}}" region = "{{{project_0.default_region | REGION}}}" zone = "{{{project_0.default_zone | ZONE}}}" } resource "google_compute_network" "vpc_network" { name = "terraform-network" } Observação: para usar esse snippet com o Terraform 0.12, remova o bloco terraform {}.

Bloco do Terraform

O bloco terraform {} é necessário para que o Terraform saiba qual provedor ele deve baixar no Registro do Terraform (em inglês). Na configuração acima, a origem do provedor google é definida como hashicorp/google, que é a abreviação de registry.terraform.io/hashicorp/google.

Você também pode atribuir uma versão a cada provedor definido no bloco required_providers. O argumento version é opcional, embora seja recomendado. Ele é usado para limitar o provedor a uma versão específica ou a um intervalo de versões e, assim, impedir o download de um novo provedor que pode conter alterações interruptivas. Se a versão não for especificada, o Terraform vai baixar automaticamente o provedor mais recente durante a inicialização.

Para mais informações, consulte a página Requisitos do provedor (em inglês) no site do HashiCorp Terraform.

Provedores

O bloco provider é usado para configurar o provedor designado, neste caso, google. Um provedor é responsável pela criação e pelo gerenciamento de recursos. Se uma configuração do Terraform gerenciar recursos de diferentes provedores, é possível ter vários blocos de provedores.

Inicialização

O primeiro comando a ser executado para uma nova configuração – ou depois de verificar uma configuração já existente do controle de versões – é terraform init, que inicializa vários dados e configurações locais que serão usados por comandos posteriores.

  • Inicialize a nova configuração do Terraform executando o comando terraform init no mesmo diretório que o arquivo main.tf:
terraform init

Criação de recursos

  1. Aplique a configuração agora executando o comando terraform apply:
terraform apply

A saída tem um sinal de + ao lado do recurso "google_compute_network" "vpc_network", o que significa que o Terraform vai criar esse recurso. Abaixo disso, são mostrados os atributos que serão definidos. Quando o valor exibido é (known after apply), isso quer dizer que o valor não será conhecido até o recurso ser criado.

Se o plano tiver sido criado corretamente, o Terraform aguardará a aprovação para prosseguir. Cancele a operação neste ponto sem fazer nenhuma alteração na infraestrutura se alguma coisa parecer errada ou perigosa.

Se terraform apply tiver falhado com um erro, leia a mensagem de erro e corrija-o.

  1. O plano parece estar correto aqui. Digite yes no prompt de confirmação e pressione ENTER para prosseguir.

A execução do plano leva alguns minutos porque o Terraform espera até que a rede seja criada:

# ... Enter a value: yes google_compute_network.vpc_network: Creating... google_compute_network.vpc_network: Still creating... [10s elapsed] google_compute_network.vpc_network: Still creating... [20s elapsed] google_compute_network.vpc_network: Still creating... [30s elapsed] google_compute_network.vpc_network: Still creating... [40s elapsed] google_compute_network.vpc_network: Still creating... [50s elapsed] google_compute_network.vpc_network: Creation complete after 58s [id=terraform-network] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Pronto! Agora você pode acessar o console do Cloud para ver a rede provisionada.

  1. No console do Google Cloud, acesse o menu de navegação  e clique em Rede VPC. Observe que a opção terraform-network foi provisionada.

Página de redes VPC.

  1. No Cloud Shell, execute o comando terraform show para inspecionar o estado atual:
terraform show

Esses valores podem ser usados como referência para configurar outros recursos ou saídas, que serão abordados mais tarde neste laboratório.

Clique em Verificar meu progresso para conferir o objetivo. Criar recursos no Terraform

Tarefa 2: Mudar a infraestrutura

Na seção anterior, você criou uma infraestrutura básica com o Terraform: uma rede VPC. Nesta seção, será necessário modificar sua configuração, e você verá como o Terraform lida com mudanças.

Infraestruturas mudam constantemente, e o Terraform foi criado para ajudar a gerenciar e aplicar essas mudanças. À medida que as configurações do Terraform são alteradas, ele cria um plano de execução que modifica apenas o que é necessário para chegar ao estado desejado.

Usando o Terraform para alterar a infraestrutura, você pode controlar as versões não apenas das suas configurações, mas também o estado, para entender como a infraestrutura evolui com o passar do tempo.

Adicionar recursos

Novos recursos podem ser adicionados ao incluí-los na configuração do Terraform e executar terraform apply para provisioná-los.

  1. No Editor, adicione um recurso de instância da computação a main.tf:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" boot_disk { initialize_params { image = "debian-cloud/debian-12" } } network_interface { network = google_compute_network.vpc_network.name access_config { } } }

Esse recurso inclui mais alguns argumentos. O nome e o tipo de máquina são strings simples, mas boot_disk e network_interface são blocos mais complexos. Confira todas as opções disponíveis na documentação do google_compute_instance.

Para este exemplo, a instância da computação vai usar um sistema operacional Debian e será conectada à rede VPC criada anteriormente. Observe como esta configuração faz referência à propriedade de nome da rede com google_compute_network.vpc_network.namegoogle_compute_network.vpc_network é o ID, que corresponde aos valores no bloco que define a rede, e name é uma propriedade desse recurso.

A presença do bloco access_config, mesmo sem nenhum argumento, garante que a instância esteja acessível na Internet.

  1. Agora, execute terraform apply para criar a instância da computação:
terraform apply
  1. De novo, responda yes ao prompt de confirmação.

Essa é uma mudança bem simples: você adicionou um recurso "google_compute_instance" chamado "vm_instance" à sua configuração, e o Terraform criou o recurso no Google Cloud.

Ativar o Gemini Code Assist no Cloud Shell IDE

Você pode usar o Gemini Code Assist em um ambiente de desenvolvimento integrado (IDE), como o Cloud Shell, para receber orientações sobre o código ou resolver problemas com ele. Antes de começar a usar o Gemini Code Assist, você precisa ativá-lo.

  1. No Cloud Shell, ative a API Gemini para Google Cloud com o seguinte comando:
gcloud services enable cloudaicompanion.googleapis.com
  1. Clique em Abrir editor na barra de ferramentas do Cloud Shell.
Observação: para abrir o editor do Cloud Shell, clique em Abrir editor na barra de ferramentas do Cloud Shell. Você pode alternar o Cloud Shell e o editor de código clicando em Abrir editor ou Abrir terminal, conforme necessário.
  1. No painel à esquerda, clique no ícone Configurações e, na visualização Configurações, pesquise Gemini Code Assist.

  2. Localize e verifique se a caixa de seleção Geminicodeassist: Ativar está marcada e feche as Configurações.

  3. Clique em Cloud Code - Sem projeto na barra de status na parte de baixo da tela.

  4. Autorize o plug-in conforme instruído. Se um projeto não for selecionado automaticamente, clique em Selecionar um projeto do Google Cloud e escolha .

  5. Verifique se o projeto do Google Cloud () aparece na mensagem de status do Cloud Code na barra de status.

Mudar recursos com a ajuda do Gemini Code Assist

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

Para aumentar a produtividade e minimizar a troca de contexto, o Gemini Code Assist oferece ações inteligentes com tecnologia de IA diretamente no editor de código. Nesta seção, você vai usar o Gemini Code Assist para modificar alguns recursos com o Terraform.

Você quer adicionar um argumento tags ao recurso vm_instance no arquivo de configuração main.tf.

  1. Clique no ícone Gemini Code Assist: Ações Inteligentes Gemini Code Assist na barra de ferramentas.

  2. Cole o seguinte comando no campo de texto inline do Gemini Code Assist que aparece na barra de ferramentas.

In the configuration file "main.tf", update the "vm_instance" resource by adding a "tags" argument. Set the value to ["web", "dev"].
  1. Para pedir ao Gemini que modifique o código da forma desejada, pressione ENTER.

  2. Quando solicitado na visualização Gemini Diff, clique em Accept.

  3. O argumento tags adicionado no recurso vm_instance no arquivo de configuração main.tf agora é assim:

resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" tags = ["web", "dev"] # ... }
  1. Execute terraform apply de novo para atualizar a instância:
terraform apply
  1. O prefixo ~ significa que o Terraform vai atualizar o recurso no local. Você pode aplicar essa alteração respondendo yes, e o Terraform vai adicionar as tags à instância.

Clique em Verificar meu progresso para conferir o objetivo. Mudar a infraestrutura

Fazer alterações destrutivas

Uma alteração prejudicial é aquela que exige que o provedor substitua o recurso existente em vez de atualizá-lo. Ela geralmente acontece porque o provedor em nuvem não oferece suporte à atualização do recurso da forma descrita pela configuração.

Alterar a imagem do disco da instância é um exemplo de uma alteração prejudicial. Nesta seção, você vai editar o bloco boot_disk no recurso vm_instance no arquivo de configuração main.tf com a ajuda das ações inteligentes do Gemini Code Assist.

  1. Clique em Abrir editor para voltar ao editor do Cloud Shell e clique no ícone Gemini Code Assist: Ações inteligentes Gemini Code Assist: Ações inteligentes na barra de ferramentas.

  2. Cole o seguinte comando na caixa de texto inline do Gemini Code Assist que aparece na barra de ferramentas:

In the configuration file "main.tf", update the image in the boot_disk block of the "vm_instance" resource to "cos-cloud/cos-stable".
  1. Pressione ENTER para mudar a imagem no recurso vm_instance.

  2. Quando solicitado na visualização Gemini Diff, clique em Accept.

  3. O bloco boot_disk no recurso vm_instance no arquivo de configuração main.tf agora deve ser assim:

boot_disk { initialize_params { image = "cos-cloud/cos-stable" } }
  1. Execute terraform apply outra vez para ver como o Terraform vai aplicar essa alteração nos recursos atuais:
terraform apply

O prefixo -/+ significa que o Terraform vai destruir e recriar o recurso em vez de atualizá-lo no local. Embora alguns atributos possam ser atualizados no local (eles são mostrados com o prefixo ~), alterar a imagem do disco de inicialização em uma instância exige que ela seja recriada. O Terraform e o provedor Google Cloud tratam desses detalhes para você e o plano de execução deixa claro o que o Terraform vai fazer.

Além disso, o plano de execução mostra que a mudança da imagem do disco é o que exigiu a substituição da sua instância. Usando essa informação, é possível ajustar suas alterações para tentar evitar as atualizações de destruição/criação se elas forem inaceitáveis em algumas situações.

  1. Novamente, o Terraform pede a aprovação do plano de execução antes de continuar. Responda yes para executar as etapas planejadas.

Conforme indicado pelo plano de execução, o Terraform primeiro destruiu a instância existente e depois criou uma nova no lugar. Você pode usar terraform show de novo para conferir os novos valores associados a esta instância.

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 ver como destruir completamente a infraestrutura gerenciada pelo Terraform.

Destruir a infraestrutura é um evento raro em ambientes de produção. No entanto, se você estiver usando o Terraform para ativar vários ambientes, como desenvolvimento, teste e preparo, destruir será sempre uma ação útil.

Os recursos podem ser destruídos usando o comando terraform destroy, que é semelhante a terraform apply, mas se comporta como se todos os recursos tivessem sido removidos da configuração.

  • Experimente o comando terraform destroy. 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. Como você já viu no "apply", aqui o Terraform mostra o plano de execução e espera aprovação antes de fazer qualquer alteração.

E semelhante ao terraform apply, o Terraform determina a ordem em que as coisas devem ser destruídas. O Google Cloud não vai permitir que uma rede VPC seja excluída se ainda houver recursos nela. Por isso, o Terraform espera a destruição da instância antes de destruir a rede. Ao realizar operações, o Terraform cria um grafo de dependências para determinar a ordem correta das operações. Em casos mais complicados com vários recursos, o Terraform vai realizar operações em paralelo quando for seguro fazer isso.

Clique em Verificar meu progresso para conferir o objetivo. Fazer alterações destrutivas

Tarefa 3: Criar dependências de recursos

Nesta seção, você vai aprender mais sobre dependências de recursos e como usar os parâmetros deles para compartilhar informações de um recurso com outros.

Infraestruturas físicas têm uma variedade de recursos e tipos de recursos. Da mesma forma, as configurações do Terraform podem ter vários recursos e tipos de recursos, e esses tipos podem abranger vários provedores.

Nesta seção, você verá um exemplo básico de como configurar vários recursos e como usar atributos de um recurso para configurar outros.

  • Execute o comando a seguir para recriar sua rede e instância:
terraform apply

Os recursos serão criados depois que você responder yes ao comando.

Atribuir um endereço IP estático

  1. Agora, execute o seguinte para dar continuidade à configuração e atribuir um IP estático à instância da VM em main.tf:
resource "google_compute_address" "vm_static_ip" { name = "terraform-static-ip" }

Esta etapa é semelhante à adição de um recurso de instância da VM, exceto pelo fato de que, desta vez, você está criando um tipo de recurso "google_compute_address", que aloca um endereço IP reservado para o projeto.

  1. Em seguida, execute terraform plan:
terraform plan

Você pode ver o que será criado com terraform plan:

$ terraform plan Refreshing Terraform state in-memory prior to plan... The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage. google_compute_network.vpc_network: Refreshing state... [id=terraform-network] google_compute_instance.vm_instance: Refreshing state... [id=terraform-instance] ------------------------------------------------------------------------ An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_compute_address.vm_static_ip will be created + resource "google_compute_address" "vm_static_ip" { + address = (known after apply) + address_type = "EXTERNAL" + creation_timestamp = (known after apply) + id = (known after apply) + name = "terraform-static-ip" + network_tier = (known after apply) + project = (known after apply) + region = (known after apply) + self_link = (known after apply) + subnetwork = (known after apply) + users = (known after apply) } Plan: 1 to add, 0 to change, 0 to destroy. ------------------------------------------------------------------------ Note: You didn't specify an "-out" parameter to save this plan, so Terraform can't guarantee that exactly these actions will be performed if "terraform apply" is subsequently run.

Diferente de terraform apply, o comando plan vai mostrar apenas o que seria alterado e nunca vai aplicar as alterações diretamente. Observe que a única alteração que você fez até agora foi adicionar um IP estático. Em seguida, é preciso anexar o endereço IP à instância.

  1. Atualize a configuração network_interface na instância da seguinte maneira:
network_interface { network = google_compute_network.vpc_network.self_link access_config { nat_ip = google_compute_address.vm_static_ip.address } }

O bloco access_config tem vários argumentos opcionais. Neste caso, você definirá nat_ip como sendo o endereço IP estático. Quando o Terraform ler essa configuração, ele vai:

  • Garantir que vm_static_ip seja criado antes de vm_instance
  • Salvar as propriedades de vm_static_ip no estado
  • Definir nat_ip como o valor da propriedade vm_static_ip.address
  1. Execute terraform plan novamente, mas, desta vez, salve o plano:
terraform plan -out static_ip

Se salvar o plano dessa forma, você poderá aplicar exatamente o mesmo plano no futuro. Quando você tentar aplicar o arquivo criado pelo plano, primeiro o Terraform vai verificar se exatamente o mesmo conjunto de alterações será feito. Só depois ele vai aplicar o plano.

Neste caso, é possível ver que o Terraform criará um novo google_compute_address e atualizará a VM existente para usá-lo.

  1. Execute terraform apply "static_ip" para ver como o Terraform planeja aplicar essa alteração:
terraform apply "static_ip"

Conforme mostrado acima, o Terraform criou o IP estático antes de modificar a instância da VM. O Terraform é capaz de inferir uma dependência devido à expressão de interpolação que transmite o endereço IP à configuração da interface de rede da instância. E ele sabe que deve criar o IP estático antes de atualizar a instância.

Clique em Verificar meu progresso para conferir o objetivo. Criar dependências de recursos

Conhecer as dependências implícitas e explícitas

Ao estudar os atributos de recursos usados nas expressões de interpolação, o Terraform pode inferir automaticamente quando um recurso depende de outro. No exemplo acima, a referência a google_compute_address.vm_static_ip.address cria uma dependência implícita no google_compute_address chamado vm_static_ip.

O Terraform usa essas informações de dependência para determinar a ordem correta na qual criar e atualizar recursos diferentes. No exemplo acima, o Terraform sabe qual vm_static_ip deve ser criado antes da vm_instance ser atualizada para usá-lo.

As dependências implícitas via expressões de interpolação são a maneira principal para informar ao Terraform sobre essas relações e devem ser usadas sempre que possível.

Às vezes, há dependências entre recursos que não são visíveis ao Terraform. O argumento depends_on pode ser adicionado a qualquer recurso e aceita uma lista de recursos para os quais criar dependências explícitas.

Por exemplo, talvez um aplicativo executado na sua instância queira usar um bucket específico do Cloud Storage, mas essa dependência será configurada no código do aplicativo e, assim, não ficará visível ao Terraform. Nesse caso, você pode usar depends_on para declarar explicitamente a dependência.

  1. Adicione um bucket do Cloud Storage e uma instância com uma dependência explícita no bucket adicionando o seguinte a main.tf:
# Novo recurso para o bucket de armazenamento que o aplicativo vai usar. resource "google_storage_bucket" "example_bucket" { name = "<UNIQUE-BUCKET-NAME>" location = "US" website { main_page_suffix = "index.html" not_found_page = "404.html" } } # Cria uma nova instância que usa o bucket resource "google_compute_instance" "another_instance" { # Diz ao Terraform que a criação desta instância de VM só pode ocorrer depois que o # bucket de armazenamento tiver sido criado. depends_on = [google_storage_bucket.example_bucket] name = "terraform-instance-2" machine_type = "e2-micro" boot_disk { initialize_params { image = "cos-cloud/cos-stable" } } network_interface { network = google_compute_network.vpc_network.self_link access_config { } } } Observação: é necessário que os buckets de armazenamento sejam exclusivos globalmente. Por isso, você precisará substituir UNIQUE-BUCKET-NAME por um nome válido e exclusivo para um bucket. Usar seu nome e a data é uma boa maneira de criar um nome de bucket exclusivo.

Mas onde ficam esses recursos na sua configuração? A ordem em que os recursos são definidos em um arquivo de configuração do Terraform não tem nenhum efeito sobre como o Terraform aplica as alterações. Organize os arquivos de configuração como fizer mais sentido para você e sua equipe.

  1. Agora execute terraform plan e terraform apply para conferir essas alterações em ação:
terraform plan terraform apply

Clique em Verificar meu progresso para conferir o objetivo. Criar uma instância dependente de um bucket

  1. Antes de continuar, remova esses recursos novos da sua configuração e execute terraform apply outra vez para destruí-los. Você não usará mais o bucket ou a segunda instância neste laboratório.

Tarefa 4. Provisionar a infraestrutura

A instância de computação lançada nesse ponto é baseada na imagem determinada do Google, mas não há nenhum outro software instalado ou configuração aplicada.

O Google Cloud permite que os clientes gerenciem suas próprias imagens personalizadas do sistema operacional. Essa pode ser uma ótima maneira de garantir que as instâncias provisionadas com o Terraform sejam pré-configuradas com base nas suas necessidades. Packer é a ferramenta perfeita para isso e inclui um builder para o Google Cloud (links em inglês).

O Terraform usa provisionadores para fazer upload de arquivos, executar scripts de shell ou instalar e acionar outros softwares, como ferramentas de gerenciamento de configuração.

Definir um provisionador

  1. Para definir um provisionador, modifique o bloco de recursos definindo a primeira vm_instance na sua configuração da seguinte forma:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" tags = ["web", "dev"] provisioner "local-exec" { command = "echo ${google_compute_instance.vm_instance.name}: ${google_compute_instance.vm_instance.network_interface[0].access_config[0].nat_ip} >> ip_address.txt" } # ... }

Isso adiciona um bloco provisioner ao bloco resource. Vários blocos provisioner podem ser adicionados para definir várias etapas de provisionamento. O Terraform aceita muitos provisionadores (em inglês), mas para este exemplo usa o provisionador local-exec.

O provisionador local-exec executa um comando localmente na máquina que está executando o Terraform, e não na instância de VM em si. Você está usando este provisionador individual. Portanto, não precisamos nos preocupar sobre como especificar informações de conexão (em inglês) agora.

Isso também mostra um exemplo mais complexo de interpolação de string do que visto antes. Cada instância de VM pode ter várias interfaces de rede. Por isso, faça referência à primeira com network_interface[0], com a contagem começando do 0, como feito pela maioria das linguagens de programação. Cada interface de rede também pode ter vários blocos access_config, e você precisa especificar o primeiro.

  1. Execute terraform apply:
terraform apply

A saída pode parecer confusa de início.

O Terraform não encontrou nada para fazer – e, se você conferir, vai notar que não há nenhum arquivo ip_address.txt na sua máquina local.

O Terraform trata os provisionadores de forma diferente de outros argumentos. Os provisionadores só são executados quando um recurso é criado, mas a adição de um provisionador não faz obrigatoriamente com que esse recurso seja destruído e recriado.

  1. Use terraform taint para dizer ao Terraform para recriar a instância:
terraform taint google_compute_instance.vm_instance

Um recurso com taint será destruído e recriado durante o próximo apply.

  1. Execute terraform apply agora:
terraform apply
  1. Confira o conteúdo do arquivo ip_address.txt para confirmar se tudo deu certo.

Ele contém o endereço IP, como você pediu.

Provisionadores com falha e recursos com taint

Se um recurso for criado, mas falhar na etapa de provisionamento, o Terraform terá um erro e vai marcar o recurso como tainted. Um recurso desse tipo não deixa de existir, embora não seja considerado seguro para uso, já que o provisionamento falhou.

Quando você gerar seu próximo plano de execução, o Terraform vai remover todos os recursos com taint e criar novos recursos, tentando provisioná-los novamente após a criação.

Provisionadores de destruição

Os provisionadores também podem ser definidos para serem executados apenas durante a operação de destruição. Eles são úteis para limpar o sistema, extrair dados etc.

Para muitos recursos, usar mecanismos de limpeza integrados é recomendado quando possível (como scripts init), mas os provisionadores podem ser usados se for necessário.

Este laboratório não vai exibir nenhum exemplo de provisionador de destruição. Se esse tipo for necessário, consulte a documentação de provisionadores.

Parabéns!

Neste laboratório, você aprendeu a criar, alterar e destruir infraestruturas com o Terraform. Você criou dependências de recursos e provisionou uma infraestrutura básica com os arquivos de configuração do Terraform.

Próximas etapas/Saiba mais

Confira os recursos a seguir para acessar outros materiais práticos do Terraform:

Treinamento e certificação do Google Cloud

Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.

Manual atualizado em 25 de agosto de 2025

Laboratório testado em 25 de agosto de 2025

Copyright 2025 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.

Antes de começar

  1. Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
  2. Os laboratórios têm um limite de tempo e não têm o recurso de pausa. Se você encerrar o laboratório, vai precisar recomeçar do início.
  3. No canto superior esquerdo da tela, clique em Começar o laboratório

Usar a navegação anônima

  1. Copie o nome de usuário e a senha fornecidos para o laboratório
  2. Clique em Abrir console no modo anônimo

Fazer login no console

  1. Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
  2. Aceite os termos e pule a página de recursos de recuperação
  3. Não clique em Terminar o laboratório a menos que você tenha concluído ou queira recomeçar, porque isso vai apagar seu trabalho e remover o projeto

Este conteúdo não está disponível no momento

Você vai receber uma notificação por e-mail quando ele estiver disponível

Ótimo!

Vamos entrar em contato por e-mail se ele ficar disponível

Um laboratório por vez

Confirme para encerrar todos os laboratórios atuais e iniciar este

Use a navegação anônima para executar o laboratório

Para executar este laboratório, use o modo de navegação anônima ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e a conta de estudante, o que poderia causar cobranças extras na sua conta pessoal.