Visão geral
Neste laboratório, você vai criar duas VMs na rede padrão. Vamos usar variáveis para definir os atributos da VM no ambiente de execução e valores de saída para reproduzir alguns atributos de recursos.
Em seguida, vamos adicionar um endereço IP estático à primeira VM para examinar como o Terraform lida com dependências implícitas. Em seguida, criaremos um bucket GCS mencionando a dependência explícita à VM para examinar como o Terraform lida com a dependência explícita.
Objetivos
Neste laboratório, você vai aprender a fazer o seguinte:
- Usar variáveis e valores de saída
- Analisar a dependência implícita
- Criar dependência de recurso explícita
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 sem custo financeiro.
-
Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para 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
-
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.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Nome de usuário"}}}
Você também encontra o Nome de usuário no painel Detalhes do laboratório.
-
Clique em Seguinte.
-
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
{{{user_0.password | "Senha"}}}
Você também encontra a Senha no painel Detalhes do laboratório.
-
Clique em Seguinte.
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.
-
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 uma lista de produtos e serviços do Google Cloud, clique no Menu de navegação no canto superior esquerdo ou digite o nome do serviço ou produto no campo Pesquisar.
Tarefa 2: Inicializar o Terraform
Vamos inicializar o Terraform definindo o Google como o provedor.
- Abra o Cloud Shell (
) e execute este comando para verificar se o Terraform está instalado.
terraform -version
A saída será parecida com esta (não copie, este é o exemplo de saída):
Terraform v1.5.7
O Terraform vem pré-instalado no Cloud Shell. Com o Terraform já instalado, é possível criar diretamente recursos de infraestrutura.
- Crie um diretório para sua configuração do Terraform e navegue até ele executando este comando:
mkdir tfinfra && cd $_
- No Cloud Shell, clique em Abrir editor para abrir o editor do Cloud Shell.
- Clique no botão Abrir em uma nova janela para deixar o Editor aberto em uma guia separada.
- Para criar um novo arquivo na pasta
tfinfra, clique com o botão direito do mouse na pasta tfinfra e, em seguida, em Novo arquivo.
- Nomeie o novo arquivo provider.tf e depois clique em OK.
- Adicione este código em
provider.tf:
provider "google" {
project = "{{{project_0.project_id|Project ID}}}"
region = "{{{project_0.default_region | "REGION"}}}"
zone = "{{{project_0.default_zone | "ZONE"}}}"
}
-
Para salvar provider.tf, clique em Arquivo > Salvar.
-
Inicialize o Terraform executando estes comandos:
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!
O Terraform agora instalou os plug-ins necessários para interagir com a API Google Cloud. A autenticação não é necessária para a API. As credenciais do Cloud Shell dão acesso ao projeto e às APIs.
Pergunta:
Na parte restante do laboratório, abordaremos os dois tipos de dependências que o Terraform pode processar:
- Dependências implícitas: dependências conhecidas pelo Terraform
- Dependências explícitas: dependências desconhecidas do Terraform
Tarefa 3: Exibir dependência implícita de recursos
Para demonstrar como o Terraform infere uma dependência implícita, atribuímos um endereço IP estático à instância da VM.
Criar uma instância de VM
Vamos criar uma instância de VM e parametrizar sua configuração definindo variáveis:
- Para criar um novo arquivo, clique com o botão direito do mouse na pasta
tfinfra e, em seguida, em Novo arquivo.
- Nomeie o novo arquivo como instance.tf e abra-o.
- Copie o seguinte código em
instance.tf:
resource google_compute_instance "vm_instance" {
name = "${var.instance_name}"
zone = "${var.instance_zone}"
machine_type = "${var.instance_type}"
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
# Allocate a one-to-one NAT IP to the instance
}
}
}
- Para salvar
instance.tf, clique em Arquivo > Salvar.
Criar variáveis
- Clique com o botão direito do mouse na pasta
tfinfra e, em seguida, em Novo arquivo para criar um novo arquivo para as variáveis.
- Nomeie o novo arquivo
variables.tf e depois clique em OK.
- Adicione estas propriedades a
variables.tf:
variable "instance_name" {
type = string
description = "Name for the Google Compute instance"
}
variable "instance_zone" {
type = string
description = "Zone for the Google Compute instance"
}
variable "instance_type" {
type = string
description = "Disk type of the Google Compute instance"
default = "e2-medium"
}
Quando você atribui um valor padrão à variável instance_type, ela passa a ser opcional. As variáveis instance_name e instance_zone são obrigatórias e você vai defini-las no ambiente de execução.
- Para salvar
variable.tf, clique em Arquivo > Salvar.
Criar valores de saída
- Clique com o botão direito do mouse na pasta
tfinfra e, em seguida, em Novo arquivo para criar um novo arquivo para saídas.
- Nomeie o novo arquivo
outputs.tf e depois clique em OK.
- Adicione estas propriedades a
outputs.tf:
output "network_IP" {
value = google_compute_instance.vm_instance.instance_id
description = "The internal ip address of the instance"
}
output "instance_link" {
value = google_compute_instance.vm_instance.self_link
description = "The URI of the created resource."
}
- Para salvar
outputs.tf, clique em Arquivo > Salvar.
Atribuir um IP estático
- Agora, adicione à sua configuração atribuindo um IP estático à instância da VM em
instance.tf.
resource "google_compute_address" "vm_static_ip" {
name = "terraform-static-ip"
}
A adição de um recurso de instância da VM deve ser parecida com o exemplo anterior, exceto pelo fato de que dessa vez você está criando um tipo de recurso google_compute_address, que aloca um endereço IP reservado para o projeto.
- Atualize a configuração network_interface da instância da seguinte maneira:
network_interface {
network = "default"
access_config {
# Alocar um IP NAT um-para-um para a instância
nat_ip = google_compute_address.vm_static_ip.address
}
}
O código final é o mostrado abaixo.
resource "google_compute_address" "vm_static_ip" {
name = "terraform-static-ip"
}
resource google_compute_instance "vm_instance" {
name = "${var.instance_name}"
zone = "${var.instance_zone}"
machine_type = "${var.instance_type}"
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
# Alocar um IP NAT um-para-um para a instância
nat_ip = google_compute_address.vm_static_ip.address
}
}
}
- Inicialize o Terraform executando este comando:
terraform init
- Execute este comando para visualizar os recursos criados.
terraform plan
- Se aparecer a solicitação, insira os detalhes para a criação da instância conforme mostrado abaixo:
- Execute este comando para visualizar a ordem de criação do recurso.
terraform apply
- Se aparecer a solicitação, insira os detalhes para a criação da instância conforme mostrado abaixo:
- Digite
yes para confirmar as ações planejadas.
Observação: o Terraform lida com a dependência implícita automaticamente criando um endereço IP estático antes da instância.
google_compute_address.vm_static_ip: criação em andamento...
google_compute_address.vm_static_ip: criação completa após 2s [id=projects/qwiklabs-gcp-03-4662a5b49176/regions/{{{project_0.default_region | "REGION"}}}/addresses/terraform-static-ip]
google_compute_instance.vm_instance: criação em andamento...
google_compute_instance.vm_instance: ainda criando... [10s elapsed]
google_compute_instance.vm_instance: criação completa após 15s [id=projects/qwiklabs-gcp-03-4662a5b49176/zones/{{{project_0.default_zone | "ZONE"}}}/instances/myinstance]
Apply complete! Recursos: 2 adicionados, 0 alterado, 0 destruído.
Verificar no console do Cloud
Verifique se os recursos foram criados no console do Google Cloud.
-
No console do Google Cloud, acesse o menu de navegação (
) e clique em Compute Engine > Instâncias de VM.
-
Observe que uma instância chamada myinstance é criada.

