Ansible 2.5 grafana modules
At work, we needed to automatize grafana installation and grafana provisionning (datasources, plugins and dashboards).
So I’ve created 3 new ansible modules that will be released with the next version of ansible 2.5
The first module is grafana_datasource. If you have to create a lot of different datsources for your grafana instance in multiples organisations, I suggest you to use it.
with a single ansible task, you can create all your datasources. For example if I want to create multiple datasources :
- name: create elasticsearch datasource grafana_datasource: name: "{{ item.name }}" grafana_url: "{{ grafana_url }}" grafana_user: "{{ grafana_user }}" grafana_password: "{{ grafana_password }}" ds_type: "{{ item.type }}" url: "{{ item.url }}" database: "{{ item.database }}" basic_auth_user: "{{ item.basic_auth_user | default('') }}" basic_auth_password: "{{ item.basic_auth_password | default('') }}" esVersion: "{{ item.es_version | default(5) }}" time_field": "{{ item.time_field | default('@timestamp') }}" state: present with_items: "{{ grafana_datasources }}"
where the grafana_datasources variable is :
grafana_datasources: - name: "es_index1" ds_type: "elasticsearch" url: "http://elasticsearch.aperogeek.fr:9200" database: "index_[YYYY.mm.dd]" basic_auth_user: "grafana" basic_auth_password: "{{ grafana_es_password }}" es_version: 56 - name: "influxdb" ds_type: "influxdb" url: "http://elasticsearch.aperogeek.fr:9200" database: "telegraf"
The second module is grafana_plugin. With this one, you can automate the installation and the upgrade of all your grafana plugins. For example :
- name: install - update Grafana piechart panel plugin grafana_plugin: name: grafana-piechart-panel version: latest
And the last one is grafana_dashboard. This one is very great because it allow you to import or backup all your existing dashboards.
- name: import grafana dashboard foo grafana_dashboard: grafana_url: http://grafana.company.com grafana_api_key: XXXXXXXXXXXX state: present message: "updated by ansible" overwrite: true path: /path/to/dashboards/foo.json - name: export dashboard grafana_dashboard: grafana_url: http://grafana.company.com grafana_api_key: XXXXXXXXXXXX state: export slug: foo path: /path/to/dashboards/foo.json
Hope thoses new ansible modules will be usefull for someone 🙂
If you have some suggestion of missing feature in this modules, you can comment in this article or make a pull requests in ansible github repo.