Noções básicas sobre as APIs do Google Cloud e o Terraform

Este guia tem como objetivo esclarecer como o Terraform interage com as APIs Google Cloud , diferenciando entre APIs públicas e privadas, e explicar conceitos importantes, como ativação de API e importação de recursos. Essa compreensão é crucial para gerenciar seus recursos do Google Cloud de forma eficaz com o Terraform e evitar erros comuns.

APIs públicas x privadas Google Cloud

Os serviços doGoogle Cloud expõem várias APIs que permitem que aplicativos e ferramentas (como o Terraform) interajam com recursos e os gerenciem. Essas APIs se enquadram em duas categorias:

APIs públicas

Finalidade:são as principais interfaces para que clientes e ferramentas criem, configurem e gerenciem recursos do Google Cloud (por exemplo, instâncias do Compute Engine, buckets do Cloud Storage, conjuntos de dados do BigQuery).

Exposição:as APIs públicas são bem documentadas, têm endpoints REST definidos e são destinadas ao consumo externo. São as APIs com que o provedor do Terraform google foi criado para interagir.

Exemplos:compute.googleapis.com, storage.googleapis.com, bigquery.googleapis.com.

APIs particulares (internas)

Finalidade:essas APIs são internas aos serviços do Google Cloud , usadas pelo próprio Google para operação, organização e provisionamento internos dos serviços gerenciados. Eles expõem funcionalidades que não são destinadas à interação ou ao gerenciamento direto do cliente.

Exposição:as APIs particulares geralmente não são documentadas publicamente, não têm endpoints externos estáveis e não são projetadas para acesso direto por ferramentas de terceiros, como o Terraform. Eles são um detalhe de implementação do serviço.

Exemplo:dataproc-control.googleapis.com é uma API interna que o Dataproc usa para o plano de controle operacional. Os clientes não interagem nem gerenciam essa API diretamente.

Ativação da API x importação de recursos no Terraform

Entender a distinção entre "ativar uma API" e "importar um recurso" é fundamental para usar o Terraform de forma eficaz com o Google Cloud.

Como ativar uma API

  • O que isso significa:quando você "ativa uma API" no Google Cloud, está ativando um serviço Google Cloud específico para seu projeto. Isso concede ao seu projeto as permissões e o acesso necessários para usar as funcionalidades desse serviço e criar recursos gerenciados por ele.

Contexto do Terraform:no Terraform, isso geralmente é feito usando o recurso google_project_service. Esse recurso verifica se uma API pública especificada (por exemplo, compute.googleapis.com) está ativado para seu projeto Google Cloud .

Finalidade:ativar uma API é um pré-requisito para criar ou gerenciar recursos pertencentes a esse serviço. Por exemplo, é necessário ativar compute.googleapis.com antes de criar recursos google_compute_instance.

Exemplo (Terraform):

```hcl
resource "google_project_service" "compute_api" {
  project            = "your-gcp-project-id"
  service            = "compute.googleapis.com"
  disable_on_destroy = false
}
```

Observação importante:o recurso google_project_service foi projetado exclusivamente para gerenciar o estado de ativação das APIs Google Cloud acessíveis publicamente. Ela não é destinada a APIs internas ou particulares e não funciona com elas. Tentar usar para APIs privadas vai resultar em erros, já que essas APIs não são expostas pela superfície pública da API para esse tipo de gerenciamento.

Como importar um recurso

O que isso significa:no Terraform, "importar" significa trazer um recurso de nuvem existente (criado manualmente ou por outro processo fora do Terraform) para o gerenciamento do Terraform. Ao importar um recurso, o Terraform gera uma entrada de estado para ele, permitindo que você gerencie o ciclo de vida (atualizações, exclusão) usando a configuração do Terraform.

Contexto do Terraform:isso é feito usando o comando terraform import ou blocos import introduzidos no Terraform 1.5 ou versões mais recentes.

Finalidade:para controlar recursos que não foram provisionados inicialmente pelo Terraform.

Exemplo (CLI do Terraform):

```bash
terraform import google_compute_instance.my_instance projects/your-gcp-project-id/zones/us-central1-a/instances/my-vm
```

Como lidar com preocupações sobre APIs privadas (por exemplo, dataproc-control.googleapis.com)

Às vezes, os clientes encontram referências a APIs particulares (como dataproc-control.googleapis.com para o Dataproc) em registros ou documentação e se perguntam se precisam ativar ou importar essas APIs com o Terraform.

Nenhuma ação do cliente necessária:se uma API for identificada como uma API privada ou interna Google Cloud , não será necessário ativá-la explicitamente usando google_project_service nem tentar importá-la com o Terraform.

Gerenciamento interno:essas APIs são cruciais para a operação interna dos serviços do Google Cloud . Eles são gerenciados automaticamente pelo Google e não foram projetados para interação ou gerenciamento direto do cliente por ferramentas públicas.

Nenhum impacto no Service Usage serviço:a incapacidade de "importar" ou gerenciar explicitamente uma API particular usando o Terraform não afeta sua capacidade de usar o serviço Google Cloud associado (por exemplo, O Dataproc vai funcionar corretamente sem que você gerencie dataproc-control.googleapis.com. As interações internas necessárias da API são processadas pelo Google.

Foco em APIs públicas:ao gerenciar recursos Google Cloud com o Terraform, o foco deve ser apenas em ativar e configurar as APIs públicas que correspondem aos serviços e recursos que você pretende provisionar.

Conclusão

Ao entender a distinção clara entre APIs públicas e privadas Google Cloud, e as funções específicas de APIs de "ativação" versus recursos de "importação" no Terraform, você pode gerenciar sua infraestrutura Google Cloud de maneira eficaz. Não tente gerenciar ou importar explicitamente APIs privadas Google Cloud , porque elas são componentes internos processados pelo Google. Concentre suas configurações do Terraform nas APIs expostas publicamente e nos recursos correspondentes.