Zum Inhalt springen

Olivares AI als Code verwalten (Terraform)

Olivares AI stellt einen Terraform-Provider bereit, mit dem Sie die Control Plane als Code verwalten können — Agenten, Governance-Policies, Agent↔Identitäts-Bindings und Deployment-Definitionen, in HCL deklariert und über die REST-API gegen die laufende Engine abgeglichen. Dies ist Modul XIX (eigene API + Manage-as-Code); der Provider ist ein dünner Client über derselben REST-Oberfläche, die die API-Referenz dokumentiert — alles, was Sie in HCL tun können, können Sie auch über REST tun.

Der Provider und das CLI stehen unter Apache-2.0 und importieren niemals die Engine-Interna; HCL ist nur ein weiteres Front-End zur governten 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
}
EinstellungErforderlichEnv-FallbackHinweise
endpointjaOLIVARES_ENDPOINTBasis-URL der Control-Plane-API
api_tokenjaOLIVARES_API_TOKENOpakes Bearer-Token (das Produkt nutzt opake, widerrufbare Tokens, keine JWTs)
tenantneinOLIVARES_TENANTTenant-UUID; weglassen, wenn das Token tenant-gebunden ist
insecure_skip_verifyneinTLS-Verifikation für das selbstsignierte Dev-Zertifikat überspringen; niemals in Produktion

Die Authentifizierung ist ein Bearer-Token, das bei jeder Anfrage gesendet wird, mit dem Tenant im X-Olivares-Tenant-Header — dasselbe deny-by-default RBAC, dasselbe Tenant-Scoping und dieselbe Auditierung pro Aktion wie im Rest der API. Erstellen Sie ein Token für eine Service-Identität nach dem Least-Privilege-Prinzip und halten Sie es aus dem State heraus (verwenden Sie eine Variable und ein Secret-Backend).

RessourceVerwaltetSchlüsselattribute
olivares_agentEine Agenten-Entität im Inventarname (erforderlich), kind (erforderlich), external_id (optional); berechnet id, status, version
olivares_policyEine Governance-Policyname (erforderlich), kind (abac oder approval, erforderlich, unveränderlich), enabled, spec (erforderlich, JSON); berechnet spec_canonical
olivares_agent_identity_bindingBindet einen Agenten an eine nichtmenschliche Identität (die Brücke, die die R/RW-Zuordnung schärft)agent_id, identity_id/identity_ref, mint, allow_unknown; berechnet minted, shared, agent_count
olivares_deploymentEine Deployment-Definition (deklarativer Soll-Zustand)subject_kind, subject_ref, name, environment, runtime, target, source_ref, spec, desired_status; berechnet current_version, applied_version, spec_hash

Schreibgeschützte Sichten, damit ein Modul governten State referenzieren kann, ohne REST-Aufrufe neu zu implementieren: olivares_policies, olivares_identities, olivares_deployment, olivares_server_info und olivares_access_edges — letztere legt die R/RW-Kanten offen und, mit include_drift = true, den Permitted-vs-Observed-Drift (einschließlich des ehrlichen Flags reconciliation_pending für einen Zugriff, der noch nicht eindeutig zuordenbar ist).

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 gleicht Ihr HCL gegen die Engine ab; terraform apply erstellt oder aktualisiert die Objekte über die governte API. Da Policies und Bindings die Autorisierungsoberfläche verändern, behandeln Sie den Plan als prüfbare Änderung — die Engine auditiert jede Mutation mit dem echten Akteur.