跳转到内容

以代码方式管理 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
}
设置项是否必填环境变量回退说明
endpointOLIVARES_ENDPOINT控制平面 API 的基础 URL
api_tokenOLIVARES_API_TOKEN不透明 bearer 令牌(产品使用不透明、可撤销的令牌,而非 JWT)
tenantOLIVARES_TENANT租户 UUID;当令牌已绑定租户时可省略
insecure_skip_verify跳过 TLS 校验,仅用于开发环境的自签名证书;生产环境绝不可用

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

资源管理对象关键属性
olivares_agent库存中的一个智能体实体name(必填)、kind(必填)、external_id(可选);计算属性 idstatusversion
olivares_policy一项治理策略name(必填)、kindabacapproval,必填,不可变更)、enabledspec(必填,JSON);计算属性 spec_canonical
olivares_agent_identity_binding将智能体绑定到一个非人类身份(用于强化 R/RW 归因的桥梁)agent_ididentity_id/identity_refmintallow_unknown;计算属性 mintedsharedagent_count
olivares_deployment一份部署定义(声明式期望状态)subject_kindsubject_refnameenvironmentruntimetargetsource_refspecdesired_status;计算属性 current_versionapplied_versionspec_hash

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