--- - name: make sure the `/ansible_docker_compose` directory exists tags: [ "docker_compose" ] ansible.builtin.file: path: /ansible_docker_compose state: directory mode: "0755" owner: root group: root become: true - name: deploy the Compose file tags: [ "docker_compose" ] 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 tags: [ "docker_compose" ] 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 tags: [ "docker_compose" ] 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 tags: [ "docker_compose" ] 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 tags: [ "docker_compose" ] 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 }}" loop_control: label: "{{ item.name }}" - name: find configuration files to remove tags: [ "docker_compose" ] 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 tags: [ "docker_compose" ] 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 tags: [ "docker_compose" ] 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 }}" loop_control: label: "{{ item.name }}" notify: docker compose restart - name: Sync files tags: [ "docker_compose" ] ansible.posix.synchronize: src: "{{ docker_compose__files }}/" dest: "/ansible_docker_compose/files" archive: false recursive: true delete: true become: true notify: docker compose restart when: docker_compose__files != "" - name: Flush handlers to make "docker compose down" and "docker compose restart" handlers run now tags: [ "docker_compose" ] ansible.builtin.meta: flush_handlers - name: docker compose up tags: [ "docker_compose" ] community.docker.docker_compose_v2: project_src: /ansible_docker_compose state: present build: "{{ docker_compose__build }}" pull: "{{ docker_compose__pull }}" remove_orphans: true become: true - name: Make sure anacron is installed tags: [ "docker_compose" ] become: true ansible.builtin.package: name: anacron state: present - name: ensure automatic update cron job is present tags: [ "docker_compose" ] 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"