以代码方式管理 Olivares AI(Terraform)
Olivares AI 提供一个 Terraform provider,让你能够以代码方式管理控制平面—— 在 HCL 中声明智能体、治理策略、智能体↔身份绑定以及部署定义,并通过引擎的 REST API 与运行中的引擎进行协调。这是模块 XIX(自有 API + 以代码管理);该 provider 是一个轻量客户端, 封装在 API 参考 所记录的同一套 REST 接口之上,因此凡是你能在 HCL 中完成的操作, 都能通过 REST 完成。
provider 与 CLI 采用 Apache-2.0 许可,且从不导入引擎内部实现;HCL 只是受治理 API 的 另一种前端。
配置 provider
Section titled “配置 provider”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 标志)。
一个最小示例
Section titled “一个最小示例”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 视为一项需评审的变更——
引擎会以真实操作者审计每一次变更。
- API 参考 — provider 所驱动的 REST 接口。
- API 稳定性策略 — provider 所依赖的版本化/弃用承诺(当某个响应携带弃用信号时,它会在每次运行时发出一次警告)。
- 模块 XIX — 自有 API + 以代码管理。
- 模块 VII — 部署与集成 — 上文提到的 503 接缝注意事项。
- 治理与审批 — 策略与审批如何治理你所声明的内容。