chore: template main grafana config file
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Robert Kaussow 2021-09-04 16:14:20 +02:00
parent 1c191bb7c1
commit dbcd291b72
Signed by: xoxys
GPG Key ID: 4E692A2EAECC03C0
5 changed files with 282 additions and 1 deletions

View File

@ -1 +1,57 @@
---
grafana_packages_extra: []
grafana_instance_name: grafana
grafana_data_dir: /var/lib/grafana
grafana_log_dir: /var/log/grafana
grafana_plugin_dir: "{{ grafana_data_dir }}/plugins"
grafana_bind_ip: 127.0.0.1
grafana_bind_port: 61000
grafana_listen_address: http://localhost
grafana_admin_user: admin
grafana_admin_password: secure
# @var grafana_secret_key:description: Should be replaced by your own secret.
grafana_secret_key: "1234567ABCDEFG"
# @var grafana_db_type:description: >
# Database provider to use. Available options are `mysql`, 'postgres' and `sqlite3`.
# Extended configuration options are only applies to non-sqlite provider.
# @end
grafana_db_type: sqlite3
grafana_db_server: localhost
grafana_db_port: 5432
grafana_db_name: grafana
grafana_db_user: pggrafana
grafana_db_password: secure
grafana_db_ssl_mode: disable
# @var grafana_cache_provider:description: Either `redis`, `memcached' or `database`.
grafana_cache_provider: database
# @var grafana_cache_provider_config:description: >
# Cache connection string options:
# - database: Will use Grafana primary database.
# - redis: Config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.
# - memcache: `127.0.0.1:11211`
# @end
# @var grafana_cache_provider_config: $ "_unset_"
# @var grafana_smtp_host: $ "_unset_"
grafana_smtp_from: "grafana@localhost"
grafana_smtp_from_name: "Grafana"
grafana_smtp_port: 587
# @var grafana_smtp_username: $ "_unset_"
# @var grafana_smtp_password: $ "_unset_"
grafana_auth_providers: []
grafana_log_mode:
- console
- file
grafana_log_level: info
grafana_log_providers: []

10
handlers/main.yml Normal file
View File

@ -0,0 +1,10 @@
---
- name: Restart Grafana
service:
name: grafana-server
state: restarted
daemon_reload: yes
enabled: yes
listen: __grafana_restart
become: True
become_user: root

View File

@ -1,2 +1,2 @@
---
# TODO
- include_tasks: setup.yml

53
tasks/setup.yml Normal file
View File

@ -0,0 +1,53 @@
---
- block:
- name: Add Grafana repository
yum_repository:
name: influxdb
file: InfluxDB
description: InfluxDB Repository
baseurl: https://packages.grafana.com/oss/rpm
gpgkey: https://packages.grafana.com/gpg.key
gpgcheck: yes
- name: Ensure dependencies are installed
package:
name: "{{ item }}"
state: present
loop: "{{ grafana_packages_extra }}"
- name: Ensure Grafana is installed
package:
name: "{{ item }}"
state: present
loop:
- grafana
- name: Ensure Grafana directories exist
file:
path: "{{ item }}"
state: directory
owner: grafana
group: grafana
mode: 0750
loop:
- "{{ grafana_data_dir }}"
- "{{ grafana_log_dir }}"
- "{{ grafana_plugin_dir }}"
- name: Write config file
template:
src: etc/grafana/grafana.ini.j2
dest: /etc/grafana/grafana.ini
owner: root
group: grafana
mode: 0640
notify: __grafana_restart
- name: Ensure Grafana is up and running
service:
name: grafana-server
daemon_reload: yes
enabled: yes
state: started
become: True
become_user: root

View File

@ -0,0 +1,162 @@
{{ ansible_managed | comment }}
# More informations:
# http://docs.grafana.org/installation/configuration
# https://github.com/grafana/grafana/blob/master/conf/sample.ini
app_mode = production
instance_name = {{ grafana_instance_name }}
[paths]
data = {{ grafana_data_dir }}
logs = {{ grafana_log_dir }}
plugins = {{ grafana_plugin_dir }}
[server]
protocol = http
http_addr = {{ grafana_bind_ip }}
http_port = {{ grafana_bind_port }}
domain = {{ grafana_listen_address | urlsplit('hostname') }}
enforce_domain = true
root_url = {{ grafana_listen_address }}
serve_from_sub_path = false
router_logging = false
static_root_path = public
enable_gzip = true
[database]
type = {{ grafana_db_type }}
{% if grafana_db_type == "sqlite3" %}
path = {{ grafana_data_dir }}/grafana.db
cache_mode = private
{% else %}
host = {{ grafana_db_server }}:{{ grafana_db_port }}
name = {{ grafana_db_name }}
user = {{ grafana_db_user }}
password = """{{ grafana_db_password }}"""
ssl_mode = {{ grafana_db_ssl_mode }}
{% endif %}
max_idle_conn = 2
max_open_conn = 0
conn_max_lifetime = 14400
[datasources]
datasource_limit = 5000
[remote_cache]
type = {{ grafana_cache_provider }}
{% if not grafana_cache_provider == "database" %}
connstr =
{% endif %}
[analytics]
reporting_enabled = false
check_for_updates = false
[security]
disable_initial_admin_creation = false
admin_user = {{ grafana_admin_user }}
admin_password = {{ grafana_admin_password }}
secret_key = {{ grafana_secret_key }}
disable_gravatar = true
disable_brute_force_login_protection = false
[dashboards]
versions_to_keep = 20
min_refresh_interval = 5s
[users]
allow_sign_up = false
allow_org_create = false
auto_assign_org = true
auto_assign_org_id = 1
auto_assign_org_role = Viewer
default_theme = light
viewers_can_edit = false
editors_can_admin = false
user_invite_max_lifetime_duration = 24h
hidden_users = {{ grafana_admin_user }}
[auth]
login_cookie_name = grafana_session
login_maximum_inactive_lifetime_duration = 12h
login_maximum_lifetime_duration = 30d
token_rotation_interval_minutes = 10
disable_login_form = false
disable_signout_menu = false
oauth_auto_login = false
oauth_state_cookie_max_age = 600
api_key_max_seconds_to_live = -1
{% for provider in grafana_auth_providers %}
[auth.{{ provider.name }}]
{% if "enabled" not in provider.config %}
enabled = true
{% endif %}
{% for key, value in provider.config %}
{{ key }} = {{ value }}
{% endfor %}
{% endfor %}
[smtp]
{% if grafana_smtp_host is defined %}
enabled = true
host = {{ grafana_smtp_host }}:{{ grafana_smtp_port }}
user = {{ grafana_smtp_username }}
password = """{{ grafana_smtp_password }}"""
skip_verify = false
from_address = {{ grafana_smtp_from }}
from_name = {{ grafana_smtp_from_name }}
{% else %}
enabled = false
{% endif %}
[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html, emails/*.txt
content_types = text/html
[log]
mode = {{ grafana_log_mode | join(" ") }}
level = {{ grafana_log_level | lower }}
{% for provider in grafana_log_providers %}
[log.{{ provider.name }}]
{% if "enabled" not in provider.config %}
enabled = true
{% endif %}
{% for key, value in provider.config %}
{{ key }} = {{ value }}
{% endfor %}
{% endfor %}
[alerting]
enabled = true
execute_alerts = true
[plugins]
enable_alpha = false
plugin_admin_enabled = false
plugin_admin_external_manage_enabled = false
plugin_catalog_url = https://grafana.com/grafana/plugins/
[date_formats]
full_date = YYYY-MM-DD HH:mm:ss
use_browser_locale = true
default_timezone = browser