From ddb8ca776c74b22105d59e32f2f64285ec9fa505 Mon Sep 17 00:00:00 2001
From: Christian Elberfeld <elberfeld@web.de>
Date: Fri, 21 Jun 2024 12:26:46 +0200
Subject: [PATCH] restart docker after config change

---
 common/docker_dockerstats/tasks/main.yml     | 12 +++++++++---
 common/docker_watchtower/tasks/main.yml      | 11 +++++++++--
 intern/docker_fridgeserver/tasks/main.yml    | 12 ++++++++++--
 intern/docker_grafana/tasks/main.yml         | 11 +++++++++--
 intern/docker_heimdall/tasks/main.yml        | 16 ++++++++++++----
 intern/docker_mqtt/tasks/main.yml            |  7 +++++++
 intern/docker_nodered/tasks/main.yml         | 12 ++++++++++--
 intern/docker_omada/tasks/main.yml           |  7 +++++++
 intern/docker_tasmoadmin/tasks/main.yml      | 15 +++++++++++++--
 remote/docker_homeassistant/tasks/main.yml   |  1 +
 testserver/docker_dockerstats/tasks/main.yml |  3 +++
 testserver/docker_gitea/tasks/main.yml       | 11 +++++++++--
 testserver/docker_gitlab/tasks/main.yml      | 19 +++++++++----------
 testserver/docker_grafana/tasks/main.yml     | 11 +++++++++--
 testserver/docker_nextcloud/tasks/main.yml   | 15 +++++++++++++--
 testserver/docker_vpnserver/tasks/main.yml   |  2 +-
 testserver/docker_wordpress/tasks/main.yml   | 11 +++++++++--
 verwaltung/docker_gitea/tasks/main.yml       | 13 ++++++++++---
 verwaltung/docker_jameica/tasks/main.yml     | 14 +++++++++++---
 verwaltung/docker_nextcloud/tasks/main.yml   | 14 +++++++++++---
 webserver/docker_matterbridge/tasks/main.yml | 14 +++++++++++---
 webserver/docker_uffd/tasks/main.yml         |  3 ++-
 webserver/docker_wordpress/tasks/main.yml    |  9 ++++++++-
 23 files changed, 193 insertions(+), 50 deletions(-)

diff --git a/common/docker_dockerstats/tasks/main.yml b/common/docker_dockerstats/tasks/main.yml
index 18547002..ca80d30e 100644
--- a/common/docker_dockerstats/tasks/main.yml
+++ b/common/docker_dockerstats/tasks/main.yml
@@ -1,7 +1,6 @@
 ---
 
-
-- name: create folder struct for {{ servicename }}
+- name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{ item }}"
     state: "directory"
@@ -15,9 +14,16 @@
     dest: "{{ basedir }}/{{ item }}"
   with_items:
     - docker-compose.yml
+  register: config_files
+
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
 
 
-- name: start {{ servicename }} docker
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
diff --git a/common/docker_watchtower/tasks/main.yml b/common/docker_watchtower/tasks/main.yml
index b7d417b9..508dd400 100644
--- a/common/docker_watchtower/tasks/main.yml
+++ b/common/docker_watchtower/tasks/main.yml
@@ -19,10 +19,17 @@
     dest: "{{ basedir }}/{{ item }}"
   with_items:
     - docker-compose.yml
+  register: config_files
+
+
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
 
-  
 - name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
-    build: always
diff --git a/intern/docker_fridgeserver/tasks/main.yml b/intern/docker_fridgeserver/tasks/main.yml
index df0aa807..a7540ac1 100644
--- a/intern/docker_fridgeserver/tasks/main.yml
+++ b/intern/docker_fridgeserver/tasks/main.yml
@@ -1,4 +1,5 @@
 ---
+
 - name: "create folder struct for {{ servicename }}"
   ansible.builtin.file:
     path: "{{ item }}"
@@ -16,8 +17,15 @@
     mode: '0755'
   with_items:
     - docker-compose.yml
