For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
主导航

导入 OpenAI 资源并协调配置

接管现有资源并检测配置漂移。

导入现有 OpenAI 资源,无需重新创建。要安全地接管资源,请先使配置与远程资源一致,然后预览并应用导入操作,并在执行任何预期更新之前确认生成的计划不包含变更。

导入块需要 Terraform 1.5 或更高版本。

声明并导入资源

使用各个现有资源的当前设置声明资源,然后按照提供程序参考资料中的 ID 格式添加 import 块:

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"
}

在保存的计划中预览导入操作:

terraform plan -out=tfplan
terraform show tfplan

计划应显示导入操作,且不应提出更新远程资源。如果计划提出了更新,请先使配置与当前设置一致,再继续操作。应用保存的计划以执行导入,然后再次运行计划:

terraform apply tfplan
terraform plan

第二次计划应报告没有变更。您可以在配置中保留导入块,作为 Terraform 接管这些资源的记录。

常见的导入 ID 格式包括:

资源导入 ID 格式
项目<project_id>
组织组<group_id>
项目角色<project_id>/<role_id>
项目服务账户<project_id>/<service_account_id>
项目组角色<project_id>/<group_id>/<role_id>
项目用户角色<project_id>/<user_id>/<role_id>
项目速率限制<project_id>/<rate_limit_id>

请查看提供程序参考资料,了解每种资源的确切格式。

读取资源而不接管资源

如果 Terraform 需要当前信息,但资源由其他系统管理,请使用数据源。提供程序包含项目、组、角色、用户、角色分配、速率限制、模型权限、托管工具权限、支出告警、数据保留和证书的数据源。

例如,读取现有项目及其当前的组:

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
}

提供程序可以通过 ID 导入现有项目服务账户,但目前 尚未提供服务账户数据源。如果您需要接管 现有服务账户,请将项目 ID 和服务账户 ID 保存在经批准的资源清单中。有关 API 密钥的 初始化和导入顺序,请参阅服务 账户

检测并处理配置漂移

运行常规计划,读取当前的 OpenAI 设置,并将其与 Terraform 配置中的期望值进行比较:

terraform plan -detailed-exitcode

退出码 0 表示没有变更,2 表示计划包含变更,1 表示 Terraform 遇到错误。

如果计划显示某项设置在 Terraform 之外发生了变更:

  1. 确定该变更是否为有意操作。
  2. 要保留远程变更,请更新 Terraform 配置,使其与远程设置一致。
  3. 要撤销远程变更,请审查并应用计划,以恢复配置中指定的值。
  4. 再次运行计划,并确保结果不包含变更。

了解移除行为

移除资源块会将资源从 Terraform 状态中移除,但不一定会删除或重置同类型的远程对象:

资源类型移除行为
openai_project归档项目。已归档的项目无法恢复。
openai_project_service_account删除服务账户。
角色、组、成员关系和分配资源删除对应的受管对象或分配。
openai_project_model_permissions删除项目模型权限配置。
项目速率限制、托管工具权限和数据保留资源将资源从 Terraform 状态中移除,但不重置远程设置。