41 lines
1.7 KiB
YAML
41 lines
1.7 KiB
YAML
---
|
|
- 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: >
|
|
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.name }}/docker-compose.yml" down --remove-orphans
|
|
loop: "{{ services_to_cleanup }}"
|
|
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
|
|
- (container_check_results.results | selectattr('item.name', 'equalto', item.name) | first).rc == 0
|
|
loop_control:
|
|
label: "{{ item.name }}"
|