+  register: config_files
 
-- name: start {{ servicename }}
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    state: present
     project_src: "{{ basedir }}"
+    state: present
diff --git a/intern/docker_grafana/tasks/main.yml b/intern/docker_grafana/tasks/main.yml
index a964ae54..17beed73 100644
--- a/intern/docker_grafana/tasks/main.yml
+++ b/intern/docker_grafana/tasks/main.yml
@@ -5,7 +5,7 @@
     - { path: "{{ basedir }}/grafana_admin_pass", length: 12 }
     - { path: "/srv/mqtt/influxdb_token", length: -1 }
 
-- name: create folder struct for grafana
+- name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{ item }}"
     state: "directory"
@@ -27,8 +27,15 @@
     - provisioning/dashboards/dashboards.yml
     - provisioning/dashboards/pixelflut/breakwater.json
     - provisioning/datasources/datasources.yml
+  register: config_files
 
-- name: start grafana docker
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
diff --git a/intern/docker_heimdall/tasks/main.yml b/intern/docker_heimdall/tasks/main.yml
index d34c8ab5..cdb104fb 100644
--- a/intern/docker_heimdall/tasks/main.yml
+++ b/intern/docker_heimdall/tasks/main.yml
@@ -1,5 +1,6 @@
 ---
-- name: create folder struct for {{ servicename }}
+
+- name: "create folder struct for {{ servicename }}"
   ansible.builtin.file:
     path: "{{ item }}"
     state: "directory"
@@ -7,15 +8,22 @@
   with_items:
     - "{{ basedir }}/config"
 
-- name: copy config files for {{ servicename }}
+- name: "copy config files for {{ servicename }}"
   ansible.builtin.template:
     src: "{{ item }}" 
     dest: "{{ basedir }}/{{ item }}"
     mode: '0755'
   with_items:
     - docker-compose.yml
+  register: config_files
 
-- name: start {{ servicename }}
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    state: present
     project_src: "{{ basedir }}"
+    state: present
diff --git a/intern/docker_mqtt/tasks/main.yml b/intern/docker_mqtt/tasks/main.yml
index 910e1729..d34fec1e 100644
--- a/intern/docker_mqtt/tasks/main.yml
+++ b/intern/docker_mqtt/tasks/main.yml
@@ -24,6 +24,13 @@
     - mosquitto.conf
     - telegraf_binary.conf
     - telegraf_float.conf
+  register: config_files
+
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
 
 - name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
diff --git a/intern/docker_nodered/tasks/main.yml b/intern/docker_nodered/tasks/main.yml
index 3a249f0e..8c10b068 100644
--- a/intern/docker_nodered/tasks/main.yml
+++ b/intern/docker_nodered/tasks/main.yml
@@ -1,4 +1,5 @@
 ---
+
 - name: "create folder struct for {{ servicename }}"
   ansible.builtin.file:
     path: "{{ item }}"
@@ -16,8 +17,15 @@
     mode: '0755'
   with_items:
     - "docker-compose.yml"
+  register: config_files
 
-- name: "start {{ servicename }} with docker-compose"
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    state: present
     project_src: "{{ basedir }}"
+    state: present
diff --git a/intern/docker_omada/tasks/main.yml b/intern/docker_omada/tasks/main.yml
index 81cd8b99..e68fe7e7 100644
--- a/intern/docker_omada/tasks/main.yml
+++ b/intern/docker_omada/tasks/main.yml
@@ -22,6 +22,13 @@
     dest: "{{ basedir }}/{{ item }}"
   with_items:
     - docker-compose.yml 
+  register: config_files
+
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
 
 - name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
diff --git a/intern/docker_tasmoadmin/tasks/main.yml b/intern/docker_tasmoadmin/tasks/main.yml
index 3a249f0e..cfa4205a 100644
--- a/intern/docker_tasmoadmin/tasks/main.yml
+++ b/intern/docker_tasmoadmin/tasks/main.yml
@@ -1,4 +1,5 @@
 ---
