diff --git a/installer/roles/local_docker/tasks/main.yml b/installer/roles/local_docker/tasks/main.yml index 647072b396..971b6e6e95 100644 --- a/installer/roles/local_docker/tasks/main.yml +++ b/installer/roles/local_docker/tasks/main.yml @@ -1,2 +1,52 @@ +--- +- name: Check for existing Postgres data + stat: + path: "{{ postgres_data_dir }}/pgdata/PG_VERSION" + register: pg_version_file + +- name: Record Postgres version + set_fact: + old_pg_version: "{{ lookup('file', postgres_data_dir + '/pgdata/PG_VERSION') }}" + when: pg_version_file.stat.exists + +- name: Determine whether to upgrade postgres + set_fact: + upgrade_postgres: "{{ old_pg_version is defined and old_pg_version == '9.6' }}" + +- name: Set up new postgres paths pre-upgrade + file: + state: directory + path: "{{ item }}" + recurse: yes + when: upgrade_postgres | bool + with_items: + - "{{ postgres_data_dir }}/10/data" + +- name: Stop AWX before upgrading postgres + docker_service: + project_src: "{{ docker_compose_dir }}" + stopped: yes + when: upgrade_postgres | bool + +- name: Upgrade Postgres + shell: | + docker run --rm \ + -v {{ postgres_data_dir }}/pgdata:/var/lib/postgresql/9.6/data \ + -v {{ postgres_data_dir }}/10/data:/var/lib/postgresql/10/data \ + -e PGUSER={{ pg_username }} -e POSTGRES_INITDB_ARGS="-U {{ pg_username }}" \ + tianon/postgres-upgrade:9.6-to-10 --username={{ pg_username }} + when: upgrade_postgres | bool + +- name: Copy old pg_hba.conf + copy: + src: "{{ postgres_data_dir + '/pgdata/pg_hba.conf' }}" + dest: "{{ postgres_data_dir + '/10/data/' }}" + when: upgrade_postgres | bool + +- name: Remove old data directory + file: + path: "{{ postgres_data_dir + '/pgdata' }}" + state: absent + - import_tasks: set_image.yml - import_tasks: compose.yml diff --git a/installer/roles/local_docker/templates/docker-compose.yml.j2 b/installer/roles/local_docker/templates/docker-compose.yml.j2 index 97e98e3e55..e3956b7374 100644 --- a/installer/roles/local_docker/templates/docker-compose.yml.j2 +++ b/installer/roles/local_docker/templates/docker-compose.yml.j2 @@ -128,16 +128,15 @@ services: {% if pg_hostname is not defined %} postgres: - image: centos/postgresql-10-centos7 + image: postgres:10 container_name: awx_postgres restart: unless-stopped volumes: - - {{ postgres_data_dir }}:/var/lib/postgresql/data:Z + - {{ postgres_data_dir }}/10/data/:/var/lib/postgresql/data/pgdata:Z environment: POSTGRES_USER: {{ pg_username }} POSTGRES_PASSWORD: {{ pg_password }} POSTGRES_DB: {{ pg_database }} - POSTGRESQL_ADMIN_PASSWORD: 'postgrespass' # TODO: Remove This PGDATA: /var/lib/postgresql/data/pgdata http_proxy: {{ http_proxy | default('') }} https_proxy: {{ https_proxy | default('') }}