コンテンツにスキップ

Olivares AI をコードとして管理する(Terraform)

Olivares AI は Terraform プロバイダー を公開しており、コントロールプレーンを コードとして 管理できます。エージェント、ガバナンスポリシー、エージェント↔アイデンティティのバインディング、 デプロイメント定義を HCL で宣言し、稼働中のエンジンに対して REST API 経由で調整します。これは モジュール XIX(独自 API + コードとしての管理)です。プロバイダーは API リファレンス が文書化しているのと同じ REST サーフェスの上にある薄いクライアントなので、HCL でできることは すべて REST でも実行できます。

プロバイダーと CLI は Apache-2.0 であり、エンジン内部を一切 import しません。HCL は ガバナンス対象 API のもう 1 つのフロントエンドにすぎません。

terraform {
required_providers {
olivares = {
source = "olivaresai/olivares"
}
}
}
provider "olivares" {
endpoint = "https://olivares.internal:8443" # or OLIVARES_ENDPOINT
api_token = var.olivares_token # or OLIVARES_API_TOKEN (sensitive)
# tenant = "…" # optional; or OLIVARES_TENANT (sent as X-Olivares-Tenant)
# insecure_skip_verify = true # dev self-signed cert only
}
設定必須環境変数フォールバック備考
endpointはいOLIVARES_ENDPOINTコントロールプレーン API のベース URL
api_tokenはいOLIVARES_API_TOKEN不透明なベアラートークン(本製品は JWT ではなく、不透明で失効可能なトークンを使用)
tenantいいえOLIVARES_TENANTテナント UUID。トークンがテナントに紐づいている場合は省略
insecure_skip_verifyいいえ開発用の自己署名証明書で TLS 検証をスキップする。本番では決して使用しない

認証はすべてのリクエストで送信されるベアラートークンであり、テナントは X-Olivares-Tenant ヘッダーで運ばれます。API のその他の部分と同じ、デフォルト拒否(deny-by-default)の RBAC、テナントスコープ、アクションごとの監査が適用されます。最小権限のサービスアイデンティティ向けに トークンを発行し、state には含めないでください(変数とシークレットバックエンドを使用)。

リソース管理対象主要な属性
olivares_agentインベントリ内のエージェントエンティティname(必須)、kind(必須)、external_id(任意)。計算値 idstatusversion
olivares_policyガバナンスポリシーname(必須)、kindabac または approval、必須、変更不可)、enabledspec(必須、JSON)。計算値 spec_canonical
olivares_agent_identity_bindingエージェントを非人間アイデンティティ(NHI)にバインド(R/RW の帰属を鋭くするブリッジ)agent_ididentity_id/identity_refmintallow_unknown。計算値 mintedsharedagent_count
olivares_deploymentデプロイメント 定義(宣言的な望ましい状態)subject_kindsubject_refnameenvironmentruntimetargetsource_refspecdesired_status。計算値 current_versionapplied_versionspec_hash

読み取り専用のビューにより、モジュールは REST 呼び出しを再実装せずにガバナンス対象の state を 参照できます。olivares_policiesolivares_identitiesolivares_deploymentolivares_server_infoolivares_access_edges があります。最後のものは R/RW のエッジを公開し、 include_drift = true を指定すると Permitted-vs-Observed のドリフト(まだ確実に帰属できないアクセスを 表す正直な reconciliation_pending フラグを含む)も公開します。

resource "olivares_agent" "billing_bot" {
name = "billing-reconciler"
kind = "service"
}
resource "olivares_policy" "require_approval_for_prod" {
name = "prod-deploys-need-approval"
kind = "approval"
enabled = true
spec = jsonencode({
# policy body — see the API reference for the schema of each kind
})
}
# Read the current Permitted-vs-Observed drift as data:
data "olivares_access_edges" "estate" {
include_drift = true
}

terraform plan は HCL をエンジンに対して調整し、terraform apply はガバナンス対象 API を通じて オブジェクトを作成または更新します。ポリシーとバインディングは認可サーフェスを変更するため、plan は レビュー対象の変更として扱ってください。エンジンはすべての変更を実際のアクターとともに監査します。