Perguntas frequentes sobre o Terraform no Google Cloud

Esta página fornece respostas a perguntas comuns encontradas ao usar o Terraform para gerir recursos no Google Cloud, particularmente no que diz respeito às interações com a API e à introdução.

Começar a usar o Terraform

Esta secção aborda conceitos básicos e passos iniciais para novos utilizadores do Terraform.

O que é a infraestrutura como código (IaC) e por que motivo devo usar o Terraform?

A infraestrutura como código (IaC) é a prática de gerir e aprovisionar a infraestrutura de computação através de ficheiros de definição legíveis por máquina. Para uma vista geral completa dos conceitos e vantagens da IaC, consulte o artigo O que é a infraestrutura como código?.

O Terraform é uma ferramenta IaC de código aberto usada para definir, aprovisionar e gerir recursos na nuvem e nas instalações. Para saber mais sobre as vantagens de usar o Terraform para o seu fluxo de trabalho de IaC, consulte as Vantagens de usar o Terraform.

Como instalo o Terraform e executo a minha primeira configuração?

Para começar a usar o Terraform, primeiro, tem de transferir e instalar a CLI do Terraform na sua máquina local. As instruções estão disponíveis no Website do HashiCorp Terraform. Após a instalação, pode criar um ficheiro de configuração do Terraform, definir um recurso (como um contentor do Cloud Storage) e, em seguida, usar terraform init para inicializar o diretório de trabalho, terraform plan para pré-visualizar as alterações e terraform apply para as aplicar.

O que é a linguagem de configuração da HashiCorp (HCL) e onde posso aprender a sua sintaxe?

A linguagem de configuração da HashiCorp (HCL) é a linguagem de configuração usada pelo Terraform. Foi concebida para ser legível para humanos e compatível com máquinas, para uma escrita e compreensão claras e eficientes das definições de infraestrutura. A HCL suporta várias funcionalidades, como variáveis, expressões, funções e módulos. Pode aprender a sintaxe HCL através da documentação oficial do HashiCorp Terraform, que oferece guias e exemplos abrangentes.

Onde posso encontrar exemplos de configurações do Terraform para recursos do Google Cloud ?

Pode encontrar vários exemplos de configurações do Terraform para Google Cloud:

  • Registo do HashiCorp Terraform: o registo do Terraform oficial para o fornecedor contém documentação e exemplos para cada recurso e origem de dados. Google Cloud

  • Google Cloud Exemplos do Terraform: a Google oferece uma variedade de exemplos do Terraform que demonstram como implementar e gerir recursos comuns Google Cloud .

  • Repositórios do GitHub: muitos repositórios de código aberto, incluindo a terraform-google-modules organização do GitHub, oferecem exemplos e módulos reutilizáveis.

Como posso gerir e testar configurações complexas do Terraform, especialmente quando trabalho com muitos recursos?

Para configurações complexas, considere usar as funcionalidades do Terraform concebidas para escalabilidade e capacidade de manutenção:

  • Módulos: encapsule e reutilize padrões de infraestrutura comuns.

  • Espaços de trabalho: faça a gestão de várias instâncias distintas de uma única configuração.

  • terraform plan e terraform validate: use estes comandos com frequência para validar a sintaxe e pré-visualizar as alterações sem implementação real.

  • Recursos de segmentação (use com precaução): para testar partes específicas, pode usar temporariamente -target com terraform apply ou terraform destroy, embora isto seja geralmente desaconselhado para operações de rotina devido às complexidades de gestão de estados.

  • Ambientes dedicados: implemente em ambientes de desenvolvimento ou teste para testar antes da produção.

Google Cloud Perguntas sobre a API

Estas perguntas abordam consultas comuns sobre a interação do Terraform com asGoogle Cloud APIs, incluindo APIs públicas e privadas.

Posso usar o Terraform para gerir ou importar APIs Google Cloud internas ou privadas, como a dataproc-control.googleapis.com?

Não. As APIs internas ou privadas Google Cloud fazem parte da infraestrutura de serviços gerida da Google e não são expostas para gestão, ativação ou importação direta por parte do cliente através do Terraform. Estas APIs são processadas automaticamente pelo Google Cloud. Se tentar geri-los diretamente com o Terraform, ocorrem erros.

Para uma explicação abrangente, consulte o guia de compreensão Google Cloud das APIs e do Terraform.

Qual é a diferença entre ativar uma API e importar um recurso no Terraform?

  • Ativar uma API: isto significa ativar um Google Cloud serviço específico para o seu projeto e conceder a esse projeto as autorizações necessárias para usar esse serviço. Quando usa o Terraform no Google Cloud, isto é normalmente feito através do recurso google_project_service. Este é um pré-requisito para criar recursos que dependam dessa API.

  • Importar um recurso: isto refere-se a trazer um recurso existente Google Cloud (por exemplo, uma instância do Compute Engine ou um contentor do Cloud Storage) que foi criado fora do Terraform sob a gestão do Terraform. Importa recursos e não as APIs propriamente ditas.