+
 - name: "create folder struct for {{ servicename }}"
   ansible.builtin.file:
     path: "{{ item }}"
@@ -9,6 +10,7 @@
   with_items:
     - "{{ basedir }}/data/"
 
+
 - name: "copy config files file for {{ servicename }}"
   ansible.builtin.template:
     src: "{{ item }}"
@@ -16,8 +18,17 @@
     mode: '0755'
   with_items:
     - "docker-compose.yml"
+  register: config_files
+
 
-- name: "start {{ servicename }} with docker-compose"
+- name: "stop {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    state: present
     project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+
+- name: "start {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: present
diff --git a/remote/docker_homeassistant/tasks/main.yml b/remote/docker_homeassistant/tasks/main.yml
index df24774f..55bbdf40 100644
--- a/remote/docker_homeassistant/tasks/main.yml
+++ b/remote/docker_homeassistant/tasks/main.yml
@@ -6,6 +6,7 @@
    - { path: "{{ basedir }}/influxdb_password",            length: 12 }
    - { path: "{{ basedir }}/influxdb_token",               length: 32 }
 
+
 - name: "create folder struct for {{ basedir }}"
   file: 
     path: "{{ item }}"
diff --git a/testserver/docker_dockerstats/tasks/main.yml b/testserver/docker_dockerstats/tasks/main.yml
index 67360568..0a9ba2d9 100644
--- a/testserver/docker_dockerstats/tasks/main.yml
+++ b/testserver/docker_dockerstats/tasks/main.yml
@@ -1,4 +1,5 @@
 ---
+
 - name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{ item }}"
@@ -16,11 +17,13 @@
     - docker-compose.yml
   register: config
 
+
 - name: "stop {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: absent
 
+
 - name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
diff --git a/testserver/docker_gitea/tasks/main.yml b/testserver/docker_gitea/tasks/main.yml
index 236f1dc6..db32673c 100644
--- a/testserver/docker_gitea/tasks/main.yml
+++ b/testserver/docker_gitea/tasks/main.yml
@@ -6,7 +6,7 @@
     - { path: "{{ basedir }}/secrets/mysql_user_pw", length: 12 }
     - { path: "{{ basedir }}/secrets/gitea_admin_pass", length: 12 }
 
-- name: create folder struct for gitea
+- name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{item}}" 
     state: "directory"
@@ -23,8 +23,15 @@
     dest: "{{ basedir }}/{{item}}"
   with_items:
     - "docker-compose.yml"
+  register: config_files
 
-- name: start gitea docker
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
diff --git a/testserver/docker_gitlab/tasks/main.yml b/testserver/docker_gitlab/tasks/main.yml
index 0f143cd3..5238a9bc 100644
--- a/testserver/docker_gitlab/tasks/main.yml
+++ b/testserver/docker_gitlab/tasks/main.yml
@@ -6,9 +6,8 @@
     - { path: /srv/gitlab/oidc_client_secret,  length: 32 }
     - { path: /srv/gitlab/runner_registration_token,  length: -1 }
 
-# Benötigte Verzeichnisstrukturen erstellen
 
-- name: create folder structur for gitlab
+- name: "create folder structur for {{ servicename }}"
   file:
     path: "{{ item }}"
     state: directory
@@ -21,7 +20,6 @@
     - "/srv/gitlab/log"
     - "/srv/gitlab/runner"
 
-# Konfigurationsdateien erstellen
 
 - name: Konfig-Datei Gitlab
   template:
@@ -30,16 +28,17 @@
   with_items:
     - "conf/gitlab.rb"
     - "docker-compose.yml"
-  register: configs
+  register: config_files
 
 
-- name: stop gitlab docker
+- name: "stop {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    project_src: /srv/gitlab/
+    project_src: "{{ basedir }}"
     state: absent
-  when: configs.changed
+  when: config_files.changed 
 
