80 lines
2.4 KiB
YAML
80 lines
2.4 KiB
YAML
---
|
|
# 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
|