Ir al contenido

Gestionar Olivares AI como código (Terraform)

Olivares AI expone un proveedor de Terraform para que puedas gestionar el control plane como código —agentes, políticas de gobierno, vínculos agente↔identidad y definiciones de despliegue declarados en HCL y reconciliados contra el motor en ejecución a través de su API REST—. Es el módulo XIX (API propia + gestión como código); el proveedor es un cliente ligero sobre la misma superficie REST que documenta la referencia de la API, de modo que cualquier cosa que puedas hacer en HCL la puedes hacer por REST.

El proveedor y la CLI son Apache-2.0 y nunca importan las interioridades del motor; HCL es solo otro front-end de la API gobernada.

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
}
AjusteObligatorioVariable de entorno alternativaNotas
endpointOLIVARES_ENDPOINTURL base de la API del control plane
api_tokenOLIVARES_API_TOKENToken bearer opaco (el producto usa tokens opacos y revocables, no JWT)
tenantnoOLIVARES_TENANTUUID del tenant; omítelo cuando el token esté ligado a un tenant
insecure_skip_verifynoOmite la verificación TLS para el certificado autofirmado de desarrollo; nunca en producción

La autenticación es un token bearer enviado en cada petición, con el tenant transportado en la cabecera X-Olivares-Tenant —el mismo RBAC deny-by-default, ámbito por tenant y auditoría por acción que el resto de la API—. Emite un token para una identidad de servicio con mínimo privilegio y mantenlo fuera del estado (usa una variable y un backend de secretos).

RecursoGestionaAtributos clave
olivares_agentUna entidad de agente en el inventarioname (obligatorio), kind (obligatorio), external_id (opcional); calculados id, status, version
olivares_policyUna política de gobiernoname (obligatorio), kind (abac o approval, obligatorio, inmutable), enabled, spec (obligatorio, JSON); calculado spec_canonical
olivares_agent_identity_bindingVincula un agente a una identidad no humana (el puente que afina la atribución R/RW)agent_id, identity_id/identity_ref, mint, allow_unknown; calculados minted, shared, agent_count
olivares_deploymentUna definición de despliegue (estado deseado declarativo)subject_kind, subject_ref, name, environment, runtime, target, source_ref, spec, desired_status; calculados current_version, applied_version, spec_hash

Vistas de solo lectura para que un módulo pueda referenciar estado gobernado sin reimplementar llamadas REST: olivares_policies, olivares_identities, olivares_deployment, olivares_server_info y olivares_access_edges —esta última expone las aristas R/RW y, con include_drift = true, el desvío permitido-vs-observado (incluido el honesto flag reconciliation_pending para un acceso que aún no es atribuible con firmeza).

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 reconcilia tu HCL contra el motor; terraform apply crea o actualiza los objetos a través de la API gobernada. Como las políticas y los vínculos cambian la superficie de autorización, trata el plan como un cambio revisable —el motor audita cada mutación con el actor real.