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

2 回目のプランでは、変更なしと報告されるはずです。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 の外部で変更された設定がプランに表示された場合は、次の手順で対応します。

  1. その変更が意図的なものかどうかを確認します。
  2. リモート側の変更を維持するには、それに合わせて Terraform 構成を更新します。
  3. リモート側の変更を取り消すには、プランをレビューして適用し、構成で指定した値に戻します。
  4. もう一度プランを実行し、必ず変更なしの結果になることを確認します。

削除時の動作

リソースブロックを削除すると、そのリソースは Terraform のステートから削除されます。ただし、対応するリモートオブジェクトが必ず削除またはリセットされるとは限りません。

リソースの種類削除時の動作
openai_projectプロジェクトをアーカイブします。アーカイブしたプロジェクトは復元できません。
openai_project_service_accountサービスアカウントを削除します。
ロール、グループ、メンバーシップ、割り当てのリソース対応する管理対象オブジェクトまたは割り当てを削除します。
openai_project_model_permissionsプロジェクトのモデル権限の構成を削除します。
プロジェクトのレート制限、ホスト型ツールの権限、データ保持のリソースリモート側の設定をリセットせずに、Terraform のステートからリソースを削除します。