-- name: start gitlab docker
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    project_src: /srv/gitlab/
-    state: present
+    project_src: "{{ basedir }}"
+    state: present
\ No newline at end of file
diff --git a/testserver/docker_grafana/tasks/main.yml b/testserver/docker_grafana/tasks/main.yml
index 7254d033..a80626fb 100644
--- a/testserver/docker_grafana/tasks/main.yml
+++ b/testserver/docker_grafana/tasks/main.yml
@@ -6,7 +6,7 @@
     - { path: "{{ basedir }}/secrets/oauth_client_secret", length: 32 }
 #    - { path: "/srv/mqtt/influxdb_token", length: -1 }
 
-- name: create folder struct for grafana
+- name: "create folder struct for {{ servicename }}"
   ansible.builtin.file: 
     path: "{{ item }}"
     state: "directory"
@@ -27,8 +27,15 @@
   with_items:
     - docker-compose.yml
     - grafana.ini
+  register: config_files
 
-- name: start grafana docker
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
diff --git a/testserver/docker_nextcloud/tasks/main.yml b/testserver/docker_nextcloud/tasks/main.yml
index 57528eaf..b70c077e 100644
--- a/testserver/docker_nextcloud/tasks/main.yml
+++ b/testserver/docker_nextcloud/tasks/main.yml
@@ -8,7 +8,7 @@
     - { path: "{{ basedir }}/secrets/mysql_user_pass",  length: 12 }
 
 
-- name: create folder struct for nextcloud
+- name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{ item }}"
     state: "directory"
@@ -31,6 +31,7 @@
     - "docker-compose.yml"
     - "memory-limit.ini"
 
+
 - name: Nextcloud Konfig-Dateien erstellen
   template: 
     src: "{{ item }}" 
@@ -38,6 +39,8 @@
   with_items:
     - "custom.config.php"
     - "oidc.config.php"
+  register: config_files
+
 
 - name: Script Helper erstellen
   template: 
@@ -47,7 +50,15 @@
   with_items:
     - "occ.sh"
 
-- name: start nextcloud docker
+
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
diff --git a/testserver/docker_vpnserver/tasks/main.yml b/testserver/docker_vpnserver/tasks/main.yml
index 21147c81..f63bad1d 100644
--- a/testserver/docker_vpnserver/tasks/main.yml
+++ b/testserver/docker_vpnserver/tasks/main.yml
@@ -7,7 +7,7 @@
     - { path: "{{ basedir }}/secrets/wg_private_key",  length: -1 } # 'wg genkey'
 
 
-- name: create folder struct for vpnserver
+- name: "create folder struct for {{ servicename }}"
   file:
     path: "{{ item }}"
     state: "directory"
diff --git a/testserver/docker_wordpress/tasks/main.yml b/testserver/docker_wordpress/tasks/main.yml
index 46107a11..6c0fe80f 100644
--- a/testserver/docker_wordpress/tasks/main.yml
+++ b/testserver/docker_wordpress/tasks/main.yml
@@ -8,7 +8,7 @@
    - { path: "{{ basedir }}/wordpress_admin_pass",  length: 24 }
    - { path: "{{ basedir }}/wordpress_client_secret",  length: 32 }
 
-- name: create folder struct for wordpress
+- name: "create folder struct for {{ servicename }}"
   file:
     path: "{{ item }}"
     state: "directory"
@@ -32,8 +32,15 @@
     - docker-compose.yml
     - config/uploads.ini
     - data/wp-content/plugins/wz-status/wz-status.php
+  register: config_files
 
-- name: start wordpress docker
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
diff --git a/verwaltung/docker_gitea/tasks/main.yml b/verwaltung/docker_gitea/tasks/main.yml
index 780d0919..fb2eb4df 100644
--- a/verwaltung/docker_gitea/tasks/main.yml
+++ b/verwaltung/docker_gitea/tasks/main.yml
@@ -5,7 +5,7 @@
     - { path: /srv/gitea/mysql_root_pw, length: 24 }
     - { path: /srv/gitea/mysql_user_pw, length: 12 }
 
-- name: create folder struct for gitea
+- name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{item}}" 
     state: "directory"
