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