--- - 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 != '' or backup_name is defined # 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: "{{ meta.name }}-db-management" kind: Pod namespace: "{{ backup_pvc_namespace }}" state: absent force: true wait: true - name: Create management pod from templated deployment config k8s: name: "{{ meta.name }}-db-management" kind: Deployment state: present template: "management-pod.yml.j2" wait: true - name: Check to make sure backup directory exists on PVC k8s_exec: namespace: "{{ backup_pvc_namespace }}" pod: "{{ 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