blob: ffba11087cb88e4d828e1b66b8315db9a064224a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
---
- name: add debian repository
include_role:
name: apt-repo/grafana
- name: generate apt pin file for grafana package
when: grafana_version is defined
copy:
dest: "/etc/apt/preferences.d/grafana.pref"
content: |
Package: grafana
Pin: version {{ grafana_version }}
Pin-Priority: 1001
- name: remove apt pin file for grafana package
when: grafana_version is not defined
file:
path: "/etc/apt/preferences.d/grafana.pref"
state: absent
- name: install apt packages
apt:
name: "grafana{% if grafana_version is defined %}={{ grafana_version }}{% endif %}"
state: present
allow_downgrade: yes
- name: configure grafana server
loop: "{{ grafana_config_server | dict2items }}"
loop_control:
label: "{{ item.key }}"
ini_file:
path: /etc/grafana/grafana.ini
section: server
option: "{{ item.key }}"
value: "{{ item.value | string }}"
notify: restart grafana
- name: configure grafana analytics
loop: "{{ grafana_config_analytics | dict2items }}"
loop_control:
label: "{{ item.key }}"
ini_file:
path: /etc/grafana/grafana.ini
section: analytics
option: "{{ item.key }}"
value: "{{ item.value | string }}"
notify: restart grafana
- name: configure grafana security
loop: "{{ grafana_config_security | dict2items }}"
loop_control:
label: "{{ item.key }}"
ini_file:
path: /etc/grafana/grafana.ini
section: security
option: "{{ item.key }}"
value: "{{ item.value | string }}"
notify: restart grafana
- name: configure grafana users
loop: "{{ grafana_config_users | dict2items }}"
loop_control:
label: "{{ item.key }}"
ini_file:
path: /etc/grafana/grafana.ini
section: users
option: "{{ item.key }}"
value: "{{ item.value | string }}"
notify: restart grafana
- name: install datasources
copy:
dest: "/etc/grafana/provisioning/datasources/ansible.yml"
content: |
apiVersion: 1
deleteDatasources: []
{{ {'datasources': grafana_datasources} | to_nice_yaml(indent=2) }}
group: grafana
mode: 0640
no_log: yes
notify: restart grafana
- name: install datasources
copy:
dest: "/etc/grafana/provisioning/dashboards/ansible.yml"
content: |
apiVersion: 1
providers:
- name: ansible'
folder: ''
options:
path: /var/lib/grafana/dashboards/ansible
foldersFromFilesStructure: true
group: grafana
mode: 0644
notify: restart grafana
- name: create directory for dashboards
file:
path: /var/lib/grafana/dashboards/ansible
state: directory
group: grafana
mode: 0750
- name: install dashboards from file
loop: "{{ grafana_dashboards | selectattr('file', 'defined') }}"
loop_control:
label: "{{ item.file }} -> {{ item.datasource }}"
copy:
content: "{{ lookup('file', 'dashboard-'+item.file+'.json') | regex_replace('\"(?:\\${)?DS_[A-Z0-9_-]+(?:})?\"', '\"'+item.datasource+'\"') }}\n"
dest: "/var/lib/grafana/dashboards/ansible/{{ item.datasource }}_{{ item.file }}.json"
- name: install dashboards from content
loop: "{{ grafana_dashboards | selectattr('content', 'defined') }}"
loop_control:
label: "{{ item.name }} -> {{ item.datasource }}"
copy:
content: "{{ item.content | regex_replace('\"(?:\\${)?DS_[A-Z0-9_-]+(?:})?\"', '\"'+item.datasource+'\"') }}\n"
dest: "/var/lib/grafana/dashboards/ansible/{{ item.datasource }}_{{ item.name }}.json"
## TODO: implement this
- name: install dashboards from grafana.com
loop: "{{ grafana_dashboards | selectattr('id', 'defined') }}"
loop_control:
label: "https://grafana.com/api/dashboards/{{ item.id }} -> {{ item.datasource }}"
debug:
msg: 'installing dashboards from grafana.com is not yet supported!'
- name: make sure grafana-server is enabled and started
systemd:
name: grafana-server
state: started
enabled: yes
|