Importe os recursos existentes da OpenAI em vez de recriá-los. Para começar a gerenciá-los com segurança, configure cada recurso no Terraform com os mesmos valores do recurso remoto. Revise e aplique o plano de importação. Antes de fazer qualquer atualização planejada, confirme que um novo plano não propõe alterações.
Os blocos de importação exigem o Terraform 1.5 ou posterior.
Declare e importe recursos
Declare cada recurso existente com suas configurações atuais. Em seguida, adicione um bloco import usando o formato de ID indicado na documentação de 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"
}
Salve o plano e confira as importações previstas.
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 aos valores atuais antes de continuar. Aplique o plano salvo para importar os recursos e 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 para registrar como o Terraform passou a gerenciar os recursos.
A tabela mostra alguns formatos comuns de ID de importação.
| Recurso | Formato do 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 um grupo no projeto | <project_id>/<group_id>/<role_id> |
| Função de um usuário no projeto | <project_id>/<user_id>/<role_id> |
| Limite de taxa do projeto | <project_id>/<rate_limit_id> |
Consulte a documentação de referência do provedor para verificar o formato exato do ID de cada recurso.
Consulte recursos sem assumir o gerenciamento
Use fontes de dados quando o Terraform precisar de informações atualizadas sobre um recurso gerenciado por outro sistema. O provedor oferece 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.
O exemplo a seguir consulta 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 pelo ID uma conta de serviço existente de um projeto, mas ainda não oferece uma fonte de dados para contas de serviço. Quando precisar gerenciar uma conta de serviço existente com o Terraform, mantenha os IDs do projeto e da conta de serviço no inventário aprovado. Consulte Contas de serviço para ver a sequência de etapas para a configuração inicial da chave de API e a importação da conta.
Detecte e reconcilie divergências de configuração
Execute um plano normal para consultar 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 indica que não há alterações, 2 indica que o plano contém alterações e 1 indica que o Terraform encontrou um erro.
Se o plano mostrar que uma configuração foi alterada fora do Terraform, siga estas etapas.
- Verifique se a alteração foi intencional.
- Para manter a alteração remota, atualize a configuração do Terraform com o novo valor.
- Para desfazer a alteração remota, revise e aplique o plano para restaurar o valor configurado.
- Execute outro plano e confirme que ele não propõe nenhuma alteração.
Entenda o que acontece ao remover recursos
Ao remover um bloco de recurso, o Terraform remove o recurso do estado. O efeito sobre o objeto remoto depende do tipo de recurso.
| Tipo de recurso | Efeito da 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, vínculos com grupos 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. |