- name: make sure the `/ansible_docker_compose` directory exists ansible.builtin.file: path: /ansible_docker_compose state: directory mode: "0755" owner: root group: root become: true - name: deploy the Compose file ansible.builtin.copy: content: "{{ docker_compose__compose_file_content }}" dest: /ansible_docker_compose/compose.yaml mode: "0644" owner: root group: root become: true notify: docker compose down - name: deploy the .env file ansible.builtin.copy: content: "{{ docker_compose__env_file_content }}" dest: /ansible_docker_compose/.env mode: "0644" owner: root group: root become: true when: docker_compose__env_file_content is defined notify: docker compose down - name: make sure the `/ansible_docker_compose/configs` directory exists ansible.builtin.file: path: /ansible_docker_compose/configs state: directory mode: "0755" owner: root group: root become: true - name: set `docker_compose__config_files_to_exist` fact initially to an empty list ansible.builtin.set_fact: docker_compose__config_files_to_exist: [ ] - name: add names from `docker_compose__configuration_files` to `docker_compose__config_files_to_exist` fact ansible.builtin.set_fact: docker_compose__config_files_to_exist: "{{ docker_compose__config_files_to_exist + [ item.name ] }}" # noqa: jinja[spacing] loop: "{{ docker_compose__configuration_files }}" - name: find configuration files to remove ansible.builtin.find: paths: /ansible_docker_compose/configs/ recurse: false excludes: "{{ docker_compose__config_files_to_exist }}" register: docker_compose__config_files_to_remove - name: remove all configuration files, which should be removed ansible.builtin.file: path: "{{ item.path }}" state: absent become: true loop: "{{ docker_compose__config_files_to_remove.files }}" notify: docker compose restart - name: make sure all given configuration files are deployed ansible.builtin.copy: content: "{{ item.content }}" dest: "/ansible_docker_compose/configs/{{ item.name }}" mode: "0644" owner: root group: root become: true loop: "{{ docker_compose__configuration_files }}" notify: docker compose restart - name: Flush handlers to make "docker compose down" and "docker compose restart" handlers run now ansible.builtin.meta: flush_handlers - name: docker compose up community.docker.docker_compose_v2: project_src: /ansible_docker_compose state: present build: always pull: always remove_orphans: true become: true - name: Make sure anacron is installed become: true ansible.builtin.package: name: anacron state: present - name: ensure automatic update cron job is present become: true ansible.builtin.cron: name: 'ansible docker compose auto update' minute: "0" hour: "5" job: "cd /ansible_docker_compose; docker compose pull && docker compose up -d" - name: ensure automatic cleanup cron job is present become: true ansible.builtin.cron: name: 'ansible docker compose auto cleanup' minute: "23" hour: "4" job: "docker system prune -a -f"