diff --git a/config/ansible/tasks/servers/services/service_cleanup.yml b/config/ansible/tasks/servers/services/service_cleanup.yml index a139e59..b0dd8ad 100644 --- a/config/ansible/tasks/servers/services/service_cleanup.yml +++ b/config/ansible/tasks/servers/services/service_cleanup.yml @@ -15,19 +15,26 @@ services_to_cleanup: "{{ services | selectattr('enabled', 'equalto', false) | list }}" - name: Check running containers for disabled services - ansible.builtin.shell: set -o pipefail && docker ps --format '{% raw %}{{.Names}}{% endraw %}' | grep -q {{ item.name }} + ansible.builtin.shell: > + set -o pipefail && + docker compose -f "{{ ansible_env.HOME }}/services/{{ item.name }}/docker-compose.yml" ps --format '{% raw %}{{.Name}}{% endraw %}' | + grep -q {{ item.name }} || true register: container_check_results loop: "{{ services_to_cleanup }}" failed_when: false changed_when: false loop_control: label: "{{ item.name }}" + when: + - item.name in (service_dir_results.results | map(attribute='item.name') | list) + - (service_dir_results.results | selectattr('item.name', 'equalto', item.name) | first).stat.exists - 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 }}" + ansible.builtin.command: docker compose -f "{{ ansible_env.HOME }}/services/{{ item.name }}/docker-compose.yml" down --remove-orphans + loop: "{{ services_to_cleanup }}" when: - - item.1.rc is defined - - item.1.rc == 0 + - item.name in (service_dir_results.results | map(attribute='item.name') | list) + - (service_dir_results.results | selectattr('item.name', 'equalto', item.name) | first).stat.exists + - (container_check_results.results | selectattr('item.name', 'equalto', item.name) | first).rc == 0 loop_control: - label: "{{ item.0.name }}" + label: "{{ item.name }}"