Files
ansible/playbooks/playbook_docker_cleanup.yml
2026-07-12 08:44:40 +02:00

57 lines
2.1 KiB
YAML

---
# Czyszczenie nieużywanych obrazów Docker — tylko na hostach, na których Docker
# jest faktycznie zainstalowany (pozostałe hosty są bezpiecznie pomijane).
#
# Domyślnie usuwa wyłącznie obrazy "dangling" (bez tagu) — bezpieczne, nie rusza
# tagowanych obrazów, nawet jeśli akurat nie są używane przez żaden kontener.
#
# Aby usunąć WSZYSTKIE nieużywane obrazy (także tagowane, nieużywane przez żaden
# kontener) — więcej odzyskanego miejsca, ale bardziej agresywne — uruchom z:
# -e "docker_prune_all_images=true"
- name: Czyszczenie nieużywanych obrazów Docker
hosts: all
gather_facts: false
vars:
docker_prune_all_images: false
tasks:
- name: Sprawdź, czy docker jest zainstalowany
ansible.builtin.command: which docker
register: docker_check
changed_when: false
failed_when: false
- name: Pomiń — Docker nie jest zainstalowany na tym hoście
ansible.builtin.debug:
msg: "Docker nie jest zainstalowany na {{ inventory_hostname }} — pomijam."
when: docker_check.rc != 0
- name: Zajętość miejsca przez Dockera przed czyszczeniem
ansible.builtin.command: docker system df
register: docker_df_before
changed_when: false
when: docker_check.rc == 0
- name: Usuń nieużywane obrazy Docker (dangling)
ansible.builtin.command: docker image prune -f
register: prune_result
changed_when: "'Total reclaimed space: 0B' not in prune_result.stdout"
when:
- docker_check.rc == 0
- not docker_prune_all_images
- name: Usuń WSZYSTKIE nieużywane obrazy Docker (także tagowane)
ansible.builtin.command: docker image prune -a -f
register: prune_result_all
changed_when: "'Total reclaimed space: 0B' not in prune_result_all.stdout"
when:
- docker_check.rc == 0
- docker_prune_all_images
- name: Wynik czyszczenia obrazów
ansible.builtin.debug:
msg: >-
{{ (prune_result_all if docker_prune_all_images else prune_result).stdout_lines
| default(['brak danych']) }}
when: docker_check.rc == 0