Este guia destina-se a esclarecer como o Terraform interage com as APIs Google Cloud (ao diferenciar entre APIs públicas e privadas) e explicar conceitos importantes, como a ativação de APIs e a importação de recursos. Esta compreensão é fundamental para gerir eficazmente os seus recursos com o Terraform e evitar erros comuns. Google Cloud
APIs públicas versus privadas Google Cloud
Google Cloud Os serviços expõem várias APIs que permitem que as aplicações e as ferramentas (como o Terraform) interajam com os recursos e os geram. Estas APIs dividem-se, de forma geral, em duas categorias:
APIs públicas
Finalidade: estas são as interfaces principais para os clientes e as ferramentas criarem, configurarem e gerirem Google Cloud recursos (por exemplo, Instâncias do Compute Engine, contentores do Cloud Storage e conjuntos de dados do BigQuery).
Exposição: as APIs públicas estão bem documentadas, têm pontos finais REST definidos e destinam-se ao consumo externo. São as APIs com as quais o fornecedor do Terraform foi criado para interagir.google
Exemplos: compute.googleapis.com
, storage.googleapis.com
, bigquery.googleapis.com
.
APIs privadas (internas)
Finalidade: estas APIs são internas aos serviços Google Cloud , usadas pela própria Google para a operação, a orquestração e o aprovisionamento internos dos respetivos serviços geridos. Expõem funcionalidades que não se destinam à interação ou gestão direta do cliente.
Exposição: geralmente, as APIs privadas não são documentadas publicamente, não têm pontos finais externos estáveis e não são concebidas para acesso direto por ferramentas de terceiros, como o Terraform. São um detalhe de implementação do serviço.
Exemplo: dataproc-control.googleapis.com
é uma API interna que o Dataproc usa para o respetivo plano de controlo operacional. Os clientes não interagem nem gerem diretamente esta API.
Ativação de APIs versus importação de recursos no Terraform
Compreender a distinção entre "ativar uma API" e "importar um recurso" é fundamental para usar o Terraform de forma eficaz com o Google Cloud.
Ativar uma API
- O que significa: quando "ativa uma API" no Google Cloud, está a ativar um serviço Google Cloud específico para o seu projeto. Isto concede ao seu projeto as autorizações e o acesso necessários para usar as funcionalidades desse serviço e criar recursos geridos por ele.
Contexto do Terraform: no Terraform, isto é normalmente feito através do recurso google_project_service
. Este recurso valida que uma API pública especificada (por exemplo, compute.googleapis.com
) está ativada para o seu Google Cloud projeto.
Finalidade: a ativação de uma API é um pré-requisito para criar ou gerir recursos pertencentes a esse serviço. Por exemplo, tem de ativar compute.googleapis.com
antes de poder 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
}
```
Nota importante: o recurso google_project_service
foi concebido exclusivamente para gerir o estado de ativação das APIs acessíveis publicamente Google Cloud . Não se destina a APIs internas ou privadas e não funciona com estas. A tentativa de utilização para APIs privadas resulta em erros, uma vez que essas APIs não são expostas através da superfície da API pública para essa gestão.
Importar um recurso
O que significa: no Terraform, a "importação" refere-se à colocação de um recurso da nuvem existente (um recurso que foi criado manualmente ou por outro processo fora do Terraform) sob a gestão do Terraform. Quando importa um recurso, o Terraform gera uma entrada de estado para o mesmo, o que lhe permite gerir o respetivo ciclo de vida (atualizações, eliminação) através da sua configuração do Terraform.
Contexto do Terraform: isto é conseguido através do comando terraform import
ou da utilização de blocos import
introduzidos no Terraform 1.5 ou superior.
Finalidade: obter controlo sobre recursos que não foram inicialmente aprovisionados 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
```
Abordar preocupações acerca das APIs privadas (por exemplo, dataproc-control.googleapis.com
)
Por vezes, os clientes encontram referências a APIs privadas (como
dataproc-control.googleapis.com
para o Dataproc) nos registos ou na documentação e
perguntam-se se precisam de as ativar ou importar com o Terraform.
Não é necessária nenhuma ação do cliente: se uma API for identificada como uma API privada ou
interna Google Cloud , não precisa de a ativar explicitamente através de
google_project_service
nem tentar importá-la com o Terraform.
Gestão interna: estas APIs são cruciais para o funcionamento interno dos serviçosGoogle Cloud . São geridos automaticamente pela Google e não foram concebidos para interação direta com o cliente nem gestão através de ferramentas públicas.
Sem impacto na utilização do serviço: a sua incapacidade de "importar" ou gerir explicitamente
uma API privada através do Terraform não afeta a sua capacidade de
usar o serviço Google Cloud associado (por exemplo, O Dataproc funciona corretamente sem que tenha de gerir dataproc-control.googleapis.com
. As interações necessárias da API interna são processadas pela Google.
Foque-se nas APIs públicas: quando gere Google Cloud recursos com o Terraform, deve focar-se apenas na ativação e configuração das APIs públicas que correspondem aos serviços e recursos que pretende aprovisionar.
Conclusão
Compreendendo a distinção clara entre APIs públicas e privadas Google Cloud, e os papéis específicos de "ativar" APIs em comparação com "importar" recursos no Terraform, pode gerir eficazmente a sua Google Cloud infraestrutura. Não tente gerir ou importar explicitamente APIs Google Cloud privadas; são componentes internos geridos pela Google. Foque as suas configurações do Terraform nas APIs expostas publicamente e nos respetivos recursos.