Home/Docs/Terraform Provider
Official Providerv1.0.0OpenTofu Compatible

Terraform Provider for SteadyStack

Provision, manage, and version-control your edge-native synthetic monitoring, incident escalation channels, alert rules, and customer-facing status pages directly within your Terraform or OpenTofu infrastructure pipelines.

Sovereign Edge Quorum

Target checks across 7 regional edge clusters (wnam, enam, weur, apac) to prevent regional ISP false alarms.

Multi-Channel Routing

Route incidents to PagerDuty, Opsgenie, Slack, Discord, SMS, or custom webhooks with granular trigger rules.

Status Pages as Code

Provision branded public or password-protected status pages with custom domains and SLA timelines.

1. Provider Configuration

Declare the provider in your Terraform manifest and provide your API Key from the SteadyStack dashboard.

main.tfHCL
terraform {
  required_providers {
    steadystack = {
      source  = "getsteadystack/SteadyStack"
      version = "~> 1.0"
    }
  }
}

provider "steadystack" {
  api_key = var.steadystack_api_key # or set export STEADYSTACK_API_KEY="..."
}

2. Synthetic Monitors (`steadystack_monitor`)

Configure HTTP, PING, PORT, SSL, DNS, or HEARTBEAT monitors with sovereign edge region targeting and AI anomaly thresholds.

monitors.tfHCL
resource "steadystack_monitor" "api_gateway" {
  name     = "Production API Gateway"
  url      = "https://api.example.com/health"
  type     = "HTTP"
  interval = 30
  timeout  = 5
  method   = "GET"

  headers = {
    "X-Synthetic-Check" = "SteadyStack-Edge"
    "Authorization"     = "Bearer ${var.internal_auth_token}"
  }

  check_regions        = ["wnam", "enam", "weur", "apac"]
  alert_threshold      = 2
  dynamic_thresholding = true
  runbook_url          = "https://wiki.example.com/runbooks/api-outage"
  tags                 = ["production", "api", "core"]
}
AttributeTypeDescription
namestring (required)Display label of the monitor.
urlstring (required)Target endpoint or domain to surveil.
typestring (optional)HTTP, PING, PORT, SSL, DNS, HEARTBEAT.
check_regionslist(string)Edge probe regions: wnam, enam, weur, apac.
dynamic_thresholdingboolEnables AI-driven latency spike & degradation anomaly alarms.

3. Notification Channels & Alert Rules

Connect monitors to notification channels like PagerDuty or Slack with conditional alert triggers.

alerts.tfHCL
# 1. Define Notification Channels
resource "steadystack_alert_channel" "pagerduty_sre" {
  name = "PagerDuty SRE On-Call"
  type = "PAGERDUTY"
  config_json = jsonencode({
    routingKey = var.pagerduty_routing_key
  })
}

# 2. Attach Alert Rules to Monitors
resource "steadystack_alert_rule" "api_downstream_alarm" {
  monitor_id    = steadystack_monitor.api_gateway.id
  trigger       = "STATUS_CHANGE"
  target_status = "DOWN"
  enabled       = true
  channel_ids   = [steadystack_alert_channel.pagerduty_sre.id]
}

resource "steadystack_alert_rule" "api_latency_sla" {
  monitor_id  = steadystack_monitor.api_gateway.id
  trigger     = "LATENCY"
  threshold   = 1500 # Trigger when latency exceeds 1500ms
  comparison  = "GT"
  enabled     = true
  channel_ids = [steadystack_alert_channel.pagerduty_sre.id]
}

4. Status Pages (`steadystack_status_page`)

Deploy branded status pages with custom domains, password protections, and SLA showcase charts.

status_page.tfHCL
resource "steadystack_status_page" "company_status" {
  slug               = "acme-status"
  title              = "ACME Production Status"
  description        = "Live real-time operational status and historical SLA metrics."
  custom_domain      = "status.example.com"
  is_private         = false
  show_uptime        = true
  show_response_time = true
  history_days       = 90
}

5. Data Sources (`steadystack_regions`)

Dynamically discover all active global edge check nodes and geographic regions.

regions.tfHCL
data "steadystack_regions" "edge_nodes" {}

output "edge_regions" {
  value = data.steadystack_regions.edge_nodes.regions
}

Ready to automate your monitoring?

Generate an API Key in Workspace Settings and deploy your first synthetic check in minutes.