Importa los recursos existentes de OpenAI en lugar de volver a crearlos. Para incorporarlos de forma segura, empieza con una configuración que coincida con la de cada recurso remoto. Revisa y aplica el plan de importación. Antes de hacer cualquier actualización prevista, comprueba que un nuevo plan no proponga cambios.
Los bloques de importación requieren Terraform 1.5 o una versión posterior.
Declarar e importar recursos
Declara cada recurso existente con su configuración actual. Luego agrega un bloque import con el formato de ID que indica la documentación de referencia del proveedor.
resource "openai_project" "existing" {
name = "existing-project"
}
resource "openai_group" "existing" {
name = "existing-group"
}
resource "openai_project_service_account" "existing" {
project_id = openai_project.existing.project_id
name = "existing-service-account"
}
import {
to = openai_project.existing
id = "proj_123"
}
import {
to = openai_group.existing
id = "group_123"
}
import {
to = openai_project_service_account.existing
id = "proj_123/svc_acct_123"
}
Guarda el plan y revisa las importaciones previstas.
terraform plan -out=tfplan
terraform show tfplan
El plan debe mostrar las importaciones sin proponer actualizaciones de los recursos remotos. Si propone actualizaciones, ajusta la configuración para que coincida con los valores actuales antes de continuar. Aplica el plan guardado para importar los recursos y luego ejecuta otro plan.
terraform apply tfplan
terraform plan
El segundo plan debe indicar que no hay cambios. Puedes conservar los bloques de importación en tu configuración como registro de cómo Terraform incorporó los recursos.
Estos son algunos formatos habituales de ID de importación.
| Recurso | Formato del ID de importación |
|---|---|
| Proyecto | <project_id> |
| Grupo de la organización | <group_id> |
| Rol del proyecto | <project_id>/<role_id> |
| Cuenta de servicio del proyecto | <project_id>/<service_account_id> |
| Rol de un grupo en el proyecto | <project_id>/<group_id>/<role_id> |
| Rol de un usuario en el proyecto | <project_id>/<user_id>/<role_id> |
| Límite de solicitudes del proyecto | <project_id>/<rate_limit_id> |
Consulta la documentación de referencia del proveedor para conocer el formato exacto de cada recurso.
Consultar recursos sin incorporarlos
Usa fuentes de datos cuando Terraform necesite información actual sobre un recurso que administra otro sistema. El proveedor incluye fuentes de datos para proyectos, grupos, roles, usuarios, asignaciones de roles, límites de solicitudes, permisos de modelos, permisos de herramientas alojadas, alertas de gasto, retención de datos y certificados.
Por ejemplo, así puedes consultar un proyecto existente y los grupos que lo integran actualmente.
data "openai_project" "existing" {
project_id = var.project_id
}
data "openai_project_groups" "existing" {
project_id = data.openai_project.existing.project_id
}
output "project_groups" {
value = data.openai_project_groups.existing.groups
}
El proveedor puede importar una cuenta de servicio existente de un proyecto mediante su ID, pero por ahora no ofrece una fuente de datos para cuentas de servicio. Cuando necesites incorporar una cuenta de servicio existente, conserva tanto el ID del proyecto como el de la cuenta de servicio en tu inventario aprobado. Consulta Cuentas de servicio para conocer los pasos de configuración inicial de la clave de API e importación de la cuenta.
Detectar y resolver desviaciones en la configuración
Ejecuta un plan normal para consultar los valores actuales de OpenAI y compararlos con los valores deseados que especificaste en la configuración de Terraform.
terraform plan -detailed-exitcode
El código de salida 0 indica que no hay cambios, 2 indica que el plan contiene cambios y 1 indica que Terraform encontró un error.
Si el plan muestra que un valor cambió fuera de Terraform, sigue estos pasos.
- Determina si el cambio fue intencional.
- Para conservar el cambio remoto, actualiza la configuración de Terraform para que refleje el nuevo valor.
- Para deshacer el cambio remoto, revisa y aplica el plan para restablecer el valor configurado.
- Ejecuta otro plan y verifica que no proponga ningún cambio.
Qué sucede al quitar un recurso
Al quitar un bloque de recurso, el recurso se elimina del estado de Terraform. El efecto sobre el objeto o la configuración remota depende del tipo de recurso.
| Tipo de recurso | Qué sucede al quitarlo |
|---|---|
openai_project |
Archiva el proyecto. No puedes restaurar un proyecto archivado. |
openai_project_service_account |
Elimina la cuenta de servicio. |
| Recursos de roles, grupos, membresías y asignaciones | Elimina el objeto administrado o la asignación correspondiente. |
openai_project_model_permissions |
Elimina la configuración de permisos de modelos del proyecto. |
| Recursos de límites de solicitudes del proyecto, permisos de herramientas alojadas y retención de datos | Elimina el recurso del estado de Terraform sin restablecer el valor remoto. |