--- - name: Register temporary docker container set_fact: container_command: "docker run -v '{{ postgres_data_dir | realpath }}:/var/lib/postgresql' centos:8 bash " - name: Check for existing Postgres data (run from inside the container for access to file) shell: cmd: "{{ container_command }} [[ -f /var/lib/postgresql/10/data/PG_VERSION ]] && echo 'exists'" register: pg_version_file ignore_errors: true - name: Record Postgres version shell: "{{ container_command }} cat var/lib/postgresql/10/data/PG_VERSION" register: old_pg_version when: pg_version_file.stdout == 'exists' - name: Determine whether to upgrade postgres set_fact: upgrade_postgres: "{{ old_pg_version is defined and old_pg_version.stdout == '10' | bool }}" when: not old_pg_version.skipped | bool - name: Stop AWX before upgrading postgres docker_service: project_src: "{{ docker_compose_dir }}" stopped: true when: upgrade_postgres | bool - name: Upgrade Postgres shell: | docker run --rm \ -v {{ postgres_data_dir | realpath }}:/var/lib/postgresql \ -e PGUSER={{ pg_username }} -e POSTGRES_INITDB_ARGS="-U {{ pg_username }}" \ tianon/postgres-upgrade:10-to-12 --username={{ pg_username }} when: upgrade_postgres | bool - name: Copy old pg_hba.conf shell: "{{ container_command }} cp /var/lib/postgresql/10/data/pg_hba.conf /var/lib/postgresql/12/data/pg_hba.conf" when: upgrade_postgres | bool - name: Remove old data directory shell: "{{ container_command }} rm -rf /var/lib/postgresql/10/data" when: compose_start_containers|bool