--- - name: Set variables from awxbackup object statuses if provided block: - name: Look up details for the backup k8s_info: api_version: "{{ backup_api_version }}" kind: "{{ backup_kind }}" name: "{{ backup_name }}" namespace: "{{ backup_pvc_namespace }}" register: this_backup - name: Surface error to user block: - name: Set error message set_fact: error_msg: "Cannot read the backup status variables for {{ backup_kind }} {{ backup_name }}." - name: Handle error import_tasks: error_handling.yml - name: Fail early if pvc is defined but does not exist fail: msg: "{{ error_msg }}" when: - this_backup['resources'] | length == 0 - this_backup['resources'][0] is not defined - this_backup['resources'][0]['status'] is not defined - this_backup['resources'][0]['status']['backupClaim'] is not defined - this_backup['resources'][0]['status']['backupDirectory'] is not defined - name: Set backup facts set_fact: backup_pvc: "{{ this_backup['resources'][0]['status']['backupClaim'] }}" backup_dir: "{{ this_backup['resources'][0]['status']['backupDirectory'] }}" when: - backup_name is defined and backup_name != '' # Check to make sure provided pvc exists, error loudly if not. Otherwise, the management pod will just stay in pending state forever. - name: Check provided PVC exists k8s_info: name: "{{ backup_pvc }}" kind: PersistentVolumeClaim namespace: "{{ backup_pvc_namespace }}" register: provided_pvc when: - backup_pvc != '' - name: Surface error to user block: - name: Set error message set_fact: error_msg: "{{ backup_pvc }} does not exist, please create this pvc first." - name: Handle error import_tasks: error_handling.yml - name: Fail early if pvc is defined but does not exist fail: msg: "{{ error_msg }}" when: - backup_pvc != '' - provided_pvc.resources | length == 0 - name: Delete any existing management pod k8s: name: "{{ ansible_operator_meta.name }}-db-management" kind: Pod namespace: "{{ backup_pvc_namespace }}" state: absent force: true wait: true - name: Set default postgres image set_fact: _default_postgres_image: "{{ _postgres_image }}:{{_postgres_image_version }}" - name: Set user provided postgres image set_fact: _custom_postgres_image: "{{ postgres_image }}:{{ postgres_image_version }}" when: - postgres_image | default([]) | length - postgres_image_version is defined and postgres_image_version != '' - name: Set Postgres image URL set_fact: _postgres_image: "{{ _custom_postgres_image | default(lookup('env', 'RELATED_IMAGE_AWX_POSTGRES')) | default(_default_postgres_image, true) }}" - name: Create management pod from the template k8s: name: "{{ ansible_operator_meta.name }}-db-management" kind: Pod state: present definition: "{{ lookup('template', 'management-pod.yml.j2') }}" wait: true - name: Check to make sure backup directory exists on PVC k8s_exec: namespace: "{{ backup_pvc_namespace }}" pod: "{{ ansible_operator_meta.name }}-db-management" container: "{{ ansible_operator_meta.name }}-db-management" command: >- bash -c "stat {{ backup_dir }}" register: stat_backup_dir - name: Error if backup dir is missing block: - name: Set error message set_fact: error_msg: "{{ backup_dir }} does not exist, see the backupDirectory status on your AWXBackup for the correct backup_dir." - name: Handle error import_tasks: error_handling.yml - name: Fail early if backup dir provided does not exist fail: msg: "{{ error_msg }}" when: - backup_dir != '' - stat_backup_dir.return_code != 0