Esta página fornece respostas para perguntas comuns encontradas ao usar o Terraform para gerenciar recursos no Google Cloud, principalmente sobre interações com a API e como começar.
Como começar a usar o Terraform
Esta seção aborda conceitos básicos e etapas iniciais para novos usuários do Terraform.
O que é infraestrutura como código (IaC) e por que devo usar o Terraform?
A infraestrutura como código (IaC) é a prática de gerenciar e provisionar infraestrutura de computação usando arquivos de definição legíveis por máquina. Para uma visão geral completa dos conceitos e benefícios da IaC, consulte O que é infraestrutura como código?.
O Terraform é uma ferramenta de IaC de código aberto usada para definir, provisionar e gerenciar recursos na nuvem e locais. Para saber mais sobre as vantagens de usar o Terraform no seu fluxo de trabalho de IaC, consulte os Benefícios de usar o Terraform.
Como faço para instalar o Terraform e executar minha primeira configuração?
Para começar a usar o Terraform, primeiro faça o download e instale a
CLI do Terraform na sua máquina local. As instruções estão disponíveis no
site do HashiCorp Terraform. Após a
instalação, é possível criar um arquivo de configuração do Terraform, definir um recurso (como um
bucket do Cloud Storage) e usar terraform init para inicializar o
diretório de trabalho, terraform plan para visualizar as mudanças e terraform apply
para aplicá-las.
O que é a linguagem de configuração da HashiCorp (HCL) e onde posso aprender a sintaxe dela?
A linguagem de configuração HashiCorp (HCL) é usada pelo Terraform. Ele foi projetado para ser legível para humanos e máquinas, para uma escrita clara e eficiente e para o entendimento das definições de infraestrutura. A HCL é compatível com vários recursos, como variáveis, expressões, funções e módulos. Você pode aprender a sintaxe da HCL na documentação oficial do Terraform da HashiCorp, que oferece guias e exemplos abrangentes.
Onde posso encontrar exemplos de configurações do Terraform para recursos do Google Cloud ?
Você pode encontrar vários exemplos de configurações do Terraform para Google Cloud:
HashiCorp Terraform Registry:o Terraform Registry oficial para o provedor Google Cloud contém documentação e exemplos de todos os recursos e fontes de dados.
Google Cloud Exemplos do Terraform:o Google oferece vários exemplos do Terraform que demonstram como implantar e gerenciar recursos comuns do Google Cloud .
Repositórios do GitHub:muitos repositórios de código aberto, incluindo a organização
terraform-google-modulesdo GitHub, oferecem exemplos e módulos reutilizáveis.
Como posso gerenciar e testar configurações complexas do Terraform, especialmente quando lido com muitos recursos?
Para configurações complexas, use os recursos do Terraform projetados para escalonabilidade e capacidade de manutenção:
Módulos:encapsulam e reutilizam padrões comuns de infraestrutura.
Espaços de trabalho:gerencie várias instâncias distintas de uma única configuração.
terraform planeterraform validate:use esses comandos com frequência para validar a sintaxe e visualizar as mudanças sem implantação real.Recursos de segmentação (use com cuidado): para testar partes específicas, você pode usar temporariamente
-targetcomterraform applyouterraform destroy, embora isso geralmente seja desencorajado para operações rotineiras devido a complexidades de gerenciamento de estado.Ambientes dedicados:implante em ambientes de desenvolvimento ou teste para testar antes da produção.
Google Cloud Perguntas sobre API
Essas perguntas abordam dúvidas comuns sobre a interação do Terraform com as APIs do Google Cloud , incluindo APIs públicas e privadas.
Posso usar o Terraform para gerenciar ou importar APIs internas ou privadas Google Cloud , como dataproc-control.googleapis.com?
Não. As APIs internas ou privadas Google Cloud fazem parte da Service Infrastructure gerenciada do Google e não são expostas para gerenciamento, ativação ou importação direta pelo cliente usando o Terraform. Essas APIs são processadas automaticamente pelo Google Cloud. A tentativa de gerenciá-los diretamente com o Terraform vai resultar em erros.
Para uma explicação completa, consulte o guia Noções básicas sobre as APIs Google Cloud e o Terraform.
Qual é a diferença entre ativar uma API e importar um recurso no Terraform?
Ativar uma API:significa ativar um serviço Google Cloud específico para seu projeto e conceder a ele as permissões necessárias para usar esse serviço. Ao usar o Terraform no Google Cloud, isso geralmente é feito com o recurso
google_project_service. Esse é um pré-requisito para criar recursos que dependem dessa API.Importar um recurso:isso se refere a trazer um recurso Google Cloud existente (por exemplo, uma instância do Compute Engine ou um bucket do Cloud Storage) que foi criado fora do Terraform para o gerenciamento do Terraform. Você importa recursos, não as APIs em si.
Para mais detalhes, consulte o Guia para entender as APIs Google Cloud e o Terraform.
E se eu não gerenciar ou importar explicitamente dataproc-control.googleapis.com? Isso vai afetar minha capacidade de usar o Serviço Gerenciado para Apache Spark?
Não, isso não vai afetar sua capacidade de usar o Managed Service for Apache Spark. dataproc-control.googleapis.com é uma API interna usada pelo Managed Service for Apache Spark
para controle operacional próprio. A funcionalidade é gerenciada automaticamente pelo
Google Cloude não requer ativação, importação ou gerenciamento explícito
usando o Terraform. Seus clusters e jobs do Managed Service for Apache Spark vão funcionar corretamente
sem intervenção manual em relação a essa API interna.
Como solucionar erros de permissão negada 403 no Terraform?
Os erros 403 Permission Denied geralmente indicam que a conta de serviço ou
as credenciais de usuário usadas pelo Terraform não têm as permissões necessárias do IAM para
realizar uma ação solicitada em um recurso Google Cloud específico. Para solucionar o problema, faça o seguinte:
Identifique o recurso e o método de API afetados:a mensagem de erro geralmente especifica o tipo de recurso e a chamada de API que falhou.
Verifique os papéis do IAM:confira se o principal (conta de serviço ou usuário) tem os papéis corretos do IAM atribuídos no nível adequado (projeto, pasta, organização ou recurso). Use o solucionador de problemas do IAM no console do Google Cloud .
Verifique a ativação do serviço:confirme se o serviço de API Google Cloud necessário está ativado para seu projeto (por exemplo, usando
gcloud services enableougoogle_project_service).Revise as políticas da organização:verifique se alguma política da organização está restringindo a ação.
Por que estou recebendo erros relacionados à cota (429: muitas solicitações ou 403: cota excedida)?
Os erros de cota ocorrem quando o projeto tenta consumir mais recursos ou fazer mais solicitações de API do que o permitido pelas cotas atuais. Para solucioná-lo:
Identifique a cota específica:a mensagem de erro geralmente especifica a API e o limite de cota excedido.
Verificar as cotas atuais:acesse a página "Cotas" no Google Cloud console para conferir o uso e os limites atuais.
Solicitar um aumento de cota:se você precisar de mais capacidade, solicite um aumento de cota diretamente na página "Cotas".
Considere
user_project_override:para alguns recursos, se o projeto de credenciais for diferente do projeto de recursos, as solicitações de API poderão ser cobradas da cota do projeto de credenciais. Usaruser_project_override(consulte Referência do provedor) às vezes resolve isso, forçando o faturamento da cota ao projeto do recurso.
O que é uma conta de serviço padrão gerenciada pelo usuário e como posso gerenciar as permissões dela com o Terraform?
Alguns serviços do Google Cloud criam automaticamente contas de serviço gerenciado pelo usuário
(geralmente chamadas de contas de serviço padrão) quando um projeto é criado ou um
serviço é ativado. Elas geralmente têm permissões amplas. Embora sejam gerenciadas pelo usuário, elas são criadas pelo Google. É possível gerenciar as permissões usando recursos do IAM, como google_project_iam_member, para modificar as funções. Se você quiser realizar ações nas próprias contas de serviço padrão, como remover os papéis padrão de alto privilégio ou excluir as contas completamente, use o recurso google_project_default_service_accounts.
O Google também oferece orientação sobre tipos conta de serviço padrão.
O que é uma conta serviço gerenciado pelo Google e como faço referência a ela nas configurações do Terraform?
As contas de serviço gerenciado pelo Google são criadas e totalmente gerenciadas pelo Google para determinados serviços. Elas existem fora dos projetos de usuários e não podem ser configuradas diretamente por usuários da mesma forma que as contas de serviço gerenciado pelo usuário. No entanto, talvez seja necessário conceder permissões do IAM para que eles interajam com seus recursos. É possível referenciar o endereço de e-mail de uma conta de serviço gerenciado pelo Google para um serviço específico usando a fonte de dados ou o recurso google_project_service_identity no Terraform e aplicar políticas do IAM a ele. Por exemplo, isso é comum em serviços como o Cloud Build ou o Serviço gerenciado para Apache Airflow.
O que acontece quando eu terraform destroy um recurso que tem disable_on_destroy configurado?
O argumento disable_on_destroy em google_project_service e alguns outros
recursos (por exemplo, google_storage_bucket) controla se o recurso de nuvem
subjacente é desativado ou excluído quando o recurso do Terraform é destruído.
Se
disable_on_destroyfortrue(ou não estiver definido, já que geralmente é o padrão),terraform destroytentará desativar (para APIs) ou excluir (para buckets) o recurso de nuvem correspondente.Se
disable_on_destroyforfalse,terraform destroyvai remover o recurso do estado do Terraform, mas deixar o recurso real da nuvem (por exemplo, a API ativada ou o bucket) intacto no projeto Google Cloud . Essa é uma opção preferida para serviços críticos que não podem ser desativados ou excluídos por acidente.