Add grafana role
This commit is contained in:
parent
e13a935f80
commit
c13ce7cb4d
23
roles/grafana/defaults/main.yaml
Normal file
23
roles/grafana/defaults/main.yaml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
grafana_package_version:
|
||||||
|
grafana_package_name: "grafana{{grafana_package_version}}"
|
||||||
|
grafana_package_state: present
|
||||||
|
|
||||||
|
grafana_service_name: grafana-server.service
|
||||||
|
grafana_service_state: started
|
||||||
|
grafana_service_enabled: yes
|
||||||
|
|
||||||
|
grafana_etc_path: /etc/grafana
|
||||||
|
grafana_config_path: "{{ grafana_etc_path }}/grafana.ini"
|
||||||
|
|
||||||
|
grafana_domain: "stats.{{ ansible_domain }}"
|
||||||
|
grafana_port: "stats.{{ ansible_domain }}"
|
||||||
|
grafana_user: grafana
|
||||||
|
grafana_group: grafana
|
||||||
|
|
||||||
|
grafana_config:
|
||||||
|
server:
|
||||||
|
domain: "{{ grafana_domain }}"
|
||||||
|
root_url: "https://{{ grafana_domain }}"
|
||||||
|
http_addr: localhost
|
||||||
|
http_port: "{{ grafana_port }}"
|
11
roles/grafana/handlers/main.yaml
Normal file
11
roles/grafana/handlers/main.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
- name: grafana daemon-reload
|
||||||
|
systemd:
|
||||||
|
name: "{{ grafana_service_name }}"
|
||||||
|
daemon_reload: yes
|
||||||
|
state: restarted
|
||||||
|
|
||||||
|
- name: restart grafana
|
||||||
|
service:
|
||||||
|
name: "{{ grafana_service_name }}"
|
||||||
|
state: restarted
|
12
roles/grafana/tasks/Debian.yaml
Normal file
12
roles/grafana/tasks/Debian.yaml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
- name: add grafana apt key
|
||||||
|
apt_key:
|
||||||
|
url: https://packages.grafana.com/gpg.key
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: configure apt repository
|
||||||
|
apt_repository:
|
||||||
|
repo: "deb https://packages.grafana.com/oss/deb stable main"
|
||||||
|
filename: influxdb
|
||||||
|
update_cache: yes
|
||||||
|
state: present
|
55
roles/grafana/tasks/main.yaml
Normal file
55
roles/grafana/tasks/main.yaml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
---
|
||||||
|
- name: gather os specific variables
|
||||||
|
include_vars: "{{ lookup('first_found', possible_files) }}"
|
||||||
|
vars:
|
||||||
|
possible_files:
|
||||||
|
files:
|
||||||
|
- "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yaml"
|
||||||
|
- "{{ ansible_distribution }}.yaml"
|
||||||
|
- "{{ ansible_os_family }}.yaml"
|
||||||
|
- "default.yaml"
|
||||||
|
paths:
|
||||||
|
- vars
|
||||||
|
|
||||||
|
- name: include os specific tasks
|
||||||
|
include_tasks: "{{ lookup('first_found', possible_files) }}"
|
||||||
|
vars:
|
||||||
|
possible_files:
|
||||||
|
files:
|
||||||
|
- "{{ ansible_distribution }}-{{ ansible_distribution_version }}.yaml"
|
||||||
|
- "{{ ansible_distribution }}.yaml"
|
||||||
|
- "{{ ansible_os_family }}.yaml"
|
||||||
|
- "default.yaml"
|
||||||
|
paths:
|
||||||
|
- tasks
|
||||||
|
|
||||||
|
- name: install package
|
||||||
|
package:
|
||||||
|
name: "{{ grafana_package_name }}"
|
||||||
|
state: "{{ grafana_package_state }}"
|
||||||
|
|
||||||
|
- name: "create {{ grafana_etc_path }}"
|
||||||
|
file:
|
||||||
|
path: "{{ grafana_etc_path }}"
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: configure
|
||||||
|
template:
|
||||||
|
src: grafana.ini.j2
|
||||||
|
dest: "{{ grafana_config_path }}"
|
||||||
|
owner: root
|
||||||
|
group: "{{ grafana_group }}"
|
||||||
|
mode: 0640
|
||||||
|
notify: restart grafana
|
||||||
|
|
||||||
|
- name: manage service
|
||||||
|
service:
|
||||||
|
name: "{{ grafana_service_name }}"
|
||||||
|
state: "{{ grafana_service_state }}"
|
||||||
|
enabled: "{{ grafana_service_enabled }}"
|
||||||
|
|
||||||
|
- name: configure nginx
|
||||||
|
include: nginx.yaml
|
||||||
|
when: "'nginx' in ansible_play_role_names"
|
17
roles/grafana/tasks/nginx.yaml
Normal file
17
roles/grafana/tasks/nginx.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
- name: configure nginx
|
||||||
|
template:
|
||||||
|
src: nginx.conf.j2
|
||||||
|
dest: /etc/nginx/sites-available/grafana
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
notify: reload nginx
|
||||||
|
|
||||||
|
- name: activate site
|
||||||
|
file:
|
||||||
|
src: /etc/nginx/sites-available/grafana
|
||||||
|
dest: /etc/nginx/sites-enabled/grafana
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
state: link
|
||||||
|
notify: reload nginx
|
22
roles/grafana/templates/grafana.ini.j2
Normal file
22
roles/grafana/templates/grafana.ini.j2
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{%- macro ini_scalar(v) -%}
|
||||||
|
{% if v is sameas True or v is sameas False %}
|
||||||
|
{{ v | bool | lower }}{% if seq %},{% endif %}
|
||||||
|
{% elif v is sameas None %}
|
||||||
|
{{ "" }}
|
||||||
|
{% else %}
|
||||||
|
{{ v }}
|
||||||
|
{%- endif %}
|
||||||
|
{%- endmacro -%}
|
||||||
|
|
||||||
|
{%- macro render_config(config = {}) -%}
|
||||||
|
{% for s, sc in config.items() | default({}) %}
|
||||||
|
[{{ s }}]
|
||||||
|
{% for k, v in sc.items() | default({}) %}
|
||||||
|
{{ k }} = {{ ini_scalar(v) }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
{%- endmacro -%}
|
||||||
|
|
||||||
|
# {{ ansible_managed }}
|
||||||
|
|
||||||
|
{{ render_config(grafana_config) }}
|
44
roles/grafana/templates/nginx.conf.j2
Normal file
44
roles/grafana/templates/nginx.conf.j2
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
{% if ansible_all_ipv6_addresses | length %}
|
||||||
|
listen [::]:80;
|
||||||
|
{% endif %}
|
||||||
|
server_name {{ grafana_domain }};
|
||||||
|
|
||||||
|
location /.well-known/acme-challenge/ {
|
||||||
|
root /var/www/.acme-challenge;
|
||||||
|
try_files $uri =404;
|
||||||
|
}
|
||||||
|
|
||||||
|
{% if grafana_ssl_enabled is defined and
|
||||||
|
grafana_ssl_enabled %}
|
||||||
|
location / {
|
||||||
|
return 301 https://$server_name$request_uri;
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
}
|
||||||
|
|
||||||
|
{% if grafana_ssl_enabled is defined and
|
||||||
|
grafana_ssl_enabled %}
|
||||||
|
server {
|
||||||
|
listen 443 ssl;
|
||||||
|
{% if ansible_all_ipv6_addresses | length %}
|
||||||
|
listen [::]:443 ssl;
|
||||||
|
{% endif %}
|
||||||
|
server_name {{ grafana_domain }};
|
||||||
|
|
||||||
|
{% if grafana_ssl_certificate is defined %}
|
||||||
|
ssl_certificate {{ grafana_ssl_certificate }};
|
||||||
|
{% endif %}
|
||||||
|
{% if grafana_ssl_certificate_key is defined %}
|
||||||
|
ssl_certificate_key {{ grafana_ssl_certificate_key }};
|
||||||
|
{% endif %}
|
||||||
|
{% if grafana_ssl_dhparam is defined %}
|
||||||
|
ssl_dhparam {{ grafana_ssl_dhparam }};
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_pass http://localhost:{{ grafana_port }};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{% endif %}
|
1
roles/grafana/vars/default.yaml
Normal file
1
roles/grafana/vars/default.yaml
Normal file
@ -0,0 +1 @@
|
|||||||
|
---
|
Loading…
Reference in New Issue
Block a user