# What this PR does As part of #1953, I wanted to be able to easily locally modify my Grafana instance's access control provisioning configuration. In the `grafana` container in `docker-compose-developer.yml`, we already have this: ```yml volumes: - ./provisioning:/etc/grafana/provisioning ``` The `dev` directory has a `.gitignore` setup which is better suited for what I would like to do. By default, if I add `./dev/grafana/provisioning/access-control/custom-roles.yml`, it will be git-ignored. This would've not been the case with the `./provisioning` directory *Other stuff* - create `./dev/grafana` folder. This folder contains resources that are volume mounted into the `grafana` container in `docker-compose-developer.yml`. - We already had a `./dev/grafana.dev.ini` file, relocated this here. - Relocated `./provisioning` to `./dev/grafana/provisioning`. - consolidate `./examples/terraform` into `./terraform` directory ## Checklist - [ ] Unit, integration, and e2e (if applicable) tests updated (N/A) - [ ] Documentation added (or `pr:no public docs` PR label added if not required) (N/A) - [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not required) (N/A)
106 lines
No EOL
2.9 KiB
HCL
106 lines
No EOL
2.9 KiB
HCL
terraform {
|
|
required_providers {
|
|
grafana = {
|
|
source = "grafana/grafana"
|
|
version = ">= 1.22.0"
|
|
}
|
|
}
|
|
}
|
|
|
|
provider "grafana" {
|
|
alias = "oncall"
|
|
oncall_access_token = <YOUR_API_TOKEN>
|
|
}
|
|
|
|
// Users
|
|
data "grafana_oncall_user" "ikonstantinov" {
|
|
provider = grafana.oncall
|
|
username = "ikonstantinov"
|
|
}
|
|
|
|
data "grafana_oncall_user" "mkukuy" {
|
|
provider = grafana.oncall
|
|
username = "mkukuy"
|
|
}
|
|
|
|
// Schedule
|
|
resource "grafana_oncall_schedule" "primary" {
|
|
provider = grafana.oncall
|
|
name = "Primary"
|
|
type = "calendar"
|
|
time_zone = "UTC"
|
|
shifts = [
|
|
grafana_oncall_on_call_shift.week_shift.id
|
|
]
|
|
}
|
|
|
|
resource "grafana_oncall_on_call_shift" "week_shift" {
|
|
provider = grafana.oncall
|
|
name = "Week shift"
|
|
type = "rolling_users"
|
|
start = "2022-06-01T00:00:00"
|
|
duration = 60 * 60 * 24 // 24 hours
|
|
frequency = "weekly"
|
|
by_day = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"]
|
|
week_start = "MO"
|
|
rolling_users = [
|
|
[data.grafana_oncall_user.ikonstantinov.id],
|
|
[data.grafana_oncall_user.mkukuy.id]
|
|
]
|
|
time_zone = "UTC"
|
|
}
|
|
|
|
// Prod Alertmanager Integration
|
|
resource "grafana_oncall_integration" "prod_alertmanager" {
|
|
provider = grafana.oncall
|
|
name = "Prod AM"
|
|
type = "alertmanager"
|
|
default_route {
|
|
escalation_chain_id = grafana_oncall_escalation_chain.default.id
|
|
}
|
|
}
|
|
|
|
// Routes
|
|
resource "grafana_oncall_route" "critical_route" {
|
|
provider = grafana.oncall
|
|
integration_id = grafana_oncall_integration.prod_alertmanager.id
|
|
escalation_chain_id = grafana_oncall_escalation_chain.critical.id
|
|
routing_regex = "\"severity\": \"critical\""
|
|
position = 0
|
|
}
|
|
|
|
// Default escalation chain
|
|
resource "grafana_oncall_escalation_chain" "default" {
|
|
provider = grafana.oncall
|
|
name = "default"
|
|
}
|
|
|
|
resource "grafana_oncall_escalation" "wait" {
|
|
provider = grafana.oncall
|
|
escalation_chain_id = grafana_oncall_escalation_chain.default.id
|
|
type = "wait"
|
|
duration = 60 * 5
|
|
position = 0
|
|
}
|
|
|
|
resource "grafana_oncall_escalation" "notify_schedule" {
|
|
provider = grafana.oncall
|
|
escalation_chain_id = grafana_oncall_escalation_chain.default.id
|
|
type = "notify_on_call_from_schedule"
|
|
notify_on_call_from_schedule = grafana_oncall_schedule.primary.id
|
|
position = 1
|
|
}
|
|
|
|
// Critical escalation chain
|
|
resource "grafana_oncall_escalation_chain" "critical" {
|
|
provider = grafana.oncall
|
|
name = "critical"
|
|
}
|
|
|
|
resource "grafana_oncall_escalation" "notify_schedule_critical" {
|
|
provider = grafana.oncall
|
|
escalation_chain_id = grafana_oncall_escalation_chain.critical.id
|
|
type = "notify_on_call_from_schedule"
|
|
notify_on_call_from_schedule = grafana_oncall_schedule.primary.id
|
|
position = 0
|
|
} |