Para mais detalhes, consulte o guia Compreender Google Cloud as APIs e o Terraform.

O que acontece se não gerir nem importar explicitamente dataproc-control.googleapis.com? Vai afetar a minha capacidade de usar o Dataproc?

Não, não afeta a sua capacidade de usar o Dataproc. A API dataproc-control.googleapis.com é uma API interna usada pelo Dataproc para o seu próprio controlo operacional. A respetiva funcionalidade é gerida automaticamente pela Google Cloude não requer ativação, importação nem gestão explícitas da sua parte através do Terraform. Os seus clusters e tarefas do Dataproc vão funcionar corretamente sem qualquer intervenção manual relativamente a esta API interna.

Como resolvo problemas de erros 403 Permission Denied no Terraform?

Os erros 403 Permission Denied indicam normalmente que a conta de serviço ou as credenciais do utilizador usadas pelo Terraform não têm as autorizações de IAM necessárias para executar uma ação pedida num recurso Google Cloud específico. Para resolver problemas:

  1. Identifique o recurso afetado e o método da API: a mensagem de erro especifica normalmente o tipo de recurso e a chamada da API que falhou.

  2. Verifique as funções de IAM: verifique se o principal (conta de serviço ou utilizador) tem as funções de IAM corretas atribuídas ao nível adequado (projeto, pasta, organização ou recurso). Use a resolução de problemas do IAM na consola Google Cloud .

  3. Verifique a ativação do serviço: confirme se o serviço de Google Cloud APIgcloud services enable necessário está ativado para o seu projeto (por exemplo, através de gcloud services enable ou google_project_service).

  4. Reveja as políticas da organização: verifique se alguma política da organização está a restringir a ação.

Os erros de quota ocorrem quando o seu projeto tenta consumir mais recursos ou fazer mais pedidos API do que o permitido pelas quotas atuais. Para resolver este problema:

  1. Identifique a quota específica: normalmente, a mensagem de erro especifica a API e o limite de quota excedido.

  2. Verifique as quotas atuais: visite a página Quotas na Google Cloud consola para ver a utilização e os limites atuais.

  3. Peça um aumento da quota: se precisar de mais capacidade, pode pedir um aumento da quota diretamente na página Quotas.

  4. Tenha em atenção user_project_override: para alguns recursos, se o projeto de credenciais for diferente do projeto de recursos, as solicitações de API podem ser faturadas de acordo com a quota do projeto de credenciais. A utilização de user_project_override (consulte a referência do fornecedor) pode, por vezes, resolver este problema, forçando a faturação da quota ao projeto do recurso.

O que é uma conta de serviço predefinida gerida pelo utilizador e como posso gerir as respetivas autorizações com o Terraform?

Determinados Google Cloud serviços criam automaticamente contas de serviço geridas pelo utilizador (frequentemente denominadas contas de serviço predefinidas) quando um projeto é criado ou um serviço é ativado. Normalmente, têm autorizações amplas. Embora sejam geridos pelo utilizador, são criados pela Google. Pode gerir as respetivas autorizações através de recursos do IAM, como google_project_iam_member, para modificar as respetivas funções. Se quiser tomar medidas nas próprias contas de serviço predefinidas, como remover as respetivas funções predefinidas de privilégios elevados ou eliminar as contas por completo, pode usar o recurso google_project_default_service_accounts. A Google também fornece orientações sobre os tipos de contas de serviço predefinidas.

O que é uma conta de serviço gerida pela Google e como posso fazer referência à mesma nas configurações do Terraform?

As contas de serviço geridas pela Google são criadas e totalmente geridas pela Google para determinados serviços. Existem fora dos projetos de utilizadores e não são configuráveis diretamente pelos utilizadores da mesma forma que as contas de serviço geridas pelo utilizador. No entanto, pode ter de conceder-lhes autorizações de IAM para interagirem com os seus recursos. Pode consultar o endereço de email de uma conta de serviço gerida pela Google para um serviço específico através da origem de dados ou do recurso google_project_service_identity no Terraform para, em seguida, aplicar-lhe políticas de IAM. Por exemplo, isto é comum para serviços como o Cloud Build ou o Cloud Composer.

O que acontece quando 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 eliminado quando o recurso do Terraform é destruído.

  • Se disable_on_destroy for true (ou não estiver definido, uma vez que é frequentemente a predefinição), terraform destroy tenta desativar (para APIs) ou eliminar (para contentores) o recurso na nuvem correspondente.

  • Se disable_on_destroy for false, terraform destroy remove o recurso do estado do Terraform, mas deixa o recurso de nuvem real (por exemplo, a API ativada ou o contentor) intacto no seu projeto Google Cloud . Esta opção é frequentemente preferível para serviços críticos que não devem ser desativados ou eliminados acidentalmente.