Importe recursos existentes da OpenAI em vez de recriá-los. Para uma adoção segura, comece com uma configuração que corresponda ao recurso remoto, visualize e aplique a importação e gere um plano sem alterações antes de realizar qualquer atualização desejada.
Os blocos de importação exigem o Terraform 1.5 ou posterior.
Declare e importe recursos
Declare cada recurso existente usando suas configurações atuais e, em seguida, adicione um bloco import com o formato de ID indicado na referência do provedor:
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"
}
Visualize as importações em um plano salvo:
terraform plan -out=tfplan
terraform show tfplan
O plano deve mostrar as importações sem propor atualizações nos recursos remotos. Se ele propuser atualizações, ajuste a configuração para que corresponda às configurações atuais antes de continuar. Aplique o plano salvo para realizar as importações e, em seguida, execute outro plano:
terraform apply tfplan
terraform plan
O segundo plano deve indicar que não há alterações. Você pode manter os blocos de importação na configuração como um registro de como o Terraform adotou os recursos.
Os formatos comuns de ID de importação incluem:
| Recurso | Formato de ID de importação |
|---|---|
| Projeto | <project_id> |
| Grupo da organização | <group_id> |
| Função do projeto | <project_id>/<role_id> |
| Conta de serviço do projeto | <project_id>/<service_account_id> |
| Função de grupo no projeto | <project_id>/<group_id>/<role_id> |
| Função de usuário no projeto | <project_id>/<user_id>/<role_id> |
| Limite de taxa do projeto | <project_id>/<rate_limit_id> |
Consulte a referência do provedor para saber o formato exato de cada recurso.
Leia recursos sem adotá-los
Use fontes de dados quando o Terraform precisar de informações atuais, mas outro sistema for responsável pelo recurso. O provedor inclui fontes de dados para projetos, grupos, funções, usuários, atribuições de funções, limites de taxa, permissões de modelos, permissões de ferramentas hospedadas, alertas de gastos, retenção de dados e certificados.
Por exemplo, leia um projeto existente e seus grupos atuais:
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
}
O provedor pode importar uma conta de serviço de projeto existente pelo ID, mas atualmente não oferece uma fonte de dados para contas de serviço. Mantenha os IDs do projeto e da conta de serviço no inventário aprovado quando precisar adotar uma conta de serviço existente. Consulte Contas de serviço para ver a sequência de configuração inicial da chave de API e importação.
Detecte e reconcilie divergências
Execute um plano normal para ler as configurações atuais da OpenAI e compará-las com os valores desejados na configuração do Terraform:
terraform plan -detailed-exitcode
O código de saída 0 significa que não há alterações, 2 significa que o plano contém alterações e 1 significa que o Terraform encontrou um erro.
Se o plano mostrar uma configuração que foi alterada fora do Terraform:
- Determine se a alteração foi intencional.
- Para manter a alteração remota, atualize a configuração do Terraform para que corresponda a ela.
- Para desfazer a alteração remota, revise e aplique o plano para restaurar o valor configurado.
- Execute outro plano e exija um resultado sem alterações.
Entenda o comportamento de remoção
Remover um bloco de recurso remove o recurso do estado do Terraform, mas nem sempre exclui ou redefine o objeto remoto correspondente:
| Tipo de recurso | Comportamento de remoção |
|---|---|
openai_project | Arquiva o projeto. Não é possível restaurar um projeto arquivado. |
openai_project_service_account | Exclui a conta de serviço. |
| Recursos de funções, grupos, associações e atribuições | Exclui o objeto gerenciado ou a atribuição correspondente. |
openai_project_model_permissions | Exclui a configuração de permissões de modelos do projeto. |
| Recursos de limite de taxa do projeto, permissões de ferramentas hospedadas e retenção de dados | Remove o recurso do estado do Terraform sem redefinir a configuração remota. |