跳转到内容

以代码方式管理 Olivares AI(Terraform)

Olivares AI 提供一个 Terraform provider,让你能够以代码方式管理控制平面—— 在 HCL 中声明智能体、治理策略、智能体↔身份绑定以及部署定义,并通过引擎的 REST API 与运行中的引擎进行协调。这是模块 XIX(自有 API + 以代码管理);该 provider 是一个轻量客户端, 封装在 API 参考 所记录的同一套 REST 接口之上,因此凡是你能在 HCL 中完成的操作, 都能通过 REST 完成。

provider 与 CLI 采用 Apache-2.0 许可,且从不导入引擎内部实现;HCL 只是受治理 API 的 另一种前端。

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 不透明 bearer 令牌(产品使用不透明、可撤销的令牌,而非 JWT)
tenant 否 OLIVARES_TENANT 租户 UUID;当令牌已绑定租户时可省略
insecure_skip_verify 否 — 跳过 TLS 校验,仅用于开发环境的自签名证书;生产环境绝不可用

认证方式是在每个请求上发送 bearer 令牌,并通过 X-Olivares-Tenant 头携带租户—— 与 API 的其余部分一样采用相同的默认拒绝(deny-by-default)RBAC、租户作用域划分以及逐操作审计。 为一个遵循最小权限的服务身份铸造令牌,并将其排除在 state 之外(使用变量与密钥后端)。

资源 管理对象 关键属性
olivares_agent 库存中的一个智能体实体 name(必填)、kind(必填)、external_id(可选);计算属性 id、status、version
olivares_policy 一项治理策略 name(必填)、kind(abac 或 approval,必填,不可变更)、enabled、spec(必填,JSON);计算属性 spec_canonical
olivares_agent_identity_binding 将智能体绑定到一个非人类身份(用于强化 R/RW 归因的桥梁) agent_id、identity_id/identity_ref、mint、allow_unknown;计算属性 minted、shared、agent_count
olivares_deployment 一份部署定义(声明式期望状态) subject_kind、subject_ref、name、environment、runtime、target、source_ref、spec、desired_status;计算属性 current_version、applied_version、spec_hash

只读视图,使模块能够引用受治理的状态而无需重新实现 REST 调用:olivares_policies、 olivares_identities、olivares_deployment、olivares_server_info 以及 olivares_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 视为一项需评审的变更—— 引擎会以真实操作者审计每一次变更。