Provider
terraform {
required_providers {
denpex = {
source = "denpex/denpex"
version = "~> 0.7"
}
}
}
provider "denpex" {
api_url = "https://api.denpex.ai"
api_token = var.denpex_api_token
}
Resources
denpex_cluster
resource "denpex_cluster" "prod" {
name = "prod-cluster-a"
tenant = "acme"
description = "Primary training cluster"
ptp_server = "ptp.example.com"
fabric_manager = {
url = "https://fm.example.com"
token_secret = denpex_secret.fm.id
}
ufm = {
url = "https://ufm.example.com"
ca_bundle = filebase64("./certs/ufm-ca.pem")
}
rma_webhook = {
url = "https://rma.example.com"
token_secret = denpex_secret.rma.id
}
tags = {
cost-center = "ml-platform"
region = "us-west-2"
}
}
denpex_rbac_role
resource "denpex_rbac_role" "sre" {
tenant = denpex_cluster.prod.tenant
name = "sre"
permissions = [
"incidents.read",
"incidents.approve",
"remediation.execute",
"audit.read"
]
}
denpex_audit_sink
resource "denpex_audit_sink" "splunk" {
cluster = denpex_cluster.prod.id
kind = "splunk_hec"
url = "https://splunk.example.com:8088/services/collector/event"
token_secret = denpex_secret.splunk.id
hmac_secret = denpex_secret.splunk_hmac.id
}
denpex_remediation_policy
resource "denpex_remediation_policy" "default" {
cluster = denpex_cluster.prod.id
yaml = file("./policies/cordon.yml")
}
Data sources
denpex_incident
data "denpex_incident" "current" {
cluster = denpex_cluster.prod.id
status = "open"
}
output "incident_url" {
value = data.denpex_incident.current.url
}
Acceptance Tests
cd terraform-provider-denpex
go test ./...
Compatibility
- Terraform 1.5+.
- OpenTofu 1.6+.