O Terraform permite criar, alterar e melhorar a infraestrutura de maneira segura e previsível. Ele é uma ferramenta de código aberto que codifica as APIs em arquivos de configuração declarativos para que sejam compartilhados entre a equipe, tratados como código, editados, revisados e organizados em versões.
Neste laboratório, você vai criar uma configuração do Terraform com um módulo para automatizar a implantação da infraestrutura do Google Cloud. Você vai implantar uma rede no modo automático com uma regra de firewall e duas instâncias de VM, como mostrado neste diagrama:
Objetivos
Neste laboratório, você aprenderá a fazer o seguinte:
Criar uma configuração para uma rede no modo automático
Criar uma configuração para uma regra de firewall
Criar um módulo para as instâncias de VM
Criar e implantar uma configuração
Verificar a implantação de uma configuração
Instalação
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 1: configurar o Terraform e o Cloud Shell
Nesta tarefa, você vai configurar o ambiente do Cloud Shell para usar o Terraform.
Instale o Terraform
O Terraform agora está integrado ao Cloud Shell. Verifique qual versão está instalada.
No console do Google Cloud, clique em Ativar o Cloud Shell ().
Se for solicitado, clique em Continuar.
Para confirmar se o Terraform está instalado, execute o seguinte comando:
terraform --version
O resultado será semelhante a este:
Terraform v1.5.7
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 funcionarão com o Terraform v1.5.7 e versões posteriores. Os downloads da versão mais recente do Terraform estão disponíveis no site do Terraform (em inglês). O Terraform é distribuído como um pacote binário para todas as plataformas e arquiteturas compatíveis, e o Cloud Shell usa o Linux de 64 bits.
Para criar um diretório para sua configuração do Terraform, execute o seguinte comando:
mkdir tfinfra
No Cloud Shell, clique em Abrir editor ().
Observação: se você receber a mensagem "Não foi possível carregar o editor de código porque os cookies de terceiros estão desativados", clique em Abrir em uma nova janela. O editor de código será aberto em uma nova guia. Retorne à guia original, clique em Abrir terminal e volte para a guia do editor de código. Será necessário retornar ao terminal do Cloud Shell periodicamente neste laboratório.
No painel esquerdo do editor de código, expanda a pasta tfinfra.
Inicialize o Terraform
O Terraform usa uma arquitetura baseada em plug-ins compatível com a maioria dos provedores de infraestrutura e serviço disponíveis. Cada "provedor" é um binário encapsulado distribuído separadamente do Terraform. Inicialize o Terraform definindo o Google como provedor.
Para criar um novo arquivo dentro de tfinfra, clique com o botão direito do mouse na pasta tfinfra e depois em New File.
Nomeie o arquivo como provider.tf e abra-o.
Copie o código no arquivo provider.tf:
provider "google" {}
Para salvar o arquivo provider.tf, clique em File > Save.
Para inicializar o Terraform, execute o seguinte comando:
cd tfinfra
terraform init
Agora está tudo pronto para trabalhar com o Terraform no Cloud Shell.
Tarefa 2: criar mynetwork e os recursos relacionados
Nesta tarefa, você vai criar a rede no modo automático mynetwork com a regra de firewall e duas instâncias de VM (mynet_vm_1 e mynet_vm_2).
Configure o mynetwork
Crie uma nova configuração e defina mynetwork.
Para criar um novo arquivo dentro de tfinfra, clique com o botão direito do mouse na pasta tfinfra e depois em New File.
Nomeie o arquivo como mynetwork.tf e abra-o.
Copie o seguinte código base no arquivo mynetwork.tf:
# Criar a rede mynetwork
resource [RESOURCE_TYPE] "mynetwork" {
name = [RESOURCE_NAME]
# As propriedades do RECURSO vão aqui
}
Esse modelo base é um ótimo ponto de partida para qualquer recurso do Google Cloud. No campo nome, você pode dar um nome ao recurso e, no campo tipo, pode especificar o recurso do Google Cloud que quer criar. Você também pode definir propriedades, que são opcionais para alguns recursos.
No arquivo mynetwork.tf, substitua [RESOURCE_TYPE] por "google_compute_network" (com as aspas).
No arquivo mynetwork.tf, substitua [RESOURCE_NAME] por "mynetwork" (com as aspas).
Adicione a seguinte propriedade ao arquivo mynetwork.tf:
auto_create_subnetworks = "true"
Por definição, uma rede no modo automático cria uma sub-rede em cada região. Portanto, você está definindo auto_create_subnetworks como true.
Verifique se o arquivo mynetwork.tf está semelhante a este:
# Criar a rede mynetwork
resource "google_compute_network" "mynetwork" {
name = "mynetwork"
# As propriedades do RECURSO vão aqui
auto_create_subnetworks = "true"
}
Para salvar o arquivo mynetwork.tf, clique em File > Save.
Configure a regra de firewall
Defina uma regra de firewall que permita o tráfego HTTP, SSH, RDP e ICMP em mynetwork.
Adicione o seguinte código base ao arquivo mynetwork.tf:
# Adicionar uma regra de firewall para permitir tráfego HTTP, SSH, RDP e ICMP em mynetwork
resource [RESOURCE_TYPE] "mynetwork-allow-http-ssh-rdp-icmp" {
name = [RESOURCE_NAME]
# As propriedades do RECURSO vão aqui
}
No arquivo mynetwork.tf, substitua [RESOURCE_TYPE] por "google_compute_firewall" (com as aspas).
Observação: o recurso google_compute_firewall é uma regra de firewall. Saiba mais sobre esse recurso específico na documentação do Terraform (em inglês).
No arquivo mynetwork.tf, substitua [RESOURCE_NAME] por "mynetwork-allow-http-ssh-rdp-icmp" (com as aspas).
Adicione a seguinte propriedade ao arquivo mynetwork.tf:
Observação: como essa regra de firewall depende da rede, você está usando a referência google_compute_network.mynetwork.self_link para instruir o Terraform a resolver esses recursos em uma ordem dependente. Nesse caso, a rede é criada antes da regra de firewall.
Adicione as seguintes propriedades ao arquivo mynetwork.tf:
A lista de regras allow especifica quais protocolos e portas são permitidos.
Verifique se o arquivo mynetwork.tf está semelhante a este:
# Criar a rede mynetwork
resource "google_compute_network" "mynetwork" {
name = "mynetwork"
# As propriedades do RECURSO vão aqui
auto_create_subnetworks = "true"
}
# Adicionar uma regra de firewall para permitir tráfego HTTP, SSH, RDP e ICMP em mynetwork
resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" {
name = "mynetwork-allow-http-ssh-rdp-icmp"
# As propriedades do RECURSO vão aqui
network = google_compute_network.mynetwork.self_link
allow {
protocol = "tcp"
ports = ["22", "80", "3389"]
}
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
}
Para salvar o arquivo mynetwork.tf, clique em File > Save.
Configure a instância de VM
Defina as instâncias de VM criando um módulo de instância de VM. Um módulo é uma configuração reutilizável dentro de uma pasta. Você usará esse módulo para as duas instâncias de VM deste laboratório.
Para criar uma nova pasta dentro de tfinfra, selecione a pasta tfinfra e clique em File > New Folder.
Nomeie a nova pasta como instance.
Para criar um novo arquivo dentro de instance, clique com o botão direito na pasta instance e depois em New File.
Nomeie o novo arquivo como main.tf e abra-o.
Você terá a seguinte estrutura de pastas no Cloud Shell:
Copie o seguinte código base para o arquivo main.tf:
resource [RESOURCE_TYPE] "vm_instance" {
name = [RESOURCE_NAME]
# As propriedades do RECURSO vão aqui
}
No arquivo main.tf, substitua [RESOURCE_TYPE] por "google_compute_instance" (com as aspas).
Observação: o recurso google_compute_instance é uma instância do Compute Engine. Saiba mais sobre esse recurso específico na documentação do Terraform (em inglês).
No arquivo main.tf, substitua [RESOURCE_NAME] por "${var.instance_name}" (com as aspas).
Você usará este módulo para as duas instâncias de VM, portanto, definirá o nome da instância como uma variável de entrada. Dessa forma, você vai controlar o nome da variável no arquivo mynetwork.tf. Saiba mais sobre variáveis de entrada no guia do Terraform sobre esse tema (em inglês).
Adicione estas propriedades ao arquivo main.tf:
zone = "${var.instance_zone}"
machine_type = "${var.instance_type}"
Essas propriedades definem a zona e o tipo de máquina da instância como variáveis de entrada.
Essa propriedade define o disco de inicialização para usar a imagem do SO Debian 11. Como as duas instâncias de VM usarão a mesma imagem, é possível codificar essa propriedade no módulo.
Adicione estas propriedades ao arquivo main.tf:
network_interface {
network = "${var.instance_network}"
access_config {
# Alocar um IP NAT um para um à instância
}
}
Essa propriedade define a interface de rede ao fornecer o nome da rede como uma variável de entrada e a configuração de acesso. Deixar a configuração de acesso vazia gera um endereço IP externo temporário (obrigatório neste laboratório). Para criar instâncias com apenas um endereço IP interno, remova a seção access_config. Para mais informações, consulte a documentação do Terraform (em inglês).
Verifique se a aparência do arquivo main.tf é semelhante a esta, incluindo as chaves {}
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 = "${var.instance_network}"
access_config {
# Alocar um IP NAT um para um à instância
}
}
}
Para salvar o arquivo main.tf, clique em File > Save.
Para criar um novo arquivo dentro de instance, clique com o botão direito na pasta instance e depois em New File.
Nomeie o novo arquivo como variables.tf e abra-o.
Defina as quatro variáveis de entrada em variables.tf.
Quando você atribui um valor padrão à variável instance_type, ela passa a ser opcional. As variáveis instance_name, instance_zone e instance_network são obrigatórias, e você as definirá no arquivo mynetwork.tf.
Para salvar o arquivo variables.tf, clique em File > Save.
Adicione estas instâncias de VM ao arquivo mynetwork.tf:
Esses recursos estão utilizando o módulo na pasta instance e fornecem o nome, a zona e a rede como entradas. As instâncias dependem de uma rede VPC, então você está usando a referência google_compute_network.mynetwork.self_link para instruir o Terraform a resolver esses recursos por ordem de dependência. Nesse caso, a rede é criada antes da instância.
Observação: quando você cria um módulo do Terraform, ele pode ser reutilizado em várias configurações. Em vez de criar seu próprio módulo, também é possível usar os módulos atuais no registro do módulo Terraform (em inglês).
Para salvar o arquivo mynetwork.tf, clique em File > Save.
Verifique se o arquivo mynetwork.tf é semelhante a isso, incluindo as chaves {}
# Create the mynetwork network
resource "google_compute_network" "mynetwork" {
name = "mynetwork"
# RESOURCE properties go here
auto_create_subnetworks = "true"
}
# Add a firewall rule to allow HTTP, SSH, RDP and ICMP traffic on mynetwork
resource "google_compute_firewall" "mynetwork-allow-http-ssh-rdp-icmp" {
name = "mynetwork-allow-http-ssh-rdp-icmp"
# RESOURCE properties go here
network = google_compute_network.mynetwork.self_link
allow {
protocol = "tcp"
ports = ["22", "80", "3389"]
}
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
}
# Create the mynet-vm-1 instance
module "mynet-vm-1" {
source = "./instance"
instance_name = "mynet-vm-1"
instance_zone = "{{{project_0.default_zone|Zone}}}"
instance_network = google_compute_network.mynetwork.self_link
}
# Create the mynet-vm-2" instance
module "mynet-vm-2" {
source = "./instance"
instance_name = "mynet-vm-2"
instance_zone = "{{{project_0.default_zone_2|Zone 2}}}"
instance_network = google_compute_network.mynetwork.self_link
}
Crie mynetwork e os recursos relacionados
É hora de aplicar a configuração de mynetwork.
Para reescrever os arquivos de configuração do Terraform em formato e estilo canônicos, execute o seguinte comando:
terraform fmt
O resultado será semelhante a este:
mynetwork.tf
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:
Para inicializar o Terraform, execute o seguinte comando:
terraform init
O resultado será semelhante a este:
Initializing modules...
- mynet-vm-2 in instance
- mynet-vm-2 in instance
...
O Terraform foi inicializado com sucesso.
Observação: se ocorrer um erro, revise as etapas anteriores para verificar se a estrutura de pastas/arquivos está correta. Se você não conseguir resolver o problema de configuração, consulte as configurações concluídas acima. Depois que você corrigir o problema, execute novamente o comando anterior.
Para criar um plano de execução, execute o seguinte comando:
terraform plan
O resultado será semelhante a este:
...
Plan: 4 to add, 0 to change, 0 to destroy.
...
O Terraform determinou que os quatro recursos a seguir precisam ser adicionados:
Nome
Descrição
mynetwork
Rede VPC
mynetwork-allow-http-ssh-rdp-icmp
Regra de firewall para permitir HTTP, SSH, RDP e ICMP
mynet-vm-2
Instância de VM em
mynet-vm-2
Instância de VM em
Para aplicar as alterações desejadas, execute o seguinte comando:
Clique em Verificar meu progresso para ver o objetivo.
Criar mynetwork e os recursos relacionados
Observação: se ocorrer um erro durante a execução, revise as etapas anteriores para verificar se a estrutura de pastas/arquivos está correta. Se não conseguir resolver o problema de configuração, consulte as configurações concluídas acima. Depois que você corrigir o problema, execute novamente o comando anterior.
Tarefa 3: verificar a implantação
Verifique se os recursos foram criados no console do Google Cloud.
Verifique sua rede no console do Cloud
No console do Cloud, acesse o Menu de navegação () e clique em Rede VPC > Redes VPC.
Consulte a rede VPC mynetwork com uma sub-rede em cada região.
No Menu de navegação, clique em Rede VPC > Firewall.
Classifique as regras de firewall por Rede.
Veja a regra de firewall mynetwork-allow-http-ssh-rdp-icmp para mynetwork.
Verifique suas instâncias de VM no console do Cloud
No Menu de navegação (), clique em Compute Engine > Instâncias de VM.
Confira as instâncias mynet-vm-1 e mynet-vm-2.
Anote o endereço IP interno da mynet-vm-2.
Em mynet-vm-1, clique em SSH para iniciar um terminal e se conectar.
Para testar a conectividade com o endereço IP interno de mynet-vm-2, execute o comando abaixo no terminal SSH (substituindo o endereço IP interno de mynet-vm-2 pelo valor que você anotou):
ping -c 3 <Enter mynet-vm-2's internal IP here>
Observação: isso deve funcionar porque as duas instâncias de VM estão na mesma rede e a regra de firewall permite o tráfego ICMP.
Tarefa 4: revise
Neste laboratório, você criou uma configuração do Terraform com um módulo para automatizar a implantação da infraestrutura do Google Cloud. À medida que a configuração muda, o Terraform pode criar planos de execução adicionais para você implementar na sua configuração geral passo a passo.
O módulo de instância permitiu que você reutilizasse a mesma configuração para vários recursos, fornecendo propriedades como variáveis de entrada. Você pode usar a configuração e o módulo criados como ponto de partida para futuras implantações.
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.
Os laboratórios criam um projeto e recursos do Google Cloud por um período fixo
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.
No canto superior esquerdo da tela, clique em Começar o laboratório
Usar a navegação anônima
Copie o nome de usuário e a senha fornecidos para o laboratório
Clique em Abrir console no modo anônimo
Fazer login no console
Faça login usando suas credenciais do laboratório. Usar outras credenciais pode causar erros ou gerar cobranças.
Aceite os termos e pule a página de recursos de recuperação
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.
Neste laboratório, você criará uma configuração do Terraform com um módulo para automatizar a implantação da infraestrutura do GCP.
Duração:
Configuração: 0 minutos
·
Tempo de acesso: 60 minutos
·
Tempo para conclusão: 60 minutos