|
| 1 | +--- |
| 2 | +title: "Terraform Provider: status pages, notifications, and more" |
| 3 | +description: "The OpenStatus Terraform provider now supports status pages, notifications, DNS monitors, TCP monitors, and component groups." |
| 4 | +image: "/assets/changelog/terraform-v0.1.png" |
| 5 | +publishedAt: "2026-03-26" |
| 6 | +author: "openstatus" |
| 7 | +category: "monitoring" |
| 8 | +--- |
| 9 | + |
| 10 | +The OpenStatus Terraform provider has been completely revamped. What started as monitor-only support now covers your entire openstatus stack. |
| 11 | + |
| 12 | +## What's new |
| 13 | + |
| 14 | +### Dedicated monitor resources |
| 15 | + |
| 16 | +Monitors are now split into dedicated resource types with full configuration support: |
| 17 | + |
| 18 | +- **`openstatus_http_monitor`** — custom headers, request bodies, and assertions on status codes, response body, and headers. |
| 19 | +- **`openstatus_tcp_monitor`** — verify that a port is open and reachable. |
| 20 | +- **`openstatus_dns_monitor`** — validate DNS records with record type assertions (A, AAAA, CNAME, MX, TXT). |
| 21 | + |
| 22 | +### Status pages |
| 23 | + |
| 24 | +Manage your entire status page as code: |
| 25 | + |
| 26 | +- **`openstatus_status_page`** — create pages with custom domains, access control (public, password-protected, or email-domain restricted), and branding. |
| 27 | +- **`openstatus_status_page_component`** — link monitors to your status page or add static components. |
| 28 | +- **`openstatus_status_page_component_group`** — organize components into groups. |
| 29 | + |
| 30 | +### Notifications |
| 31 | + |
| 32 | +Configure alerting channels with **`openstatus_notification`** — supports 12 providers including Slack, PagerDuty, Discord, OpsGenie, Email, Webhook, Telegram, SMS, WhatsApp, Google Chat, Grafana OnCall, and ntfy. |
| 33 | + |
| 34 | +### Data sources |
| 35 | + |
| 36 | +Look up existing resources without managing them: |
| 37 | + |
| 38 | +- **`openstatus_monitor`** — fetch a single monitor by ID. |
| 39 | +- **`openstatus_monitors`** — list all monitors with pagination. |
| 40 | +- **`openstatus_notification`** — fetch a notification channel by ID. |
| 41 | +- **`openstatus_status_page`** — fetch a status page by ID. |
| 42 | + |
| 43 | +### Import support |
| 44 | + |
| 45 | +Every resource supports `terraform import`, so you can bring your existing dashboard configuration under Terraform management. |
| 46 | + |
| 47 | +## Get started |
| 48 | + |
| 49 | +```hcl |
| 50 | +terraform { |
| 51 | + required_providers { |
| 52 | + openstatus = { |
| 53 | + source = "openstatusHQ/openstatus" |
| 54 | + version = "~> 0.1" |
| 55 | + } |
| 56 | + } |
| 57 | +} |
| 58 | +
|
| 59 | +provider "openstatus" { |
| 60 | + api_token = var.openstatus_api_token |
| 61 | +} |
| 62 | +``` |
| 63 | + |
| 64 | +Check out the [Terraform provider reference](https://docs.openstatus.dev/reference/terraform/) for full documentation and examples, or follow the [tutorial](https://docs.openstatus.dev/tutorial/how-to-manage-openstatus-with-terraform-cli) to set up your monitoring stack from scratch. |
| 65 | + |
| 66 | +## Thank you |
| 67 | + |
| 68 | +A huge thank you to [Remy Buison](https://github.com/darkweaver87) from Traefik for all his contributions and help improving our terraform provider. |
0 commit comments