Skip to content
Snippets Groups Projects
Commit b172e3e0 authored by skorpy's avatar skorpy :construction_worker:
Browse files

grafana: prepare docker compose

parent 64c2273e
Branches
No related tags found
1 merge request!484Grafana: Use Docker
version: '2'
services:
grafana:
image: grafana/grafana:{{ image_tag }}
hostname: grafana
restart: always
mem_limit: 2G
networks:
- proxy
- grafana
volumes:
- {{ data_dir }}:/var/lib/grafana
- {{ provisioning_dir }}:/etc/grafana/provisioning
environment:
GF_SERVER_DOMAIN: {{ domain }}
GF_SERVER_ENFORCE_DOMAIN: "true"
GF_SERVER_ROOT_URL: {{ root_url }}
GF_ANALYTICS_REPORTING_ENABLED: "false"
GF_SECURITY_COOKIE_SECURE: "true"
GF_AUTH_ANONYMOUS_ENABLED: "true"
GF_RENDERING_SERVER_URL: http://renderer:8081/render
GF_RENDERING_CALLBACK_URL: http://grafana:3000/
GF_LOG_FILTERS: rendering:debug
{%- if plugins %}
GF_INSTALL_PLUGINS: "{{ plugins }}"
{%- endif %}
{%- if frontend== 'traefik' %}
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:{{ domain }}"
- "traefik.docker.network=proxy"
- "traefik.port=3000"
{%- elif frontend == 'nginx' %}
ports:
- "127.0.0.1:3000:3000"
{%- endif %}
renderer:
image: grafana/grafana-image-renderer:latest
hostname: renderer
restart: always
mem_limit: 2G
networks:
- grafana
ports:
- 8081
networks:
proxy:
external: true
grafana:
......@@ -6,16 +6,18 @@
{% set volume = docker.volume_root | default('/srv/docker') ~ '/grafana' %}
{% set data_dir = volume ~ '/data' %}
{% set provisioning_dir = volume ~ '/provisioning' %}
{% set compose = docker.volume_root | default('/srv/docker') ~ '/compose' %}
include:
- docker
- docker.compose
grafana:
pkgrepo.absent: []
pkg.purged: []
file.absent:
- name: /etc/apt/sources.list.d/grafana.list
compose-dir:
file.directory:
- name: {{ compose }}
- makedirs: True
- require:
- file: docker-volume-root
docker-volume-grafana:
file.directory:
......@@ -62,64 +64,42 @@ docker-image-grafana/grafana:{{ image_tag }}:
docker_image.present:
- name: grafana/grafana:{{ image_tag }}
- force: true
- require:
- file: docker-volume-root
docker-container-grafana:
docker_container.running:
- image: grafana/grafana:{{ image_tag }}
- name: grafana
- hostname: grafana
- restart_policy: always
- mem_limit: 2G
- binds:
- {{ data_dir }}:/var/lib/grafana
- {{ provisioning_dir }}:/etc/grafana/provisioning
- environment:
- GF_SERVER_DOMAIN: {{ domain }}
- GF_SERVER_ENFORCE_DOMAIN: true
- GF_SERVER_ROOT_URL: {{ grafana.get('external-url') }}
- GF_ANALYTICS_REPORTING_ENABLED: false
- GF_SECURITY_COOKIE_SECURE: true
- GF_AUTH_ANONYMOUS_ENABLED: true
- GF_RENDERING_SERVER_URL: http://renderer:8081/render
- GF_LOG_FILTERS: rendering:debug
{% if plugins %}
- GF_INSTALL_PLUGINS: "{{ plugins|join(',') }}"
{% endif %}
- links:
- renderer:renderer
- require:
- docker_image: docker-image-grafana/grafana:{{ image_tag }}
- file: docker-volume-grafana-data
- file: docker-volume-grafana-provisioning
{% if grafana.get('frontend', '') == 'traefik' %}
- labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:{{ domain }}"
- "traefik.port=3000"
{% elif grafana.get('frontend', '') == 'nginx' %}
- port_bindings:
- '127.0.0.1:3000:3000'
{% endif %}
docker-image-grafana-renderer/grafana/grafana-image-renderer:latest:
docker_image.present:
- name: grafana/grafana-image-renderer:latest
- force: true
docker-container-grafana-renderer:
docker_container.running:
- image: grafana/grafana-image-renderer:latest
- name: renderer
- hostname: renderer
- restart_policy: always
- mem_limit: 2G
grafana-net-proxy:
docker_network.present:
- name: proxy
- attachable: true
{{ compose }}/docker-compose.yml:
file.managed:
- source:
- salt://grafana/files/docker-compose.yml.j2
- user: root
- group: root
- mode: '0644'
- template: jinja
- context:
domain: "{{ domain }}"
data_dir: "{{ data_dir }}"
provisioning_dir: "{{ provisioning_dir }}"
root_url: "{{ grafana.get('external-url') }}"
plugins: "{{ plugins|join(',') }}"
frontend: "{{ grafana.get('frontend', '') }}"
image_tag: "{{ image_tag }}"
- require:
- docker_image: docker-image-grafana/grafana:{{ image_tag }}
- docker_image: docker-image-grafana-renderer/grafana/grafana-image-renderer:latest
- file: docker-volume-grafana-data
- file: docker-volume-grafana-provisioning
- docker_network: grafana-net-proxy
prometheus_grafana_export:
grains.present:
- value: "{{ domain }}:443"
- require:
- docker_container: docker-container-grafana
- file: {{ compose }}/docker-compose.yml
......@@ -43,6 +43,11 @@ docker-image-{{ container }}:{{ version }}:
- require:
- file: docker-volume-root
traefik-net-proxy:
docker_network.present:
- name: proxy
- attachable: true
docker-container-traefik:
docker_container.running:
- image: {{ container }}:{{ version }}
......@@ -53,6 +58,8 @@ docker-container-traefik:
- port_bindings:
- "80:80"
- "443:443"
- networks:
- proxy
- binds:
- /var/run/docker.sock:/var/run/docker.sock
- {{ volume }}/traefik.toml:/traefik.toml
......@@ -61,6 +68,7 @@ docker-container-traefik:
- pkg: docker
- file: {{ volume }}/traefik.toml
- file: {{ volume }}/acme.json
- docker_network: traefik-net-proxy
- watch: *traefik-require
grains-traefik-metrics-host:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment