匯入現有的 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 保留在經核准的資源清單中。如需瞭解 API 金鑰的 初始設定與匯入順序,請參閱服務 帳戶。
偵測及修正漂移
產生一般執行計畫,讀取目前的 OpenAI 設定,並與 Terraform 組態中的預期值比較:
terraform plan -detailed-exitcode
結束代碼 0 表示無須變更,2 表示執行計畫包含變更,1 則表示 Terraform 遇到錯誤。
如果執行計畫顯示某項設定曾在 Terraform 之外遭到變更:
- 確認該變更是否為有意進行。
- 若要保留遠端變更,請更新 Terraform 組態,使其與遠端設定一致。
- 若要復原遠端變更,請審查並套用執行計畫,以還原為組態中設定的值。
- 再次產生執行計畫,並確認結果為無須變更。
瞭解移除行為
移除資源區塊會將資源從 Terraform 狀態中移除,但不一定會刪除或重設對應類型的遠端物件:
| 資源類型 | 移除行為 |
|---|---|
openai_project | 封存專案。已封存的專案無法還原。 |
openai_project_service_account | 刪除服務帳戶。 |
| 角色、群組、成員資格和指派資源 | 刪除對應的受管理物件或指派。 |
openai_project_model_permissions | 刪除專案的模型權限組態。 |
| 專案速率限制、託管工具權限和資料保留資源 | 將資源從 Terraform 狀態中移除,但不重設遠端設定。 |