summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorEgor Tensin <egor@tensin.name>2025-11-15 18:27:30 +0100
committerEgor Tensin <egor@tensin.name>2025-11-15 18:40:27 +0100
commitc9da27133c68154a21af03f078955da8fe25119e (patch)
tree626d6a25d37277fadb6292e3f85c1e4ba2e376ad
parentuse the builtin quote filter everywhere (diff)
downloadinfra-ansible-c9da27133c68154a21af03f078955da8fe25119e.tar.gz
infra-ansible-c9da27133c68154a21af03f078955da8fe25119e.zip
docker: factor out pruning tasks
-rw-r--r--roles/docker/tasks/main.yml20
-rw-r--r--roles/docker/tasks/prune.yml29
2 files changed, 32 insertions, 17 deletions
diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml
index 84e3064..ac23d2f 100644
--- a/roles/docker/tasks/main.yml
+++ b/roles/docker/tasks/main.yml
@@ -26,12 +26,9 @@
name: "{{ docker_package_names }}"
state: present
-# Dependencies of the community.docker.docker_prune Ansible module:
-- name: Install module dependencies
- become: true
- ansible.builtin.package:
- name: "{{ docker_prune_module_deps }}"
- state: present
+# The docker system prune call should be before enabling/disabling the service
+# and socket, otherwise the service could be woken up.
+- ansible.builtin.import_tasks: prune.yml
- name: Enable & start Docker service
become: true
@@ -46,14 +43,3 @@
name: docker.socket
enabled: "{{ docker_enable_socket }}"
state: "{{ docker_enable_socket | ternary('started', 'stopped') }}"
-
-- name: Clean up Docker data
- become: true
- community.docker.docker_prune:
- builder_cache: true
- containers: true
- images: true
- images_filters:
- dangling: false
- networks: true
- volumes: true
diff --git a/roles/docker/tasks/prune.yml b/roles/docker/tasks/prune.yml
new file mode 100644
index 0000000..5170e74
--- /dev/null
+++ b/roles/docker/tasks/prune.yml
@@ -0,0 +1,29 @@
+- name: Collect service facts
+ community.general.systemd_info:
+ unitname:
+ - docker.service
+ - docker.socket
+ register: systemd_info
+
+- name: Clean up docker data
+ become: true
+ when: |
+ systemd_info.units['docker.service'].substate == 'running'
+ or systemd_info.units['docker.socket'].substate == 'listening'
+ or systemd_info.units['docker.socket'].substate == 'running'
+ block:
+ # Dependencies of the community.docker.docker_prune Ansible module:
+ - name: Install module dependencies
+ ansible.builtin.package:
+ name: "{{ docker_prune_module_deps }}"
+ state: present
+
+ - name: Run docker system prune
+ community.docker.docker_prune:
+ builder_cache: true
+ containers: true
+ images: true
+ images_filters:
+ dangling: false
+ networks: true
+ volumes: true