The Rootly provider is used to interact with the resources supported by Rootly. The provider needs to be configured with the proper credentials before it can be used. It requires terraform 0.14 or later.
api_host
(String) The Rootly API host. Defaults to https://api.rootly.com. Can also be sourced from the ROOTLY_API_URL environment variable.api_token
(String, Sensitive) The Rootly API Token. Generate it from your account at https://rootly.com/account. It must be provided but can also be sourced from the ROOTLY_API_TOKEN environment variable.
Provider
terraform {
required_providers {
rootly = {
source = "rootlyhq/rootly"
}
}
}
provider "rootly" {
# We recommend using the `ROOTLY_API_TOKEN` env var to set the API Token
# when interacting with Rootly's API.
# api_token = var.rootly_api_key
}
Data sources
# uses output of severity data source as input for workflow
data "rootly_severity" "critical" {
slug = "sev0"
}
resource "rootly_workflow_incident" "ping_oncall" {
name = "Ping on-call when critical incident"
description = "ping on-call when critical incident happens"
trigger_params {
triggers = ["incident_created"]
incident_condition_kind = "IS"
incident_kinds = ["normal"]
incident_condition_status = "IS"
incident_statuses = ["started"]
severity_ids = [data.rootly_severity.critical.id]
}
enabled = true
}
resource "rootly_workflow_task_send_sms" "sms_oncall" {
workflow_id = rootly_workflow_incident.ping_oncall.id
name = "On-call team"
task_params {
phone_numbers = ["+11231231234"]
content = "Critical incident started"
}
}
Custom form fields
# Custom form Fields
resource "rootly_form_field" "regions_affected" {
name = "Regions affected"
kind = "custom"
input_kind = "multi_select"
shown = ["web_new_incident_form", "web_update_incident_form"]
required = ["web_new_incident_form", "web_update_incident_form"]
}
resource "rootly_form_field_option" "asia" {
form_field_id = rootly_form_field.regions_affected.id
value = "Asia"
}
resource "rootly_form_field_option" "europe" {
form_field_id = rootly_form_field.regions_affected.id
value = "Europe"
}
resource "rootly_form_field_option" "north_america" {
form_field_id = rootly_form_field.regions_affected.id
value = "North America"
}
Workflows
# Jira workflow
resource "rootly_workflow_incident" "jira" {
name = "Create a Jira Issue"
description = "Open Jira ticket whenever incident starts"
trigger_params {
triggers = ["incident_created"]
incident_condition_kind = "IS"
incident_kinds = ["normal"]
incident_condition_status = "IS"
incident_statuses = ["started"]
}
enabled = true
}
resource "rootly_workflow_task_create_jira_issue" "jira" {
workflow_id = rootly_workflow_incident.jira.id
task_params {
title = "{{ incident.title }}"
description = "{{ incident.summary }}"
project_key = "ROOT"
issue_type = {
id = "10001"
name = "Task"
}
status = {
id = "10000"
name = "To Do"
}
labels = "{{ incident.environment_slugs | concat: incident.service_slugs | concat: incident.functionality_slugs | concat: incident.group_slugs | join: \",\" }}"
}
}
Dashboards
resource "rootly_dashboard" "overview" {
name = "my_dashboard"
}
resource "rootly_dashboard_panel" "incidents_by_severity" {
dashboard_id = rootly_dashboard.foo.id
name = "test"
params {
display = "line_chart"
datasets {
collection = "incidents"
filter {
operation = "and"
rules {
operation = "and"
condition = "="
key = "status"
value = "started"
}
}
group_by = "severity"
aggregate {
cumulative = false
key = "results"
operation = "count"
}
}
}
}
make build
auto-generates code from Swagger, compiles provider, and regenerates docs.
Exclude API resources from the provider by adding them to the excluded list in tools/generate.js
.