From d631695fca38e9a429e5fdcb9f8c3803e1d235e5 Mon Sep 17 00:00:00 2001 From: Olivier Navas Date: Sat, 18 Jun 2022 18:45:52 +0200 Subject: [PATCH] Commit initial --- README.md | 31 +++++++++++++++++++++++++++++++ defaults/main.yml | 0 handlers/main.yml | 5 +++++ tasks/main.yml | 19 +++++++++++++++++++ templates/docker-compose.yml | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 88 insertions(+) create mode 100644 README.md create mode 100644 defaults/main.yml create mode 100644 handlers/main.yml create mode 100644 tasks/main.yml create mode 100644 templates/docker-compose.yml diff --git a/README.md b/README.md new file mode 100644 index 0000000..d00a711 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Role : docker_prometheus + +## Services fournis + +- main.yml : Installation de prometheus sur un serveur docker_host + + +## Variables + +Fournir les variables suivantes. Par exemple : + +```yaml +docker_prometheus_fqdn: prometheus.local.lan +docker_prometheus_version: v0.23.0 +docker_prometheus_data_dir: /data1 +docker_prometheus_service_id: prometheus +docker_prometheus_retention_time: 90d +``` + +| Option | Valeur par défaut | Description | +|----------------------------------|-------------------|--------------------------------------------------------------------------------------------| +| docker_prometheus_fqdn | | Le fqdn pour accéder à prometheus | +| docker_prometheus_version | | Version de l'image prometheus | +| docker_prometheus_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | +| docker_prometheus_service_id | | Le nom de service souhaité : conditionne le nommage des dossiers et le routage par traefik | +| docker_prometheus_retention_time | | La durée de rétention des données dans prometheus | + + +## Configuration de prometheus + +Créer ou modifier le fichier de configuration principal prometheus.yml dans le dossier de configuration à côté du docker-compose et redémarrer le conteneur. diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..e69de29 diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..a8d96b0 --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1,5 @@ +- name: docker-compose-up + shell: | + docker-compose up -d + args: + chdir: /opt/{{ docker_prometheus_service_id }}/ diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..41006cb --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,19 @@ +- name: docker directory + file: + path: /opt/{{ docker_prometheus_service_id }}/ + state: directory + +- name: prometheus configuration directory + file: + path: /opt/{{ docker_prometheus_service_id }}/prometheus + state: directory + +- name: prepare docker-compose.yml + template: + src: "{{ item }}" + dest: /opt/{{ docker_prometheus_service_id }}/ + with_items: + - docker-compose.yml + notify: docker-compose-up + + diff --git a/templates/docker-compose.yml b/templates/docker-compose.yml new file mode 100644 index 0000000..21de512 --- /dev/null +++ b/templates/docker-compose.yml @@ -0,0 +1,33 @@ +# {{ ansible_managed }} + +version: '3.1' + +services: + prometheus: + image: prom/prometheus:{{ docker_prometheus_version }} + environment: + - TZ=Europe/Paris + volumes: + - ./prometheus:/etc/prometheus + - {{ docker_prometheus_data_dir }}/{{ docker_prometheus_service_id }}/prometheus_data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + - '--web.console.libraries=/etc/prometheus/console_libraries' + - '--web.console.templates=/etc/prometheus/consoles' + - '--storage.tsdb.retention.time={{ docker_prometheus_retention_time }}' + - '--web.enable-lifecycle' + restart: always + networks: + - traefik + labels: + - "org.label-schema.group=monitoring" + - "traefik.enable=true" + - "traefik.docker.network=traefik" + - "traefik.http.routers.{{ docker_prometheus_service_id }}.entrypoints=web" + - "traefik.http.routers.{{ docker_prometheus_service_id }}.rule=Host(`{{ docker_prometheus_fqdn }}`)" + - "traefik.http.services.{{ docker_prometheus_service_id }}.loadbalancer.server.port=9090" + +networks: + traefik: + external: true