El objetivo de esta guía es aclarar cómo interactúa Terraform con las APIs (mientras diferencia entre las APIs públicas y privadas) y explicar conceptos clave, como la habilitación de APIs y la importación de recursos. Google Cloud Comprender esto es fundamental para administrar de manera eficaz tus recursos de Google Cloud con Terraform y evitar errores comunes.
APIs públicas y privadas Google Cloud
Los servicios deGoogle Cloud exponen varias APIs que permiten que las aplicaciones y las herramientas (como Terraform) interactúen con los recursos y los administren. En términos generales, estas APIs se dividen en dos categorías:
APIs públicas
Propósito: Estas son las interfaces principales para que los clientes y las herramientas creen, configuren y administren recursos de Google Cloud (p.ej., Instancias de Compute Engine, buckets de Cloud Storage y conjuntos de datos de BigQuery).
Exposición: Las APIs públicas están bien documentadas, tienen extremos de REST definidos y están diseñadas para el consumo externo. Son las APIs con las que se creó el proveedor de google
Terraform para interactuar.
Ejemplos: compute.googleapis.com
, storage.googleapis.com
y bigquery.googleapis.com
APIs privadas (internas)
Propósito: Estas APIs son internas para los servicios de Google Cloud , y Google las usa para la operación, la organización y el aprovisionamiento internos de sus servicios administrados. Exponen funcionalidades que no están diseñadas para la interacción o la administración directa de los clientes.
Exposición: Por lo general, las APIs privadas no se documentan de forma pública, no tienen extremos externos estables y no están diseñadas para el acceso directo de herramientas de terceros, como Terraform. Son un detalle de implementación del servicio.
Ejemplo: dataproc-control.googleapis.com
es una API interna que Dataproc usa para su plano de control operativo. Los clientes no interactúan directamente con esta API ni la administran.
Comparación entre la habilitación de la API y la importación de recursos en Terraform
Comprender la distinción entre "habilitar una API" y "importar un recurso" es fundamental para usar Terraform de manera eficaz con Google Cloud.
Habilita una API
- Qué significa: Cuando "habilitas una API" en Google Cloud, activas un servicio Google Cloud específico para tu proyecto. Esto otorga a tu proyecto los permisos y el acceso necesarios para usar las funcionalidades de ese servicio y crear recursos administrados por él.
Contexto de Terraform: En Terraform, esto se suele hacer con el recurso google_project_service
. Este recurso verifica que una API pública especificada (p.ej., compute.googleapis.com
) está habilitado para tu proyecto Google Cloud .
Propósito: Habilitar una API es un requisito previo para crear o administrar recursos que pertenecen a ese servicio. Por ejemplo, debes habilitar compute.googleapis.com
antes de poder crear recursos google_compute_instance
.
Ejemplo (Terraform):
```hcl
resource "google_project_service" "compute_api" {
project = "your-gcp-project-id"
service = "compute.googleapis.com"
disable_on_destroy = false
}
```
Nota importante: El recurso google_project_service
está diseñado exclusivamente para administrar el estado de habilitación de las APIs de Google Cloud acceso público. No está diseñada para APIs internas o privadas, y no funcionará con ellas. Si intentas usarla para APIs privadas, se generarán errores, ya que esas APIs no se exponen a través de la superficie de la API pública para dicha administración.
Cómo importar un recurso
Qué significa: En Terraform, "importar" se refiere a incorporar un recurso de nube existente (uno que se creó de forma manual o con otro proceso fuera de Terraform) a la administración de Terraform. Cuando importas un recurso, Terraform genera una entrada de estado para él, lo que te permite administrar su ciclo de vida (actualizaciones, eliminación) con tu configuración de Terraform.
Contexto de Terraform: Esto se logra con el comando terraform import
o con los bloques import
que se introdujeron en Terraform 1.5 y versiones posteriores.
Propósito: Obtener control sobre los recursos que Terraform no aprovisionó inicialmente.
Ejemplo (CLI de Terraform):
```bash
terraform import google_compute_instance.my_instance projects/your-gcp-project-id/zones/us-central1-a/instances/my-vm
```
Aborda las inquietudes sobre las APIs privadas (p.ej., dataproc-control.googleapis.com
A veces, los clientes encuentran referencias a APIs privadas (como dataproc-control.googleapis.com
para Dataproc) en los registros o la documentación, y se preguntan si deben habilitarlas o importarlas con Terraform.
No se requiere ninguna acción del cliente: Si se identifica una API como una API Google Cloud privada o interna, no es necesario que la habilites de forma explícita con google_project_service
ni que intentes importarla con Terraform.
Administración interna: Estas APIs son fundamentales para el funcionamiento interno de los servicios deGoogle Cloud . Google los administra automáticamente y no están diseñados para la interacción o la administración directa del cliente a través de herramientas públicas.
Sin impacto en el Service Usage: Tu incapacidad para "importar" o administrar explícitamente una API privada de este tipo con Terraform no afectará tu capacidad para usar el servicio Google Cloud asociado (p.ej., Dataproc funcionará correctamente sin que tengas que administrar dataproc-control.googleapis.com
. Google se encarga de las interacciones internas necesarias con la API.
Enfócate en las APIs públicas: Cuando administres recursos de Google Cloud con Terraform, debes enfocarte únicamente en habilitar y configurar las APIs públicas que correspondan a los servicios y recursos que deseas aprovisionar.
Conclusión
Si comprendes la clara distinción entre las APIs públicas y privadas Google Cloud, y los roles específicos de las APIs de "habilitación" en comparación con los recursos de "importación" en Terraform, puedes administrar tu infraestructura Google Cloud de manera eficaz. No intentes administrar o importar de forma explícita las APIs privadas Google Cloud , ya que son componentes internos que Google controla. Enfoca tus configuraciones de Terraform en las APIs expuestas públicamente y sus recursos correspondientes.