Создание стека Grafana Cloud и управление им с помощью Ansible
В этом руководстве показано, как создать стек Grafana Cloud и добавить источник данных, панель и папку с помощью коллекции Ansible для Grafana. Вы будете управлять своей инфраструктурой Grafana через плейбуки Ansible.
Прежде чем начать
Перед началом убедитесь, что у вас есть следующее:
- Учётная запись Grafana Cloud
- Ansible, установленный на вашем компьютере
Установка коллекции Grafana Ansible
Установите коллекцию Grafana Ansible:
ansible-galaxy collection install grafana.grafana
Эта коллекция предоставляет все модули, необходимые для управления стеками и ресурсами Grafana Cloud.
Создание стека Cloud
Сначала создайте политику доступа Grafana Cloud и получите токен. Он понадобится плейбуку Ansible, чтобы создать стек Grafana Cloud. Обратитесь к разделу Create a Grafana Cloud Access Policy.
Затем создайте файл плейбука Ansible. Этот плейбук создаёт стек Grafana Cloud с помощью модуля Cloud stack.
Для этого создайте файл с именем cloud-stack.yml и добавьте следующее:
- name: Create Grafana Cloud stack
connection: local
hosts: localhost
vars:
grafana_cloud_api_key: '<CLOUD_ACCESS_POLICY_TOKEN>'
stack_name: '<STACK_NAME>'
org_name: '<ORG_NAME>'
tasks:
- name: Create a Grafana Cloud stack
grafana.grafana.cloud_stack:
name: '{{ stack_name }}'
stack_slug: '{{ stack_name }}'
cloud_api_key: '{{ grafana_cloud_api_key }}'
org_slug: '{{ org_name }}'
delete_protection: true
state: present
register: stack_result
- name: Display stack URL
debug:
msg: 'Stack created at: {{ stack_result.url }}'
Замените заполнители своими значениями:
<CLOUD_ACCESS_POLICY_TOKEN>: токен из политики доступа Cloud, созданной вами на портале Grafana Cloud<STACK_NAME>: имя вашего стека<ORG_NAME>: имя организации в Grafana Cloud
Плейбук сохраняет результат создания стека и выводит URL стека, который понадобится для последующего управления ресурсами.
Создание ключа API в вашем стеке Grafana
Создайте ключ API в стеке Grafana. Этот ключ понадобится, чтобы настроить Ansible на создание источников данных, папок и панелей.
- Войдите в свой экземпляр Grafana Cloud.
- Нажмите Administration и выберите API keys.
- Нажмите Add API key.
- В поле Key name введите имя ключа API.
- В поле Role выберите Admin или Editor, чтобы связать роль с этим ключом API.
- Нажмите Copy, чтобы сохранить его для дальнейшего использования.
Добавление ресурсов с помощью плейбуков
Добавление источника данных
В следующих шагах используется источник данных InfluxDB. Требуемые аргументы зависят от типа выбранного вами источника данных.
Создайте файл с именем data-source.yml:
- name: Add/Update data source
connection: local
hosts: localhost
vars:
grafana_url: 'https://<STACK_NAME>.grafana.net'
grafana_api_key: '<GRAFANA_API_KEY>'
data_source_config:
name: '<DATA_SOURCE_NAME>'
type: 'influxdb'
url: '<DATA_SOURCE_URL>'
user: '<USERNAME>'
secureJsonData:
password: '<PASSWORD>'
database: '<DATABASE_NAME>'
uid: '<UID>'
access: 'proxy'
tasks:
- name: Create/Update Data source
grafana.grafana.datasource:
dataSource: '{{ data_source_config }}'
grafana_url: '{{ grafana_url }}'
grafana_api_key: '{{ grafana_api_key }}'
state: present
Замените заполнители своими значениями:
<DATA_SOURCE_NAME>: имя источника данных, который будет добавлен в Grafana<DATA_SOURCE_URL>: URL вашего источника данных<USERNAME>: имя пользователя для аутентификации в вашем источнике данных<PASSWORD>: пароль для аутентификации в вашем источнике данных<DATABASE_NAME>: имя вашей базы данных<UID>: UID вашего источника данных в Grafana<STACK_NAME>: имя вашего стека<GRAFANA_API_KEY>: ключ API, созданный в экземпляре Grafana
Добавление папки
Этот плейбук создаёт папку в вашем экземпляре Grafana с помощью модуля Folder.
Создайте файл с именем folder.yml:
- name: Add/Update Folders
connection: local
hosts: localhost
vars:
grafana_url: 'https://<STACK_NAME>.grafana.net'
grafana_api_key: '<GRAFANA_API_KEY>'
folders:
- title: '<FOLDER_NAME>'
uid: '<UID>'
tasks:
- name: Create/Update a Folder in Grafana
grafana.grafana.folder:
title: '{{ item.title }}'
uid: '{{ item.uid }}'
grafana_url: '{{ grafana_url }}'
grafana_api_key: '{{ grafana_api_key }}'
state: present
loop: '{{ folders }}'
Замените заполнители своими значениями:
<FOLDER_NAME>: имя папки, которая будет добавлена в Grafana<UID>: UID вашей папки в Grafana<STACK_NAME>: имя вашего стека<GRAFANA_API_KEY>: ключ API, созданный в экземпляре Grafana
Добавление панели в папку
Этот плейбук перебирает файлы исходного кода JSON панелей в папке, указанной в dashboards_path, и добавляет их в экземпляр Grafana с помощью модуля Dashboard.
Создайте файл с именем dashboard.yml:
- name: Add/Update Dashboards
connection: local
hosts: localhost
vars:
grafana_url: 'https://<STACK_NAME>.grafana.net'
grafana_api_key: '<GRAFANA_API_KEY>'
dashboards_path: '<PATH_TO_DASHBOARD_FILES>' # Example "./dashboards"
tasks:
- name: Find dashboard files
find:
paths: '{{ dashboards_path }}'
file_type: file
recurse: true
patterns: '*.json'
register: files_matched
no_log: true
- name: Create list of dashboard file names
set_fact:
dashboard_file_names: '{{ dashboard_file_names | default([]) + [item.path] }}'
loop: '{{ files_matched.files }}'
no_log: true
- name: Create/Update a dashboard
grafana.grafana.dashboard:
dashboard: "{{ lookup('ansible.builtin.file', item) }}"
grafana_url: '{{ grafana_url }}'
grafana_api_key: '{{ grafana_api_key }}'
state: present
loop: '{{ dashboard_file_names }}'
Замените заполнители своими значениями:
<PATH_TO_DASHBOARD_FILES>: путь к папке, содержащей файлы исходного кода JSON панелей<STACK_NAME>: имя вашего стека<GRAFANA_API_KEY>: ключ API, созданный в экземпляре Grafana
Запуск плейбуков Ansible
В терминале выполните следующие команды из каталога, где находятся все плейбуки Ansible.
Создайте стек Grafana Cloud:
ansible-playbook cloud-stack.yml
Добавьте источник данных в стек Grafana:
ansible-playbook data-source.yml
Добавьте папку в стек Grafana:
ansible-playbook folder.yml
Добавьте панель в папку вашего стека Grafana:
ansible-playbook dashboard.yml
Проверка конфигурации
После запуска плейбуков Ansible вы можете проверить следующее:
-
Новый стек Grafana Cloud создан и отображается на портале Cloud.
![Портал Cloud]()
-
Новый источник данных (в этом примере InfluxDB) отображается в стеке Grafana.
![Источник данных InfluxDB]()
-
В вашем стеке Grafana доступна новая папка. На следующем изображении была добавлена папка с именем
Demos.![Папка]()
-
В стеке Grafana отображается новая панель. На следующем изображении внутри папки “Demos” была создана панель с именем
InfluxDB Cloud Demos.![Панель InfluxDB]()
Дальнейшие шаги
Вы успешно создали стек Grafana Cloud вместе с источником данных, папкой и панелью с помощью Ansible. Теперь ваша инфраструктура Grafana управляется через код.
Чтобы узнать больше об управлении Grafana с помощью Infrastructure as code:



