57 lines
2.1 KiB
YAML
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
|