@@ -21,9 +21,16 @@
     dest: "/srv/gitea/{{item}}"
   with_items:
     - "docker-compose.yml"
+  register: config_files
 
-- name: start gitea docker
+- name: "stop {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    project_src: /srv/gitea/
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
     state: present
   
diff --git a/verwaltung/docker_jameica/tasks/main.yml b/verwaltung/docker_jameica/tasks/main.yml
index f8056c7b..c8a11900 100644
--- a/verwaltung/docker_jameica/tasks/main.yml
+++ b/verwaltung/docker_jameica/tasks/main.yml
@@ -3,7 +3,7 @@
   with_items:
    - { path: /srv/ldap/secret/ldap_readonly_pass,  length: -1 }
   
-- name: create folder struct for jameica
+- name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{item}}" 
     state: "directory"
@@ -21,9 +21,17 @@
     - "jameica.conf"
     - "jameica.sh"
     - "nginx.conf"
+  register: config_files
 
-- name: start jameica docker
+- name: "stop {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    project_src: /srv/jameica-vnc/
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+
+- name: "start {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
     state: present
     
diff --git a/verwaltung/docker_nextcloud/tasks/main.yml b/verwaltung/docker_nextcloud/tasks/main.yml
index 5b51f6a9..0d8f70c6 100644
--- a/verwaltung/docker_nextcloud/tasks/main.yml
+++ b/verwaltung/docker_nextcloud/tasks/main.yml
@@ -7,7 +7,7 @@
     - { path: /srv/nextcloud/mysql_user_pass,  length: 12 }
 
 
-- name: create folder struct for nextcloud
+- name: "create folder struct for {{ servicename }}"
   file: 
     path: "{{ item }}"
     state: "directory"
@@ -27,11 +27,19 @@
   with_items:
     - "docker-compose.yml"
     - "memory-limit.ini"
+  register: config_files
 
 
-- name: start nextcloud docker
+- name: "stop {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    project_src: /srv/nextcloud/
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+
+- name: "start {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
     state: present
 
 
diff --git a/webserver/docker_matterbridge/tasks/main.yml b/webserver/docker_matterbridge/tasks/main.yml
index b22fb98f..d37039e0 100644
--- a/webserver/docker_matterbridge/tasks/main.yml
+++ b/webserver/docker_matterbridge/tasks/main.yml
@@ -48,9 +48,17 @@
   template: 
     src: "docker-compose.yml" 
     dest: "/srv/matterbridge/docker-compose.yml"
-  
-- name: start matterbridge docker
+  register: config_files
+
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
-    project_src: /srv/matterbridge/
+    project_src: "{{ basedir }}"
     state: present
   
diff --git a/webserver/docker_uffd/tasks/main.yml b/webserver/docker_uffd/tasks/main.yml
index 747d458c..06dd2d69 100644
--- a/webserver/docker_uffd/tasks/main.yml
+++ b/webserver/docker_uffd/tasks/main.yml
@@ -37,4 +37,5 @@
 - name: start {{servicename}} docker
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
-    state: present
\ No newline at end of file
+    state: present
+    build: always
diff --git a/webserver/docker_wordpress/tasks/main.yml b/webserver/docker_wordpress/tasks/main.yml
index 2a26b487..a17e7981 100644
--- a/webserver/docker_wordpress/tasks/main.yml
+++ b/webserver/docker_wordpress/tasks/main.yml
@@ -30,8 +30,15 @@
     - docker-compose.yml
     - config/uploads.ini
     - data/wp-content/plugins/wz-status/wz-status.php
+  register: config_files
 
-- name: start wordpress docker
+- name: "stop {{ servicename }} docker"
+  community.docker.docker_compose_v2:
+    project_src: "{{ basedir }}"
+    state: absent
+  when: config_files.changed 
+
+- name: "start {{ servicename }} docker"
   community.docker.docker_compose_v2:
     project_src: "{{ basedir }}"
     state: present
-- 
GitLab