@@ -95,36 +95,56 @@ resource "grafana_folder" "my_folder" {
9595### Installing Synthetic Monitoring on a new Grafana Cloud Stack
9696
9797``` terraform
98+ variable "cloud_api_key" {
99+ description = "Cloud Access Policy token for Grafana Cloud with the following scopes: accesspolicies:read|write|delete, stacks:read|write|delete"
100+ }
101+ variable "stack_slug" {}
102+ variable "cloud_region" {
103+ default = "us"
104+ }
105+
98106// Step 1: Create a stack
99107provider "grafana" {
100108 alias = "cloud"
101- cloud_api_key = "<my-api-key>"
102- sm_url = "<synthetic-monitoring-api-url>"
109+ cloud_api_key = var.cloud_api_key
103110}
104111
105112resource "grafana_cloud_stack" "sm_stack" {
106113 provider = grafana.cloud
107114
108- name = "<stack-name>"
109- slug = "<stack-slug>"
110- region_slug = "us"
115+ name = var.stack_slug
116+ slug = var.stack_slug
117+ region_slug = var.cloud_region
111118}
112119
113120// Step 2: Install Synthetic Monitoring on the stack
114- resource "grafana_cloud_api_key " "metrics_publish " {
121+ resource "grafana_cloud_access_policy " "sm_metrics_publish " {
115122 provider = grafana.cloud
123+ region = var.cloud_region
124+ name = "metric-publisher-for-sm"
116125
117- name = "MetricsPublisherForSM"
118- role = "MetricsPublisher"
119- cloud_org_slug = "<org-slug>"
126+ scopes = ["metrics:write", "stacks:read"]
127+
128+ realm {
129+ type = "stack"
130+ identifier = grafana_cloud_stack.sm_stack.id
131+ }
120132}
121133
122- resource "grafana_synthetic_monitoring_installation" "sm_stack" {
123- provider = grafana.cloud
134+ resource "grafana_cloud_access_policy_token" "sm_metrics_publish" {
135+ provider = grafana.cloud
136+ region = var.cloud_region
137+ access_policy_id = grafana_cloud_access_policy.sm_metrics_publish.policy_id
138+ name = "metric-publisher-for-sm"
139+ }
124140
125- stack_id = grafana_cloud_stack.sm_stack.id
141+ resource "grafana_synthetic_monitoring_installation" "sm_stack" {
142+ provider = grafana.cloud
143+ stack_id = grafana_cloud_stack.sm_stack.id
144+ metrics_publisher_key = grafana_cloud_access_policy_token.sm_metrics_publish.token
126145}
127146
147+
128148// Step 3: Interact with Synthetic Monitoring
129149provider "grafana" {
130150 alias = "sm"
@@ -133,10 +153,8 @@ provider "grafana" {
133153}
134154
135155data "grafana_synthetic_monitoring_probes" "main" {
136- provider = grafana.sm
137- depends_on = [
138- grafana_synthetic_monitoring_installation.sm_stack
139- ]
156+ provider = grafana.sm
157+ depends_on = [grafana_synthetic_monitoring_installation.sm_stack]
140158}
141159
142160resource "grafana_synthetic_monitoring_check" "ping" {
0 commit comments