OpenAI 于 2026 年 7 月 29 日发布官方 Terraform Provider 1.0,让 API Platform 的管理对象可以进入 Infrastructure as Code 工作流。团队不必只依赖控制台手工创建项目、添加成员或调整速率限制,而是可以把目标状态写进 Terraform 配置,通过代码审查、执行计划和状态文件管理变更。官方 Provider 的地址是:openai/terraform-provider-openai。
这套 Provider 能管理什么
OpenAI Terraform Provider 调用的是 Administration API,主要面向组织和项目的控制面资源。当前文档覆盖的常用对象包括:
- 组织项目与项目成员。
- 组织用户、邀请、用户组和角色。
- 项目级用户、用户组及角色分配。
- 项目服务账号。
- 组织证书与项目证书关联。
- 项目模型权限和 Hosted Tool 权限。
- 项目数据保留策略。
- 组织与项目支出提醒。
- 项目级速率限制。
Provider 同时提供大量 Data Source,可以查询已经存在的项目、用户、角色、证书和限制,避免在配置中硬编码所有 ID。它适合以下场景:
- 为开发、测试和生产环境建立一致的 OpenAI 项目结构。
- 通过 Pull Request 审查权限与配额变更。
- 将已有控制台资源逐步导入 Terraform。
- 定期运行
terraform plan检测控制台手工修改。 - 为不同团队复用项目、角色和限制模板。
1.0.0 的两个迁移重点
1.0.0 是首个正式版本,但从早期预览版升级时不能只修改版本号。这个版本删除了已经弃用的聚合项目速率限制资源。项目现在应使用单项 openai_project_rate_limit 资源,每个资源对应一个已有的 rate_limit_id。此外,Provider 的请求韧性和遥测得到改进,但这不会改变 Terraform 的状态管理原则:生产环境仍应先执行 plan,确认变更范围后再 apply。
前置条件
开始前需要:
- Terraform CLI 1.0 或更高版本。
- OpenAI API Platform 组织权限。
- 一个 OpenAI Admin API Key。
- 用于保存 Terraform 状态的安全后端。
Admin API Key 与普通项目 API Key 用途不同。它用于 Administration API,不能拿来调用普通的模型推理接口。在 OpenAI API Platform 的组织设置中创建 Admin API Key 后,通过环境变量传入:
|
|
PowerShell 可以这样设置:
|
|
不要把管理密钥写进 .tf 文件、变量默认值或 Git 仓库。CI/CD 环境应使用 Secret Store 注入,并限制谁能读取执行日志和 Terraform 状态。
初始化官方 Provider
新建 versions.tf:
|
|
再创建 provider.tf:
|
|
可用的 Provider 参数包括:
admin_api_key:Admin API Key,属于敏感字段。organization:组织 ID。project:默认项目 ID。base_url:OpenAI API 请求基础地址。
对应的环境变量包括 OPENAI_ADMIN_KEY、OPENAI_ORG_ID 和 OPENAI_PROJECT_ID。初始化工作目录:
|
|
提交代码时应一并提交 .terraform.lock.hcl,确保 CI 与本地使用经过确认的 Provider 版本。
创建一个 OpenAI 项目
最小项目资源只需要名称:
|
|
geography 是可选字段,是否设置应以实际 API Platform 配置和合规要求为准。不要为了示例直接修改现有生产项目的地域设置。先格式化并检查配置:
|
|
确认计划只包含预期资源后再执行:
|
|
管理项目成员与角色
可以把现有组织用户加入项目:
|
|
如果需要独立的项目角色分配,官方提供三个内置项目角色 ID:
role-api-project-memberrole-api-project-ownerrole-api-project-viewer
例如分配只读角色:
|
|
也可以通过 openai_project_roles Data Source 动态发现角色,减少对固定 ID 的依赖。自定义项目角色使用 openai_project_role,其必要字段是 project_id、role_name 和 permissions:
|
|
权限字符串必须来自实际可用权限集合。上线前应以 Data Source 或官方 API 文档核对,不要凭名称猜测权限。
邀请尚未加入组织的用户
组织邀请可以连同项目成员身份一起声明:
|
|
邀请具有接受、过期等生命周期状态。收件人接受后,应重新运行 terraform plan,确认远端状态与配置的关系符合预期。
服务账号不会自动创建 API Key
创建项目服务账号的配置很简单:
|
|
但该资源只创建服务账号本身。它明确设置 create_service_account_only=true,不会自动分配角色,也不会创建 API Key。角色需要使用单独的 Terraform 资源管理,API Key 则要通过公开 API 在 Terraform 外创建和管理。不要在模块输出中假设会出现可直接使用的密钥。
管理证书
组织证书可以从 PEM 文件读取:
|
|
certificate 是敏感属性,但敏感标记不等于内容不会进入状态文件。需要确认远程 State 已加密,并限制 State 后端、备份和 CI Artifact 的访问权限。证书轮换前先查看计划中的替换行为,确保新旧证书的有效期有重叠,避免一次 apply 造成连接中断。
设置模型访问范围
项目模型权限可使用允许列表:
|
|
模型标识可能随产品更新变化。合并配置前应核对当前可用模型,并在删除旧模型许可前确认应用已经完成迁移。
管理项目级速率限制
openai_project_rate_limit 管理的是已有速率限制对象,必须提供项目 ID 与具体的 rate_limit_id:
|
|
可管理字段还包括每日请求数、Batch 每日最大输入 token、每分钟图像数量和每分钟音频 MB 数。实际可设置的上限取决于组织和模型配额。Terraform 只能管理 API 接受的值,不能通过提高配置数字绕过平台配额。
把已有资源导入 Terraform
对已经在控制台创建的资源,不要重复创建,应先写出与远端资源匹配的配置并导入 State。Terraform 1.5 及以上可以使用 import 块:
|
|
不同资源的导入 ID 格式不同。常见形式包括单个资源 ID、project_id/resource_id,以及包含用户和角色的三段复合 ID。应以对应资源文档中的 Import 小节为准。导入后依次运行:
|
|
如果计划立即显示大量更新,说明本地配置没有完整反映远端状态。先调整配置直到计划符合预期,不要直接 apply 覆盖生产设置。
用 plan 检测配置漂移
当管理员在控制台手工修改成员、角色或限制后,Provider 的读取操作会把远端状态与 Terraform 配置比较。CI 中可以使用详细退出码:
|
|
退出码含义是:
0:配置与远端状态一致,没有变更。1:命令执行失败,应检查权限、网络或配置错误。2:检测到变更或漂移,需要人工审查计划。
不要在检测到退出码 2 后自动执行生产 apply。漂移可能来自紧急处置、权限撤销或平台侧变化,应先确认是恢复代码声明的状态,还是把合理的手工变更同步回配置。
State、权限与审查建议
Admin API Key 能修改组织控制面,应按高权限凭据处理。建议采用以下保护:
- 本地开发只通过环境变量短期注入密钥。
- CI 使用专用身份和受保护的 Secret。
- 远程 State 启用加密、锁和版本保留。
- 将
plan与apply分成不同审批阶段。 - 生产环境限制可执行
apply的分支和人员。 - 定期轮换 Admin API Key 并撤销不再使用的密钥。
- 对导入、角色变更和资源删除保留审计记录。
删除项目、成员、角色或证书前,要检查 Terraform 计划中的 destroy 与 replace 项。对关键资源可以结合 prevent_destroy,但它不能替代变更审查与恢复方案。
常见问题
Provider 可以调用模型 API 吗?
不可以。它面向 OpenAI Administration API,Admin API Key 也不能用于普通模型请求。
服务账号资源会返回 API Key 吗?
不会。它只创建服务账号,角色与 API Key 需要分别管理。
为什么不能创建新的速率限制对象?
该资源用于管理已有项目速率限制,需要提供实际的 rate_limit_id。1.0.0 已移除旧的聚合速率限制资源。
控制台手工变更能被发现吗?
可以通过 terraform plan 发现远端状态与配置的差异。发现漂移后应人工判断以哪一侧为准,而不是无条件自动覆盖。
已有项目需要重建吗?
不需要。使用 import 块或 terraform import 把资源加入 State,再逐步补齐配置即可。
总结
OpenAI Terraform Provider 1.0 把 API Platform 管理纳入标准 IaC 流程,适合统一管理项目、成员、角色、服务账号、证书与项目限制。接入时最值得注意的不是一条 terraform apply,而是三件事:正确使用 Admin API Key、先导入已有资源、以及把 terraform plan 作为权限和配置漂移的审查入口。在生产环境中,还要特别处理服务账号密钥、复合资源导入 ID、1.0.0 速率限制资源变化和 Terraform State 的访问安全。