Add grafana role
This commit is contained in:
		
							
								
								
									
										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 @@
 | 
			
		||||
---
 | 
			
		||||
		Reference in New Issue
	
	Block a user