Перейти к содержимому

Управление Olivares AI как кодом (Terraform)

Olivares AI предоставляет провайдер Terraform, чтобы вы могли управлять control plane как кодом — агентами, политиками управления (governance), привязками агент↔идентичность и определениями развёртываний, объявленными в HCL и согласовываемыми с работающим движком через его REST API. Это модуль XIX (собственный API + управление-как-кодом); провайдер представляет собой тонкий клиент поверх той же REST-поверхности, что документирована в справочнике API, поэтому всё, что можно сделать в HCL, можно сделать и через REST.

Провайдер и CLI распространяются под лицензией Apache-2.0 и никогда не импортируют внутренности движка; HCL — это просто ещё один фронтенд к управляемому (governed) 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
}
ПараметрОбязателенЗапасной envПримечания
endpointдаOLIVARES_ENDPOINTБазовый URL API control plane
api_tokenдаOLIVARES_API_TOKENНепрозрачный bearer-токен (продукт использует непрозрачные, отзываемые токены, а не JWT)
tenantнетOLIVARES_TENANTUUID тенанта; опускается, когда токен привязан к тенанту
insecure_skip_verifyнетПропуск проверки TLS для самоподписанного сертификата dev-среды; никогда в продакшене

Аутентификация — это bearer-токен, отправляемый с каждым запросом, а тенант передаётся в заголовке X-Olivares-Tenant — тот же RBAC с запретом по умолчанию (deny-by-default), разграничение по тенантам и аудит каждого действия, что и у остального API. Создайте токен для сервисной идентичности с минимальными привилегиями (least-privilege) и держите его вне состояния (используйте переменную и секретный бэкенд).

РесурсЧем управляетКлючевые атрибуты
olivares_agentСущность агента в инвентареname (обязателен), kind (обязателен), external_id (опционален); вычисляемые id, status, version
olivares_policyПолитика управления (governance)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. Поскольку политики и привязки меняют поверхность авторизации, относитесь к плану как к изменению, подлежащему ревью — движок фиксирует в аудите каждую мутацию с реальным актором.