- hosts: all # serial: 5 tasks: - name: gather service facts service_facts: - name: check for docker set_fact: docker_running: "'docker.service' in ansible_facts.services and ansible_facts.services['docker.service']['state']=='running'" - name: check for running containers ansible.builtin.shell: docker ps | grep -v CONTAINER\ ID register: running_docker ignore_errors: true when: docker_running - name: verify that /docker exists stat: path: /docker register: my_docker when: running_docker and docker_running - name: update system ansible.builtin.apt: update_cache: yes autoclean: yes autoremove: yes upgrade: yes - name: pull docker updates command: find /docker -maxdepth 1 -type d -exec /bin/sh 'cd {}; [ -f .env ] && echo {} && docker compose pull' \; become: true become_user: root when: running_docker and my_docker.stat.exists and docker_running - name: install docker updates command: find /docker -maxdepth 1 -type d -exec /bin/sh 'cd {}; [ -f .env ] && echo {} && docker compose up -d' \; become: true become_user: root when: running_docker.stdout and my_docker.stat.exists and docker_running - name: prune system command: docker system prune -a -f become: true become_user: root when: running_docker.stdout and my_docker.stat.exists and docker_running