- name: Set up Grafana hosts: lotus-land-story vars_files: - vars.yml vars: version: 11.2.1 tasks: - name: Grafana user ansible.builtin.user: name: grafana register: grafana_user - name: Create Grafana dir ansible.builtin.file: path: /mnt/lotus-land-story/grafana/provisioning/{{ item }} state: directory mode: "0755" owner: "{{ grafana_user.name }}" loop: - datasources - name: Configure Grafana ansible.builtin.copy: dest: /mnt/lotus-land-story/grafana/grafana.ini content: | [log] # level = debug [metrics] enabled = true disable_total_stats = false [server] domain = grafana.{{ domain }} http_addr = 0.0.0.0 root_url = https://grafana.{{ domain }} # https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/configure-authentication [auth] oauth_allow_insecure_email_lookup = true disable_signout_menu = true # https://www.authelia.com/integration/openid-connect/grafana/ [auth.generic_oauth] enabled = true name = Authelia icon = signin client_id = grafana client_secret = {{ grafana.oauth_secret }} scopes = openid profile email groups empty_scopes = false auth_url = https://auth.{{ domain }}/api/oidc/authorization token_url = https://auth.{{ domain }}/api/oidc/token api_url = https://auth.{{ domain }}/api/oidc/userinfo login_attribute_path = preferred_username groups_attribute_path = groups name_attribute_path = name use_pkce = true auto_login = true role_attribute_path = contains(groups, 'admin') && 'Admin' || contains(groups, 'editor') && 'Editor' || 'Viewer' allow_assign_grafana_admin = true [smtp] enabled = true host = smtp.sendgrid.net:465 user = apikey password = {{ grafana.smtp_password }} from_address = grafana@kejadlen.dev mode: "0600" owner: "{{ grafana_user.name }}" - name: Provision Prometheus ansible.builtin.copy: dest: /mnt/lotus-land-story/grafana/provisioning/datasources/prometheus.yml content: | apiVersion: 1 datasources: - name: Prometheus type: prometheus # Access mode - proxy (server in the UI) or direct (browser in the UI). access: proxy url: http://prometheus:9090 jsonData: httpMethod: POST manageAlerts: true prometheusType: Prometheus prometheusVersion: 2.37.0 mode: "0644" - name: Create Grafana volume community.docker.docker_volume: name: grafana - name: Run Grafana community.docker.docker_container: name: grafana image: grafana/grafana-oss:{{ version }} volumes: - /mnt/lotus-land-story/grafana/grafana.ini:/etc/grafana/grafana.ini - /mnt/lotus-land-story/grafana/provisioning:/etc/grafana/provisioning - grafana:/var/lib/grafana env: GF_INSTALL_PLUGINS: https://storage.googleapis.com/integration-artifacts/grafana-lokiexplore-app/grafana-lokiexplore-app-latest.zip;grafana-lokiexplore-app restart_policy: unless-stopped networks: - name: lotus_land_story etc_hosts: host.docker.internal: host-gateway user: "{{ grafana_user.uid }}" # vim: ft=yaml.ansible