Создание стека Grafana Cloud и управление им с помощью Terraform
Узнайте, как добавить источник данных, панель и папку в стек Grafana Cloud с помощью Terraform.
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть следующее:
- Учётная запись Grafana Cloud, как описано в разделе Get started
- Terraform, установленный на вашей машине
Note
Все перечисленные ниже файлы конфигурации Terraform следует сохранить в одном каталоге.
Создание стека Cloud
-
Создайте файл конфигурации Terraform.
Эта конфигурация Terraform создаст стек Grafana Cloud и второй токен, необходимый для вашего экземпляра Grafana.
Создайте файл с именем
cloud-stack.tfи добавьте следующее:terraform { required_providers { grafana = { source = "grafana/grafana" version = ">= 2.9.0" } } } // Step 1: Create a stack provider "grafana" { alias = "cloud" cloud_access_policy_token = "<cloud-access-token>" } resource "grafana_cloud_stack" "my_stack" { provider = grafana.cloud name = "<stack-name>" slug = "<stack-name>" region_slug = "<region>" # Example "us","eu" etc delete_protection = true } // Step 2: Create a service account and key for the stack resource "grafana_cloud_stack_service_account" "cloud_sa" { provider = grafana.cloud stack_slug = grafana_cloud_stack.my_stack.slug name = "<service-account-name>" role = "Admin" is_disabled = false } resource "grafana_cloud_stack_service_account_token" "cloud_sa" { provider = grafana.cloud stack_slug = grafana_cloud_stack.my_stack.slug name = "terraform serviceaccount key" service_account_id = grafana_cloud_stack_service_account.cloud_sa.id } // Step 3: Create resources within the stack provider "grafana" { alias = "my_stack" url = grafana_cloud_stack.my_stack.url auth = grafana_cloud_stack_service_account_token.cloud_sa.key } resource "grafana_folder" "my_folder" { provider = grafana.my_stack title = "Test Folder" } -
Замените следующие значения полей:
<cloud-access-token>на ваш токен политики доступа Grafana Cloud. Чтобы создать новый, обратитесь к разделу Grafana Cloud Access Policies. Добавьте все стеки в список областей (realms). Области доступа, необходимые для примера:- dashboards:read
- orgs:read
- stack-dashboards:read
- stacks:read
- dashboards:write
- orgs:write
- stack-dashboards:write
- stacks:write
- stack-service-accounts:write
- dashboards:delete
- stack-dashboards:delete
- stacks:delete
<stack-name>на имя вашего стека.<region>на регион, в котором вы хотите создать стек. Например,us,eu.<service-account-name>на имя сервисной учётной записи, которая будет создана для использования в операциях внутри стека/экземпляра.
Первый блок провайдера, grafana.cloud, использует токен политики доступа Cloud из Cloud Portal и указывается как параметр при создании стека Cloud и токена в экземпляре Grafana для обеспечения необходимой аутентификации.
Второй блок провайдера, grafana.my_stack, указывается как параметр при создании ресурсов внутри экземпляра Grafana.
Добавление источника данных
В этом руководстве используется источник данных InfluxDB. Требуемые аргументы для grafana_data_source (Resource) зависят от типа выбранного источника данных.
-
Создайте файл с именем
datasource.tfи добавьте следующее:resource "grafana_data_source" "<data-source-name>" { provider = grafana.my_stack type = "influxdb" name = "<data-source-name>" url = "<data-source-url>" username = "<username>" password = "<password>" database_name = "<db-name>" } -
Замените следующие значения полей:
<data-source-name>на имя источника данных, который нужно добавить в Grafana.<data-source-url>на URL вашего источника данных.<username>на имя пользователя для аутентификации в вашем источнике данных.<password>на пароль для аутентификации в вашем источнике данных.<db-name>на имя вашей базы данных.
Добавление папки
Эта конфигурация Terraform создаёт папку в вашем экземпляре Grafana с помощью ресурса grafana_folder (Resource).
-
Создайте файл с именем
folder.tfи добавьте следующее:resource "grafana_folder" "<folder-name>" { provider = grafana.my_stack title = "<folder-name>" } -
Замените следующее значение поля:
<folder-name>на имя папки.
Добавление панели в папку
Эта конфигурация Terraform создаёт панель внутри папки, созданной выше, в вашем экземпляре Grafana с помощью ресурса grafana_dashboard (Resource).
-
Создайте файл с именем
dashboard.tfи добавьте следующее:# Using a JSON file resource "grafana_dashboard" "dashboard" { provider = grafana.my_stack config_json = file("<file-name>.json") folder = grafana_folder.<folder-name>.id } -
Замените следующее значение поля:
<file-name>на имя JSON-файла, содержащего исходный код панели.
Панель представляется её JSON-исходным кодом и указывается в параметре
config_json.
Применение конфигурации Terraform
В терминале выполните следующие команды из каталога, в котором находятся все файлы конфигурации.
-
Инициализируйте рабочий каталог, содержащий файлы конфигурации Terraform.
terraform init -
Просмотрите изменения, которые внесёт Terraform.
terraform plan -
Примените файлы конфигурации.
terraform apply
Проверка
После применения изменений в конфигурациях Terraform вы сможете убедиться в следующем:
-
Новый стек Grafana создан и виден в Cloud Portal
![Cloud Portal]()
-
В ваш экземпляр Grafana добавлен ключевой токен сервисной учётной записи. На следующем изображении ключевой токен сервисной учётной записи с именем “terraform serviceaccount key” был добавлен ресурсом grafana_cloud_stack_service_account_token (Resource).
![API Key]()
-
Новый источник данных (в этом примере InfluxDB) виден в экземпляре Grafana.
![Источник данных InfluxDB]()
-
Новая папка в Grafana. На следующем изображении папка с именем “Demos” была добавлена ресурсом grafana_folder (Resource).
![Папка]()
-
Новая панель в экземпляре Grafana. На следующем изображении панель с именем “InfluxDB Cloud Demos” была создана внутри папки “Demos”.
![Панель InfluxDB]()
Итог
В этом руководстве вы создали стек Grafana Cloud, а также источник данных, папку и панель, импортированную из JSON-файла, с помощью Terraform.
Чтобы узнать больше об управлении Grafana Cloud с помощью Terraform, обратитесь к документации провайдера Grafana.




