diff --git a/config/ansible/tasks/servers/server.yml b/config/ansible/tasks/servers/server.yml index 4333b2a..1ca994f 100644 --- a/config/ansible/tasks/servers/server.yml +++ b/config/ansible/tasks/servers/server.yml @@ -23,11 +23,17 @@ - name: Include services tasks ansible.builtin.include_tasks: services/services.yml vars: - caddy_enabled: true - hoarder_enabled: true - golink_enabled: true - immich_enabled: true - gitea_enabled: true + services: + - name: caddy + enabled: true + - name: hoarder + enabled: true + - name: golink + enabled: true + - name: immich + enabled: true + - name: gitea + enabled: true when: - ansible_hostname == "mennos-server" or ansible_hostname == "dotfiles-test" or ansible_hostname == "mennos-cloud-server" - datapool_check is defined diff --git a/config/ansible/tasks/servers/services/service_cleanup.yml b/config/ansible/tasks/servers/services/service_cleanup.yml new file mode 100644 index 0000000..0918ab4 --- /dev/null +++ b/config/ansible/tasks/servers/services/service_cleanup.yml @@ -0,0 +1,33 @@ +--- +- name: Cleanup disabled services + block: + - name: Check service directories + ansible.builtin.stat: + path: "{{ ansible_env.HOME }}/services/{{ item.name }}" + register: service_dir_results + loop: "{{ services }}" + when: not item.enabled|bool + loop_control: + label: "{{ item.name }}" + + - name: Prepare cleanup list + ansible.builtin.set_fact: + services_to_cleanup: "{{ services | selectattr('enabled', 'equalto', false) | list }}" + + - name: Check running containers for disabled services + ansible.builtin.shell: docker ps --format '{% raw %}{{.Names}}{% endraw %}' | grep -q {{ item.name }} + register: container_check_results + loop: "{{ services_to_cleanup }}" + failed_when: false + changed_when: false + loop_control: + label: "{{ item.name }}" + + - name: Stop disabled services if running + ansible.builtin.command: docker compose -f "{{ ansible_env.HOME }}/services/{{ item.0.name }}/docker-compose.yml" down --remove-orphans + loop: "{{ services_to_cleanup | zip(container_check_results.results) | list }}" + when: + - item.1.rc is defined + - item.1.rc == 0 + loop_control: + label: "{{ item.0.name }}" diff --git a/config/ansible/tasks/servers/services/services.yml b/config/ansible/tasks/servers/services/services.yml index 4dd3a20..4e6a2b5 100644 --- a/config/ansible/tasks/servers/services/services.yml +++ b/config/ansible/tasks/servers/services/services.yml @@ -1,16 +1,10 @@ --- -- name: Include caddy tasks - ansible.builtin.include_tasks: caddy/caddy.yml - when: caddy_enabled|bool -- name: Include golink tasks - ansible.builtin.include_tasks: golink/golink.yml - when: golink_enabled|bool -- name: Include hoarder tasks - ansible.builtin.include_tasks: hoarder/hoarder.yml - when: hoarder_enabled|bool -- name: Include immich tasks - ansible.builtin.include_tasks: immich/immich.yml - when: immich_enabled|bool -- name: Include gitea tasks - ansible.builtin.include_tasks: gitea/gitea.yml - when: gitea_enabled|bool +- name: Include service cleanup tasks + ansible.builtin.include_tasks: service_cleanup.yml + +- name: Include service tasks + ansible.builtin.include_tasks: "{{ item.name }}/{{ item.name }}.yml" + loop: "{{ services }}" + when: item.enabled|bool + loop_control: + label: "{{ item.name }}"