-
Verifique o endereço IP estático. No Menu de navegação (
), clique em Rede VPC > Endereços IP > Endereços IP externos.

Clique em Verificar meu progresso para conferir o endereço IP estático criado
Criar IP estático usando a dependência implícita
Clique em Verificar meu progresso para conferir se a VM foi criada
Criar instância de VM usando a dependência implícita
Tarefa 4: Criar dependência explícita
As dependências explícitas são usadas para informar dependências entre recursos que não ficam visíveis para o Terraform. Neste exemplo, considere que você vai executar na instância que espera usar um bucket do Cloud Storage específico, mas essa dependência será configurada no código do aplicativo e, assim, não ficará acessível ao Terraform. Nesse caso, use depends_on para declarar explicitamente a dependência.
- Para criar um novo arquivo, clique com o botão direito do mouse na pasta
tfinfra e, em seguida, em Novo arquivo.
- Nomeie o novo arquivo exp.tf e depois clique em OK.
- Adicione um bucket do Cloud Storage e uma instância com uma dependência explícita no bucket adicionando este código base em
exp.tf:
# Create a new instance that uses the bucket
resource "google_compute_instance" "another_instance" {
name = "terraform-instance-2"
machine_type = "e2-micro"
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
}
}
# Tells Terraform that this VM instance must be created only after the
# storage bucket has been created.
depends_on = [google_storage_bucket.example_bucket]
}
- Adicione o código a seguir para criar um bucket.
# 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"
}
}
Observação: os depósitos de armazenamento precisam ser globalmente exclusivos. Por isso, você precisará substituir UNIQUE-BUCKET-NAME por um nome válido e exclusivo para um bucket. Geralmente, uma boa maneira de criar um nome de bucket exclusivo é usar o nome do projeto e a data.
Observe que, no nosso código, a configuração da instância VM é adicionada antes do bucket GCS. Ao executar o Terraform apply você notará que a ordem em que os recursos são definidos em um arquivo de configuração do Terraform não afeta como o Terraform aplica suas alterações.
O código final é o mostrado abaixo:
resource "google_compute_instance" "another_instance" {
name = "terraform-instance-2"
machine_type = "e2-micro"
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
}
}
# Tells Terraform that this VM instance must be created only after the
# storage bucket has been created.
depends_on = [google_storage_bucket.example_bucket]
}
resource "google_storage_bucket" "example_bucket" {
name = "<UNIQUE-BUCKET-NAME>"
location = "US"
website {
main_page_suffix = "index.html"
not_found_page = "404.html"
}
}
-
Para salvar exp.tf, clique em Arquivo > Salvar.
-
Execute este comando para visualizar os recursos criados.
terraform plan
Se aparecer a solicitação, insira os detalhes para a criação da instância conforme mostrado abaixo:
- Execute este comando para visualizar a ordem de criação do recurso.
terraform apply
Se aparecer a solicitação, insira os detalhes para a criação da instância conforme mostrado abaixo:
-
Digite yes para confirmar as ações planejadas.
-
Observe que, devido à dependência explícita, a instância de computação é criada depois do bucket do Cloud Storage.
Enter a value: yes
google_storage_bucket.example_bucket: Creating...
google_storage_bucket.example_bucket: Creation complete after 1s [id=qwiklabs-gcp-03-4662a5b49176-abc]
google_compute_instance.another_instance: Creating...
google_compute_instance.another_instance: Still creating... [10s elapsed]
google_compute_instance.another_instance: Creation complete after 14s [id=projects/qwiklabs-gcp-03-4662a5b49176/zones/{{{project_0.default_zone | "ZONE"}}}/instances/terraform-instance-2]
Apply complete! Recursos: 2 adicionados, 0 alterado, 0 destruído.
Verificar no console do Cloud
Verifique se os recursos foram criados no console do Google Cloud.
-
No menu de navegação (
) do console do Google Cloud, clique em Compute Engine > Instâncias de VM.
-
Acesse a instância terraform-instance-2 que foi criada.
-
Verifique o bucket do Cloud Storage criado. No Menu de navegação (
), clique em Cloud Storage > Buckets.
Clique em Verificar meu progresso para conferir se o bucket foi criado
Criar um bucket do Cloud Storage usando a dependência explícita
Clique em Verificar meu progresso para conferir se a VM foi criada
Criar recurso de instância de VM usando dependência explícita
Observação: se ocorrer um erro, revise as etapas anteriores para verificar se sua configuração corresponde às instruções do laboratório. Se você não conseguir resolver o problema da configuração, faça o download e confira estas configurações concluídas:
Tarefa 5: Exibir o gráfico de dependência
- Para visualizar o gráfico de dependência do recurso criado, execute o seguinte comando:
terraform graph | dot -Tpng > graph.png
- Mude para o editor e observe um arquivo chamado graph.png que foi criado. Clique no arquivo para visualizar o gráfico de dependência.
Para entender como ler o gráfico, acesse esta página.
Revisão
Neste laboratório, você tem uma instância de VM com um endereço IP estático para saber como as dependências implícitas de recursos são tratadas com o Terraform. Você criou uma dependência explícita adicionando o argumento depend_on para que possa criar um bucket GCS antes de uma instância de VM. Você também visualizou o gráfico de dependência que o Terraform usa para rastrear a ordem de criação de recursos.
Fim do laboratório
Após concluir o laboratório, clique em "Encerrar o laboratório". O Google Skills remove os recursos usados e limpa a conta para você.
Você poderá classificar sua experiência neste 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 feedback, dar sugestões ou fazer correções, use a guia "Suporte".
Copyright 2026 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de empresas e produtos podem ser marcas registradas das empresas a que estão associados.