From 40802d9d4fb6d9b9be3ce1602e3f7b09f42fe53d Mon Sep 17 00:00:00 2001 From: Tobias Reisinger <tobias@msrg.cc> Date: Sat, 10 May 2025 00:40:03 +0200 Subject: [PATCH] Refactor docker recreate and rebuild flags --- playbooks/roles/_TEMPLATE/handlers/main.yml | 3 +++ playbooks/roles/acme_dns/handlers/main.yml | 3 +++ playbooks/roles/acme_dns/tasks/main.yml | 7 +------ playbooks/roles/caddy/handlers/main.yml | 5 +++++ playbooks/roles/caddy/tasks/main.yml | 7 +------ playbooks/roles/forgejo/handlers/main.yml | 3 +++ playbooks/roles/forgejo/tasks/main.yml | 14 ++------------ playbooks/roles/gatus/handlers/main.yml | 3 +++ playbooks/roles/gatus/tasks/main.yml | 7 +------ playbooks/roles/influxdb/handlers/main.yml | 3 +++ playbooks/roles/influxdb/tasks/main.yml | 7 +------ playbooks/roles/lgtm_stack/handlers/main.yml | 3 +++ playbooks/roles/lgtm_stack/tasks/main.yml | 14 ++------------ .../roles/reitanlage_oranienburg/handlers/main.yml | 5 +++++ .../roles/reitanlage_oranienburg/tasks/main.yml | 7 +------ .../roles/teamspeak_fallback/handlers/main.yml | 3 +++ playbooks/roles/teamspeak_fallback/tasks/main.yml | 7 +------ playbooks/roles/vikunja/handlers/main.yml | 3 +++ playbooks/roles/vikunja/tasks/main.yml | 7 +------ playbooks/tasks/rebuild-service.yml | 7 +++++++ playbooks/tasks/restart-service.yml | 7 +++++++ playbooks/tasks/set-default-facts.yml | 2 -- playbooks/tasks/steps/start-service.yml | 13 +------------ playbooks/tasks/steps/template-site-config.yml | 3 +-- 24 files changed, 61 insertions(+), 82 deletions(-) create mode 100644 playbooks/roles/_TEMPLATE/handlers/main.yml create mode 100644 playbooks/roles/acme_dns/handlers/main.yml create mode 100644 playbooks/roles/caddy/handlers/main.yml create mode 100644 playbooks/roles/forgejo/handlers/main.yml create mode 100644 playbooks/roles/gatus/handlers/main.yml create mode 100644 playbooks/roles/influxdb/handlers/main.yml create mode 100644 playbooks/roles/lgtm_stack/handlers/main.yml create mode 100644 playbooks/roles/reitanlage_oranienburg/handlers/main.yml create mode 100644 playbooks/roles/teamspeak_fallback/handlers/main.yml create mode 100644 playbooks/roles/vikunja/handlers/main.yml create mode 100644 playbooks/tasks/rebuild-service.yml create mode 100644 playbooks/tasks/restart-service.yml diff --git a/playbooks/roles/_TEMPLATE/handlers/main.yml b/playbooks/roles/_TEMPLATE/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/_TEMPLATE/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/acme_dns/handlers/main.yml b/playbooks/roles/acme_dns/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/acme_dns/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/acme_dns/tasks/main.yml b/playbooks/roles/acme_dns/tasks/main.yml index 64fd64e..2056c49 100644 --- a/playbooks/roles/acme_dns/tasks/main.yml +++ b/playbooks/roles/acme_dns/tasks/main.yml @@ -26,12 +26,7 @@ src: config.cfg.j2 dest: "{{ (config_path, 'config.cfg') | path_join }}" mode: "0600" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Import start tasks for common service ansible.builtin.import_tasks: tasks/start-common-service.yml diff --git a/playbooks/roles/caddy/handlers/main.yml b/playbooks/roles/caddy/handlers/main.yml new file mode 100644 index 0000000..015591b --- /dev/null +++ b/playbooks/roles/caddy/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml +- name: Rebuild service {{ role_name }} + ansible.builtin.include_tasks: tasks/rebuild-service.yml diff --git a/playbooks/roles/caddy/tasks/main.yml b/playbooks/roles/caddy/tasks/main.yml index 8a0eb86..79532fc 100644 --- a/playbooks/roles/caddy/tasks/main.yml +++ b/playbooks/roles/caddy/tasks/main.yml @@ -15,12 +15,7 @@ src: Dockerfile dest: "{{ (service_path, 'Dockerfile') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker rebuild flag - ansible.builtin.set_fact: - docker_rebuild: true - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Rebuild service {{ role_name }} - name: Set caddy config path ansible.builtin.set_fact: diff --git a/playbooks/roles/forgejo/handlers/main.yml b/playbooks/roles/forgejo/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/forgejo/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/forgejo/tasks/main.yml b/playbooks/roles/forgejo/tasks/main.yml index c154ff0..af16e16 100644 --- a/playbooks/roles/forgejo/tasks/main.yml +++ b/playbooks/roles/forgejo/tasks/main.yml @@ -16,24 +16,14 @@ src: templates/ dest: "{{ (service_path, 'templates') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Template the custom footer ansible.builtin.template: src: footer.tmpl.j2 dest: "{{ (service_path, 'templates', 'custom', 'footer.tmpl') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Import start tasks for common service ansible.builtin.import_tasks: tasks/start-common-service.yml diff --git a/playbooks/roles/gatus/handlers/main.yml b/playbooks/roles/gatus/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/gatus/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/gatus/tasks/main.yml b/playbooks/roles/gatus/tasks/main.yml index 2b47fe2..278f461 100644 --- a/playbooks/roles/gatus/tasks/main.yml +++ b/playbooks/roles/gatus/tasks/main.yml @@ -16,12 +16,7 @@ src: yml.j2 dest: "{{ (service_path, 'config.yaml') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Import start tasks for common service ansible.builtin.import_tasks: tasks/start-common-service.yml diff --git a/playbooks/roles/influxdb/handlers/main.yml b/playbooks/roles/influxdb/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/influxdb/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/influxdb/tasks/main.yml b/playbooks/roles/influxdb/tasks/main.yml index 487ec1b..d282b1b 100644 --- a/playbooks/roles/influxdb/tasks/main.yml +++ b/playbooks/roles/influxdb/tasks/main.yml @@ -17,12 +17,7 @@ src: yml.j2 dest: "{{ (service_path, 'influxdb.yml') | path_join }}" mode: "0600" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Import start tasks for common service ansible.builtin.import_tasks: tasks/start-common-service.yml diff --git a/playbooks/roles/lgtm_stack/handlers/main.yml b/playbooks/roles/lgtm_stack/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/lgtm_stack/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/lgtm_stack/tasks/main.yml b/playbooks/roles/lgtm_stack/tasks/main.yml index 7d82a15..2ac0538 100644 --- a/playbooks/roles/lgtm_stack/tasks/main.yml +++ b/playbooks/roles/lgtm_stack/tasks/main.yml @@ -19,12 +19,7 @@ src: config.alloy.j2 dest: "{{ (service_path, 'config.alloy') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Template mimir config file ansible.builtin.template: @@ -33,12 +28,7 @@ mode: "0644" vars: yml: "{{ lgtm_stack_mimir_yml }}" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Import start tasks for common service ansible.builtin.import_tasks: tasks/start-common-service.yml diff --git a/playbooks/roles/reitanlage_oranienburg/handlers/main.yml b/playbooks/roles/reitanlage_oranienburg/handlers/main.yml new file mode 100644 index 0000000..015591b --- /dev/null +++ b/playbooks/roles/reitanlage_oranienburg/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml +- name: Rebuild service {{ role_name }} + ansible.builtin.include_tasks: tasks/rebuild-service.yml diff --git a/playbooks/roles/reitanlage_oranienburg/tasks/main.yml b/playbooks/roles/reitanlage_oranienburg/tasks/main.yml index ba38e99..7d1fc1e 100644 --- a/playbooks/roles/reitanlage_oranienburg/tasks/main.yml +++ b/playbooks/roles/reitanlage_oranienburg/tasks/main.yml @@ -15,12 +15,7 @@ url: https://raw.githubusercontent.com/getgrav/docker-grav/master/Dockerfile dest: "{{ (service_path, 'Dockerfile') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker rebuild flag - ansible.builtin.set_fact: - docker_rebuild: true - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Rebuild service {{ role_name }} - name: Import start tasks for common service ansible.builtin.import_tasks: tasks/start-common-service.yml diff --git a/playbooks/roles/teamspeak_fallback/handlers/main.yml b/playbooks/roles/teamspeak_fallback/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/teamspeak_fallback/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/teamspeak_fallback/tasks/main.yml b/playbooks/roles/teamspeak_fallback/tasks/main.yml index 84b1823..985ebd5 100644 --- a/playbooks/roles/teamspeak_fallback/tasks/main.yml +++ b/playbooks/roles/teamspeak_fallback/tasks/main.yml @@ -33,12 +33,7 @@ src: yml.j2 dest: "{{ (config_path, 'hooks.yml') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Copy the teamspeak-fallback-db script ansible.builtin.copy: diff --git a/playbooks/roles/vikunja/handlers/main.yml b/playbooks/roles/vikunja/handlers/main.yml new file mode 100644 index 0000000..4ff0834 --- /dev/null +++ b/playbooks/roles/vikunja/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Restart service {{ role_name }} + ansible.builtin.include_tasks: tasks/restart-service.yml diff --git a/playbooks/roles/vikunja/tasks/main.yml b/playbooks/roles/vikunja/tasks/main.yml index 74ab7ad..ad71ddc 100644 --- a/playbooks/roles/vikunja/tasks/main.yml +++ b/playbooks/roles/vikunja/tasks/main.yml @@ -16,12 +16,7 @@ src: yml.j2 dest: "{{ (service_path, 'config.yml') | path_join }}" mode: "0644" - register: cmd_result - - - name: Set the docker force-recreate flag - ansible.builtin.set_fact: - docker_force_recreate: --force-recreate - when: cmd_result.changed # noqa: no-handler We need to handle the restart per service. Handlers don't support variables. + notify: Restart service {{ role_name }} - name: Import start tasks for common service ansible.builtin.import_tasks: tasks/start-common-service.yml diff --git a/playbooks/tasks/rebuild-service.yml b/playbooks/tasks/rebuild-service.yml new file mode 100644 index 0000000..227677d --- /dev/null +++ b/playbooks/tasks/rebuild-service.yml @@ -0,0 +1,7 @@ +--- +- name: Rebuild service {{ role_name }} + ansible.builtin.command: + cmd: docker compose build --pull + chdir: "{{ (services_path, role_name) | path_join }}" + changed_when: true + notify: Restart service {{ role_name }} diff --git a/playbooks/tasks/restart-service.yml b/playbooks/tasks/restart-service.yml new file mode 100644 index 0000000..4345c60 --- /dev/null +++ b/playbooks/tasks/restart-service.yml @@ -0,0 +1,7 @@ +--- +- name: "Restart service {{ role_name }}" + ansible.builtin.command: + cmd: docker compose up -d --force-recreate + chdir: "{{ (services_path, role_name) | path_join }}" + when: "'local-dev' != inventory_hostname" + changed_when: true diff --git a/playbooks/tasks/set-default-facts.yml b/playbooks/tasks/set-default-facts.yml index 1951e24..9cb9c8e 100644 --- a/playbooks/tasks/set-default-facts.yml +++ b/playbooks/tasks/set-default-facts.yml @@ -2,5 +2,3 @@ - name: Set common facts ansible.builtin.set_fact: service_path: "{{ (services_path, role_name) | path_join }}" - docker_force_recreate: "" - docker_rebuild: false diff --git a/playbooks/tasks/steps/start-service.yml b/playbooks/tasks/steps/start-service.yml index 90f4d57..282484f 100644 --- a/playbooks/tasks/steps/start-service.yml +++ b/playbooks/tasks/steps/start-service.yml @@ -1,13 +1,4 @@ --- -- name: Rebuild service - ansible.builtin.command: - cmd: docker compose build --pull - chdir: "{{ service_path }}" - when: - - docker_rebuild - register: cmd_result - changed_when: true - - name: Build service ansible.builtin.command: cmd: docker compose build --pull @@ -16,7 +7,6 @@ - "'local-dev' != inventory_hostname" - docker_update is defined - docker_update - register: cmd_result changed_when: true - name: Pull service @@ -27,12 +17,11 @@ - "'local-dev' != inventory_hostname" - docker_update is defined - docker_update - register: cmd_result changed_when: true - name: Start service ansible.builtin.command: - cmd: docker compose up -d {{ docker_force_recreate }} + cmd: docker compose up -d chdir: "{{ service_path }}" when: "'local-dev' != inventory_hostname" register: cmd_result diff --git a/playbooks/tasks/steps/template-site-config.yml b/playbooks/tasks/steps/template-site-config.yml index 50ccb5d..b11a9f2 100644 --- a/playbooks/tasks/steps/template-site-config.yml +++ b/playbooks/tasks/steps/template-site-config.yml @@ -4,5 +4,4 @@ src: caddy_site.conf.j2 dest: "{{ (caddy_config_path, role_name + '.conf') | path_join }}" mode: "0644" - notify: - - Reload caddy + notify: Reload caddy