--- - name: Set actual old postgres configuration secret name set_fact: old_postgres_configuration_name: "{{ old_pg_config['resources'][0]['metadata']['name'] }}" - name: Store Database Configuration set_fact: awx_old_postgres_user: "{{ old_pg_config['resources'][0]['data']['username'] | b64decode }}" awx_old_postgres_pass: "{{ old_pg_config['resources'][0]['data']['password'] | b64decode }}" awx_old_postgres_database: "{{ old_pg_config['resources'][0]['data']['database'] | b64decode }}" awx_old_postgres_port: "{{ old_pg_config['resources'][0]['data']['port'] | b64decode }}" awx_old_postgres_host: "{{ old_pg_config['resources'][0]['data']['host'] | b64decode }}" no_log: "{{ no_log }}" - name: Set Default label selector for custom resource generated postgres set_fact: postgres_label_selector: "app.kubernetes.io/instance=postgres-{{ supported_pg_version }}-{{ ansible_operator_meta.name }}" when: postgres_label_selector is not defined - name: Get the postgres pod information k8s_info: kind: Pod namespace: "{{ ansible_operator_meta.namespace }}" label_selectors: - "{{ postgres_label_selector }}" field_selectors: - status.phase=Running register: postgres_pod - name: Set the resource pod name as a variable. set_fact: postgres_pod_name: "{{ postgres_pod['resources'][0]['metadata']['name'] }}" - name: Scale down Deployment for migration include_tasks: scale_down_deployment.yml - name: Set pg_dump command set_fact: pgdump: >- pg_dump -h {{ awx_old_postgres_host }} -U {{ awx_old_postgres_user }} -d {{ awx_old_postgres_database }} -p {{ awx_old_postgres_port }} -F custom {{ pg_dump_suffix }} no_log: "{{ no_log }}" - name: Set pg_restore command set_fact: pg_restore: >- pg_restore --clean --if-exists -U {{ database_username }} -d {{ database_name }} no_log: "{{ no_log }}" - name: Stream backup from pg_dump to the new postgresql container k8s_exec: namespace: "{{ ansible_operator_meta.namespace }}" pod: "{{ postgres_pod_name }}" command: | bash -c " function end_keepalive { rc=$? rm -f \"$1\" kill $(cat /proc/$2/task/$2/children 2>/dev/null) 2>/dev/null || true wait $2 || true exit $rc } keepalive_file=\"$(mktemp)\" while [[ -f \"$keepalive_file\" ]]; do echo 'Migrating data from old database...' sleep 60 done & keepalive_pid=$! trap 'end_keepalive \"$keepalive_file\" \"$keepalive_pid\"' EXIT SIGINT SIGTERM echo keepalive_pid: $keepalive_pid set -e -o pipefail psql -c 'GRANT postgres TO {{ awx_postgres_user }}' PGPASSWORD=\"$PGPASSWORD_OLD\" {{ pgdump }} | PGPASSWORD=\"$POSTGRES_PASSWORD\" {{ pg_restore }} psql -c 'REVOKE postgres FROM {{ awx_postgres_user }}' set +e +o pipefail echo 'Successful' " no_log: "{{ no_log }}" register: data_migration - name: Set flag signifying that this instance has been migrated set_fact: tower_migrated_from_secret: "{{ old_postgres_configuration_name }}"