Este guia ajuda você a entender, implantar e usar a Solução de início rápido do web app dinâmico com Python e JavaScript. Essa solução demonstra como criar e executar sites dinâmicos no Google Cloud.
A implantação e o gerenciamento desse aplicativo servem como uma amostra real da criação de um aplicativo dinâmico da Web com muitas ferramentas e produtos que podem ser usados para aplicativos sem servidor. Você poderá implantar essa solução se quiser saber mais sobre o seguinte:
- Aplicativo Django REST Framework (DRF)
- Aplicativo de vitrine
- Site apoiado pelo banco de dados
Essa solução implanta o app Avocano. Esta é uma vitrine falsa, na qual os usuários podem tentar comprar um item. No entanto, se um usuário adiciona um item ao carrinho, a loja revela que ele é falso (Avoca – não!). Embora não seja possível comprar um abacate, o aplicativo ilustra o gerenciamento de inventário diminuindo em um a quantidade de produtos disponíveis.
O Avocano mostra a combinação de uma API com tecnologia do Cloud Run, um banco de dados do Cloud SQL para PostgreSQL e um front-end do Firebase.
Consulte o código-fonte do aplicativo Avocano.
Objetivos
Neste guia de solução, você aprenderá a usar o Google Cloud para executar as seguintes tarefas:
- Implantar um aplicativo da Web acessível publicamente
- Conectar um aplicativo a um banco de dados do Google Cloud seguindo as práticas de segurança recomendadas:
- Como usar o Secret Manager para armazenar senhas, chaves e certificados.
- Como conceder apenas as permissões do IAM necessárias para executar a tarefa. Isso também é conhecido como aplicar o princípio do menor privilégio.
- Implantar e operar os serviços de back-end
- Conectar um aplicativo a um banco de dados do Google Cloud seguindo as práticas de segurança recomendadas:
- Personalizar seu aplicativo
- Fazer alterações no conteúdo ou modificar o aplicativo para adicionar um recurso
- Criar e reimplantar com segurança
Produtos usados
Veja a seguir um resumo dos produtos do Google Cloud que essa solução usa:
- Cloud Run: um serviço totalmente gerenciado que permite criar e implantar apps conteinerizados sem servidor. O Google Cloud lida com o escalonamento e outras tarefas de infraestrutura para que você possa se concentrar na lógica de negócios do seu código.
- Jobs: processamento de tarefas com base em contêineres.
- Cloud Build: um serviço que permite importar o código-fonte de repositórios ou espaços do Cloud Storage, executar uma versão e produzir artefatos, como contêineres do Docker ou arquivos Java.
- Cloud SQL para PostgreSQL: um banco de dados PostgreSQL baseado na nuvem totalmente gerenciado na infraestrutura do Google Cloud.
- Secret Manager: um serviço que permite armazenar, gerenciar e acessar secrets como blobs binários ou strings de texto. É possível usar o Secret Manager para armazenar senhas de bancos de dados, chaves de API ou certificados TLS necessários para um aplicativo no ambiente de execução.
- Cloud Storage: um serviço pronto para empresas que oferece armazenamento de objetos de baixo custo e sem limite para diversos tipos de dados. Os dados podem ser acessados de dentro e de fora do Google Cloud e são replicados geograficamente de modo redundante.
- Firebase: uma plataforma de desenvolvimento que permite criar, lançar e monitorar aplicativos para iOS, Android e Web.
Arquitetura
O diagrama a seguir mostra a arquitetura da solução:
Componentes e configuração
A arquitetura inclui os seguintes componentes:
- O cliente da Web está hospedado no Firebase Hosting.
- O cliente da Web chama um back-end de API escrito em Python que é executado como um serviço no Cloud Run.
- A configuração e outros secrets do aplicativo Python são armazenados no Secret Manager.
- O Cloud SQL para PostgreSQL é usado como back-end do banco de dados relacional do aplicativo Python.
- Os recursos estáticos do aplicativo e as imagens de contêiner são armazenados no Cloud Storage.
Custo
Para uma estimativa dos custos dos recursos do Google Cloud usados pela solução aplicativo dinâmico da Web, consulte a estimativa pré-calculada na Calculadora de preços do Google Cloud.
Use a estimativa como um ponto de partida para calcular o custo da implantação. É possível modificar a estimativa para refletir as alterações de configuração planejadas para os recursos usados na solução.
A estimativa pré-calculada tem como base suposições específicas, incluindo o seguinte:
- Os locais do Google Cloud em que os recursos são implantados.
- A quantidade de tempo em que os recursos são usados.
Antes de começar
Para implantar essa solução, primeiro você precisa de um projeto do Google Cloud e de algumas permissões do IAM.
Criar ou escolher um projeto do Google Cloud
Ao implantar a solução, escolha o projeto do Google Cloud em que os recursos serão implantados. Ao decidir entre usar um projeto existente ou criar um, considere os seguintes fatores:
- Se você criar um projeto para a solução, quando não precisar mais da implantação, será possível excluir o projeto e evitar o faturamento contínuo. Se você usar um projeto existente, será preciso excluir a implantação quando não precisar mais dela.
- Usar um novo projeto pode ajudar a evitar conflitos com recursos provisionados anteriormente, como recursos usados em cargas de trabalho de produção.
Se você quiser implantar a solução em um novo projeto, crie o projeto antes de iniciar a implantação.
Para criar um projeto, siga estas etapas:
-
In the Google Cloud console, go to the project selector page.
-
Click Create project.
-
Name your project. Make a note of your generated project ID.
-
Edit the other fields as needed.
-
Click Create.
Receber as permissões de IAM necessárias
Para iniciar o processo de implantação, você precisa das permissões do Identity and Access Management (IAM) listadas na tabela a seguir. Se você tem o
papel básico
roles/owner
no projeto em que planeja implantar a solução, você
já tem todas as permissões necessárias. Se você não tiver o papel roles/owner
, peça ao administrador para conceder essas permissões (ou os papéis que as incluam) a você.
Permissão do IAM necessária | Papel predefinido que inclui as permissões necessárias |
---|---|
|
Administrador do Service Usage ( roles/serviceusage.serviceUsageAdmin ) |
|
Administrador da conta de serviço ( roles/iam.serviceAccountAdmin ) |
|
Administrador de projetos do IAM ( roles/resourcemanager.projectIamAdmin ) |
config.deployments.create config.deployments.list |
Administrador do Cloud Infrastructure Manager ( roles/config.admin ) |
Conta de serviço criada para a solução
Se você iniciar o processo de implantação pelo console, o Google criará uma conta de serviço para implantar a solução em seu nome (e excluir a implantação mais tarde, se você quiser). Essa conta de serviço recebe determinadas permissões do IAM temporariamente, ou seja, as permissões são revogadas automaticamente após a conclusão das operações de implantação e exclusão da solução. O Google recomenda que, após a exclusão da implantação, você exclua a conta de serviço, conforme descrito mais adiante neste guia.
Ver os papéis atribuídos à conta de serviço
Esses papéis são listados aqui caso um administrador do projeto ou da organização do Google Cloud precise dessas informações.
roles/cloudsql.admin
roles/cloudsql.admin
roles/firebasehosting.admin
roles/iam.serviceAccountAdmin
roles/iam.serviceAccountUser
roles/resourcemanager.projectIamAdmin
roles/run.admin
roles/secretmanager.admin
roles/storage.admin
roles/compute.networkAdmin
roles/compute.admin
implantar a solução
Para ajudá-lo a implantar essa solução com esforço mínimo, é fornecida uma configuração do Terraform no GitHub. A configuração do Terraform define todos os recursos do Google Cloud necessários para a solução.
É possível implantar a solução usando um dos seguintes métodos:
Pelo console: use esse método se quiser testar a solução com a configuração padrão e ver como ela funciona. O Cloud Build implanta todos os recursos necessários para a solução. Quando você não precisar mais da solução implantada, será possível excluí-la no console. Todos os recursos criados depois da implantação da solução talvez precisem ser excluídos separadamente.
Para usar esse método de implantação, siga as instruções em Implantar no console.
Com a CLI do Terraform: use esse método se quiser personalizar a solução ou automatizar o provisionamento e o gerenciamento dos recursos usando a abordagem de infraestrutura como código (IaC). Faça o download da configuração do Terraform no GitHub, personalize o código conforme necessário e implante a solução usando a CLI do Terraform. Depois de implantar a solução, é possível continuar a usar o Terraform para gerenciá-la.
Para usar esse método de implantação, siga as instruções em Implantar usando a CLI do Terraform.
Implantar pelo console
Conclua as etapas a seguir para implantar a solução pré-configurada.
No catálogo de Soluções de início rápido do Google Cloud, acesse a solução do web app dinâmico com Python e JavaScript.
Acessar a solução do web app dinâmico com Python e JavaScript
Revise as informações fornecidas na página, como o custo estimado da solução e o tempo estimado de implantação.
Quando estiver tudo pronto para começar a implantar a solução, clique em Implantar.
Veja um guia interativo passo a passo.
Conclua estas etapas no guia interativo.
Anote o nome inserido para a implantação. Ele será necessário depois de excluir a implantação.
Quando você clica em Implantar, a página Implantações da solução é exibida. O campo Status nesta página mostra Implantação.
Aguarde a solução ser implantada.
Se a implantação falhar, o campo Status vai mostrar Falha. Use o registro do Cloud Build para diagnosticar os erros. Para mais informações, consulte Erros ao implantar no console.
Depois que a implantação for concluída, o campo Status mudará para Implantado.
Para visualizar e usar a solução, clique no menu more_vertAções e selecione Explorar esta solução.
Para mais informações sobre como explorar a implantação da solução, consulte Explorar a implantação.
Quando você não precisar mais da solução, exclua a implantação para evitar o faturamento contínuo dos recursos do Google Cloud. Para mais informações, consulte Excluir a implantação.
Implantar usando a CLI do Terraform
Nesta seção, descrevemos como personalizar a solução ou automatizar o provisionamento e o gerenciamento dela usando a CLI do Terraform. As soluções que você implanta usando a CLI do Terraform não são exibidas na página Implantações da solução no console do Google Cloud.
Configurar o cliente do Terraform
É possível executar o Terraform no Cloud Shell ou no seu host local. Neste guia, descrevemos como executar o Terraform no Cloud Shell, que tem o Terraform pré-instalado e configurado para autenticação com o Google Cloud.
O código do Terraform para esta solução está disponível em um repositório do GitHub.
Clone o repositório do GitHub no Cloud Shell.
Você verá um prompt para confirmar o download do repositório do GitHub para o Cloud Shell.
Clique em Confirmar.
O Cloud Shell é iniciado em uma guia separada do navegador, e o código do Terraform é transferido por download para o diretório
$HOME/cloudshell_open
do seu ambiente do Cloud Shell.No Cloud Shell, verifique se o diretório de trabalho atual é
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Esse é o diretório que contém os arquivos de configuração do Terraform para a solução. Se você precisar mudar para esse diretório, execute o seguinte comando:cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
Inicialize o Terraform executando o seguinte comando:
terraform init
Aguarde até ver a seguinte mensagem:
Terraform has been successfully initialized!
Configurar as variáveis do Terraform
O código do Terraform que você salvou inclui variáveis que podem ser usadas para personalizar a implantação com base nos seus requisitos. Por exemplo, é possível especificar o projeto do Google Cloud e a região em que você quer que a solução seja implantada.
Verifique se o diretório de trabalho atual é
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Se não estiver, acesse esse diretório.No mesmo diretório, crie um arquivo de texto chamado
terraform.tfvars
.No arquivo
terraform.tfvars
, copie o snippet de código a seguir e defina valores para as variáveis necessárias.- Siga as instruções fornecidas como comentários no snippet de código.
- Esse snippet de código inclui apenas as variáveis para as quais você precisa definir
valores. A configuração do Terraform inclui outras variáveis que têm
valores padrão. Para revisar todas as variáveis e os valores padrão, consulte
o arquivo
variables.tf
disponível no diretório$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. - Verifique se cada valor definido no arquivo
terraform.tfvars
corresponde ao tipo da variável, conforme declarado no arquivovariables.tf
. Por exemplo, se o tipo definido para uma variável no arquivovariables.tf
forbool
, especifiquetrue
oufalse
como o valor dessa variável no arquivoterraform.tfvars
.
# ID of the project in which you want to deploy the solution. project_id = "PROJECT_ID" # Google Cloud region where you want to deploy the solution. # Example: us-central1 region = "REGION" # Whether or not to enable underlying APIs in this solution. # Example: true enable_apis = "ENABLE_APIS" # Initial image to deploy to Cloud Run service. # Example: gcr.io/hsa-public/developer-journey/app initial_run_image = "INITIAL_RUN_IMAGE" # Identifier for the deployment. Used in some resource names. # Example: dev-journey deployment_name = "DEPLOYMENT_NAME" # Whether or not to initialize a Firestore instance. # Example: true init_firestore = "INIT_FIRESTORE"
Para informações sobre os valores que podem ser atribuídos às variáveis obrigatórias, consulte:
project_id
: Identifying projects.regions
: Regiões disponíveis:.enable_apis
: defina comotrue
para ativar as APIs subjacentes nesta solução.initial_run_image
: o URL da imagem inicial que será implantada no serviço do Cloud Run.deployment_name
: identificador da implantação.init_firestore
: defina comotrue
para ativar a inicialização de uma instância do Firestore.
Validar e revisar a configuração do Terraform
Verifique se o diretório de trabalho atual é
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Se não estiver, acesse esse diretório.Verifique se a configuração do Terraform não tem erros:
terraform validate
Se o comando retornar algum erro, faça as correções necessárias na configuração e execute o comando
terraform validate
novamente. Repita essa etapa até o comando retornar a seguinte mensagem:Success! The configuration is valid.
Analise os recursos definidos na configuração:
terraform plan
O Terraform solicita que você insira valores para as variáveis que não têm valores padrão. Insira os valores obrigatórios.
A saída do comando
terraform plan
é uma lista dos recursos provisionados pelo Terraform quando você aplica a configuração.Se você quiser fazer alterações, edite a configuração e execute os comandos
terraform validate
eterraform plan
novamente.
Provisionar os recursos
Quando nenhuma outra alteração for necessária na configuração, implante os recursos:
Verifique se o diretório de trabalho atual é
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Se não estiver, acesse esse diretório.Aplique a configuração do Terraform:
terraform apply
O Terraform solicita que você insira valores para as variáveis que não têm valores padrão. Insira os valores obrigatórios.
O Terraform exibe uma lista dos recursos que serão criados.
Quando for solicitado que você execute as ações, digite
yes
.O Terraform exibe mensagens mostrando o progresso da implantação.
Se não for possível concluir a implantação, o Terraform exibirá os erros que causaram a falha. Analise as mensagens de erro e atualize a configuração para corrigi-los. Em seguida, execute o comando
terraform apply
novamente. Para receber ajuda com a solução de problemas do Terraform, consulte Erros ao implantar a solução usando a CLI do Terraform.Depois que todos os recursos forem criados, o Terraform exibirá a seguinte mensagem:
Apply complete!
Quando você não precisar mais da solução, exclua a implantação para evitar o faturamento contínuo dos recursos do Google Cloud. Para mais informações, consulte Excluir a implantação.
Explore a implantação
Você implantou seu aplicativo dinâmico de aplicativo da Web de amostra. A implantação da solução consiste em vários serviços principais que foram integrados a um único projeto do Google Cloud, incluindo:
- Um front-end de cliente do Firebase Hosting escrito com o framework Lit.
- Um servidor de API do Cloud Run, escrito em Django usando o framework Django REST.
- Um banco de dados do Cloud SQL usando o PostgreSQL.
Para ver os recursos do Google Cloud implantados e as configurações deles, faça um tour interativo.
Opcional: personalizar seu aplicativo
Para personalizar a solução do web app dinâmico com Python e JavaScript, faça alterações no front-end e no back-end do aplicativo e reimplante. Para seguir as instruções da tarefa diretamente no editor do Cloud Shell, clique em "Orientações".
Essa tarefa leva cerca de 15 minutos para ser concluída.
Excluir a implantação
Quando você não precisar mais da implantação da solução, exclua a implantação para evitar o faturamento contínuo dos recursos criados.
Excluir a implantação pelo console
Use este procedimento se você tiver implantado a solução pelo console.
No console do Google Cloud, acesse a página Implantações da solução.
Selecione o projeto que contém a implantação que você quer excluir.
Localize a implantação que você quer excluir.
Clique em
Ações e selecione Excluir.Digite o nome da implantação e clique em Confirmar.
O campo Status mostra Excluindo.
Se a exclusão falhar, consulte as orientações de solução de problemas em Erro ao excluir uma implantação.
Quando você não precisar mais do projeto do Google Cloud usado na solução, exclua-o. Para mais informações, consulte Opcional: excluir o projeto.
Excluir a implantação usando a CLI do Terraform
Use este procedimento se você implantou a solução usando a CLI do Terraform.
No Cloud Shell, verifique se o diretório de trabalho atual é
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Se não estiver, acesse esse diretório.Remova os recursos provisionados pelo Terraform:
terraform destroy
O Terraform exibe uma lista dos recursos que serão destruídos.
Quando for solicitado que você execute as ações, digite
yes
.O Terraform exibe as mensagens que mostram o progresso. Depois que todos os recursos forem excluídos, o Terraform exibirá a seguinte mensagem:
Destroy complete!
Se a exclusão falhar, consulte as orientações de solução de problemas em Erro ao excluir uma implantação.
Quando você não precisar mais do projeto do Google Cloud usado na solução, exclua-o. Para mais informações, consulte Opcional: excluir o projeto.
Excluir o projeto
Se você tiver implantado a solução em um novo projeto do Google Cloud e não for mais usar o projeto, exclua-o seguindo estas etapas:
- No Console do Google Cloud, acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir.
- No prompt, digite o ID do projeto e clique em Encerrar.
Se você decidir manter o projeto, exclua a conta de serviço criada para essa solução, conforme descrito na próxima seção.
Opcional: excluir a conta de serviço
Se você excluiu o projeto usado para a solução, pule esta seção.
Como mencionado anteriormente neste guia, quando você implantou a solução, uma conta de serviço foi criada em seu nome. A conta de serviço recebeu determinadas permissões do IAM temporariamente, ou seja, as permissões foram revogadas automaticamente após a conclusão das operações de implantação e exclusão da solução, mas a conta de serviço não foi excluída. O Google recomenda que você exclua essa conta de serviço.
Se você implantou a solução pelo console do Google Cloud, acesse a página Implantações da solução. Se você já estiver nessa página, atualize o navegador. Um processo é acionado em segundo plano para excluir a conta de serviço. Nenhuma outra ação é necessária.
Se você implantou a solução usando a CLI do Terraform, conclua as etapas a seguir:
No Console do Google Cloud, acesse a página Contas de serviço.
Selecione o projeto usado para a solução.
Selecione a conta de serviço que você quer excluir.
O ID de e-mail da conta de serviço que foi criada para a solução está no seguinte formato:
goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
O ID de e-mail contém os seguintes valores:
- DEPLOYMENT_NAME: o nome da implantação.
- NNN: um número aleatório de três dígitos.
- PROJECT_ID é o ID do projeto em que você implantou a solução.
Clique em Excluir.
Solucionar erros
As ações que podem ser realizadas para diagnosticar e resolver erros dependem do método de implantação e da complexidade dele.
Erros ao implantar usando o console
Se a implantação falhar quando você usar o console, faça o seguinte:
Acesse a página Implantações da solução.
Se a implantação falhou, o campo Status mostra Falha.
Para ver os detalhes dos erros que causaram a falha, faça o seguinte:
Clique em
Ações.Selecione Ver registros do Cloud Build.
Analise o registro do Cloud Build e tome as medidas apropriadas para resolver o problema que causou a falha.
Erros ao implantar usando a CLI do Terraform
Se a implantação falhar quando você usar o Terraform, a saída do comando terraform
apply
incluirá mensagens de erro que podem ser analisadas para diagnosticar o problema.
Os exemplos nas seções a seguir mostram erros de implantação que podem ser encontrados ao usar o Terraform.
Erro de API não ativada
Se você criar um projeto e tentar implantar imediatamente a solução no novo projeto, a implantação poderá falhar e apresentar um erro como este:
Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.
Se esse erro ocorrer, aguarde alguns minutos e execute o comando terraform apply
novamente.
Erro ao excluir uma implantação
Em alguns casos, as tentativas de excluir uma implantação podem falhar:
- Depois de implantar uma solução no console, se você alterar qualquer recurso provisionado por ela e tentar excluir a implantação, a exclusão poderá falhar. O campo Status na página Implantações da solução mostra Com falha e o registro do Cloud Build mostra a causa do erro.
- Depois de implantar uma solução usando a CLI do Terraform, se você alterar qualquer recurso
usando uma interface diferente do Terraform (por exemplo, o console)
e, em seguida, tentar excluir a implantação, a exclusão poderá falhar. As
mensagens na saída do comando
terraform destroy
mostram a causa do erro.
Revise os registros de erro e as mensagens, identifique e exclua os recursos que causaram o erro e tente excluir a implantação novamente.
Se uma implantação baseada em console não for excluída e não for possível diagnosticar o erro usando o registro do Cloud Build, será possível excluir a implantação usando a CLI do Terraform, conforme descrito na próxima seção.
Excluir uma implantação com base no console usando a CLI do Terraform
Nesta seção, descrevemos como excluir uma implantação baseada em console em caso de erros ao tentar excluí-la no console. Nesta abordagem, faça o download da configuração do Terraform para a implantação que você quer excluir e use a CLI do Terraform para excluir a implantação.
Identifique a região em que o código, os registros e outros dados do Terraform da implantação são armazenados. Essa região pode ser diferente da região selecionada durante a implantação da solução.
No console do Google Cloud, acesse a página Implantações de soluções.
Selecione o projeto que contém a implantação que você quer excluir.
Na lista de implantações, identifique a linha da implantação que você quer excluir.
Clique em
Consultar todo o conteúdo da linha.Na coluna Local, observe o segundo local, conforme destacado no exemplo a seguir:
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Crie variáveis de ambiente para o ID do projeto, a região e o nome da implantação que você quer excluir:
export REGION="REGION" export PROJECT_ID="PROJECT_ID" export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
Nesses comandos, substitua o seguinte:
- REGION: o local que você anotou anteriormente neste procedimento.
- PROJECT_ID: o ID do projeto em que você implantou a solução.
- DEPLOYMENT_NAME: o nome da implantação que você quer excluir.
Encontre o ID da revisão mais recente da implantação que você quer excluir:
export REVISION_ID=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .latestRevision -r) echo $REVISION_ID
O resultado será assim:
projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
Encontre o local do Cloud Storage na configuração do Terraform para a implantação:
export CONTENT_PATH=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \ | jq .applyResults.content -r) echo $CONTENT_PATH
Veja a seguir um exemplo da saída desse comando:
gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
Faça o download da configuração do Terraform do Cloud Storage para o Cloud Shell:
gsutil cp -r $CONTENT_PATH $HOME cd $HOME/content/infra
Aguarde até que a mensagem
Operation completed
seja exibida, conforme mostrado no exemplo a seguir:Operation completed over 45 objects/268.5 KiB
Inicialize o Terraform:
terraform init
Aguarde até ver a seguinte mensagem:
Terraform has been successfully initialized!
Remova os recursos implantados:
terraform destroy
O Terraform exibe uma lista dos recursos que serão destruídos.
Se forem exibidos avisos sobre variáveis não declaradas, ignore-os.
Quando for solicitado que você execute as ações, digite
yes
.O Terraform exibe as mensagens que mostram o progresso. Depois que todos os recursos forem excluídos, o Terraform exibirá a seguinte mensagem:
Destroy complete!
Exclua o artefato de implantação:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
Aguarde alguns segundos e verifique se o artefato de implantação foi excluído:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .error.message
Se a saída mostrar
null
, aguarde alguns segundos e execute o comando novamente.Depois que o artefato de implantação for excluído, uma mensagem, como mostrado no exemplo a seguir, será exibida:
Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
Não é possível atribuir o erro do endereço solicitado
Quando você executa o comando terraform apply
, pode ocorrer um erro cannot assign requested address
, com uma mensagem como esta:
Error: Error creating service account:
Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
dial tcp [2001:db8:ffff:ffff::5f]:443:
connect: cannot assign requested address
Se esse erro ocorrer, execute o comando terraform apply
novamente.
Enviar feedback
As Soluções de início rápido são apenas para fins informativos e não são produtos oficialmente compatíveis. O Google pode alterar ou remover soluções sem aviso prévio.
Para resolver erros, analise os registros do Cloud Build e a saída do Terraform.
Para enviar feedback, faça o seguinte:
- Para ver a documentação, os tutoriais no console ou a solução, use o botão Enviar feedback na página.
Para códigos não modificados, crie problemas no repositório apropriado do GitHub:
Os problemas do GitHub são analisados com base no melhor esforço e não se destinam a perguntas gerais de uso.
- Para problemas com produtos usados na solução, entre em contato com o Cloud Customer Care.
A seguir
Para saber mais sobre os produtos e recursos do Google Cloud, consulte: