--- # Performs one upgrade+migrate cycle for a single Appwrite target version. # Called in a loop from upgrade_appwrite.yml with loop_var: appwrite_target_version. - name: "Pull appwrite/appwrite:{{ appwrite_target_version }} image" community.docker.docker_image: name: appwrite/appwrite tag: "{{ appwrite_target_version }}" source: pull - name: "Run Appwrite upgrade container for {{ appwrite_target_version }}" # Runs with -i so stdin can answer all interactive prompts. # Prompt order: overwrite confirmation, HTTP port, HTTPS port, API key, # Appwrite hostname, CNAME hostname, SSL email — all accept defaults except overwrite. # The container writes docker-compose.yml then attempts docker compose up internally; # that step fails because we manage the socket/service lifecycle ourselves. # We only fail this task if the compose file backup was not created (file not written). ansible.builtin.command: argv: - docker - run - --rm - -i - --volume - "{{ appwrite_socket }}:/var/run/docker.sock" - --volume - "{{ appwrite_dir }}:/usr/src/code/appwrite:rw" - --entrypoint=upgrade - "appwrite/appwrite:{{ appwrite_target_version }}" stdin: "y\n\n\n\n\n\n\n" register: upgrade_container_result changed_when: true failed_when: "'creating backup' not in upgrade_container_result.stdout" - name: Re-apply site customizations after upgrade container rewrote docker-compose.yml ansible.builtin.include_tasks: patch_appwrite_compose.yml - name: "Bring up Appwrite stack at {{ appwrite_target_version }}" ansible.builtin.command: argv: - docker - compose - up - -d chdir: "{{ appwrite_dir }}" changed_when: true - name: Wait for appwrite container to be running ansible.builtin.command: argv: - docker - compose - ps - --status - running - --services chdir: "{{ appwrite_dir }}" register: running_services until: "'appwrite' in running_services.stdout" retries: 30 delay: 10 changed_when: false - name: "Run database migration for {{ appwrite_target_version }}" ansible.builtin.command: argv: - docker - compose - exec - -T - appwrite - migrate chdir: "{{ appwrite_dir }}" register: migration_result changed_when: true - name: Show migration output ansible.builtin.debug: var: migration_result.stdout_lines