--- - name: Upgrade Appwrite hosts: bab1.mgmt.toal.ca vars: appwrite_dir: /home/ptoal/appwrite appwrite_socket: /var/run/docker.sock appwrite_web_port: 8080 appwrite_websecure_port: 8443 # Sequential upgrade path: cannot skip minor versions. upgrade_path: - "1.6.2" - "1.7.4" - "1.8.1" tasks: - name: Get current Appwrite container info community.docker.docker_container_info: name: appwrite register: appwrite_container_info - name: Set current Appwrite version fact ansible.builtin.set_fact: current_appwrite_version: >- {{ appwrite_container_info.container.Config.Image.split(':') | last if appwrite_container_info.exists else '0.0.0' }} - name: Show current Appwrite version ansible.builtin.debug: msg: "Current Appwrite version: {{ current_appwrite_version }}" - name: Back up MariaDB data volume before upgrade ansible.builtin.command: argv: - docker - run - --rm - --volume - appwrite-mariadb:/data:ro - --volume - "{{ appwrite_dir }}:/backup" - alpine - tar - czf - /backup/mariadb-backup-pre-upgrade.tar.gz - /data changed_when: true - name: Upgrade through each intermediate version ansible.builtin.include_tasks: tasks/upgrade_appwrite_step.yml loop: "{{ upgrade_path }}" loop_control: loop_var: appwrite_target_version when: appwrite_target_version is version(current_appwrite_version, '>') - name: Prune dangling images left by upgrade community.docker.docker_prune: images: true images_filters: dangling: true