diff --git a/roles/system_check/tasks/_placement.yml b/roles/system_check/tasks/_placement.yml index aaf43b7..5910011 100644 --- a/roles/system_check/tasks/_placement.yml +++ b/roles/system_check/tasks/_placement.yml @@ -50,6 +50,9 @@ esxi_hostname: "{{ hypervisor_cfg.node }}" register: system_check_esxi delegate_facts: true + until: system_check_esxi.ansible_facts is defined + retries: 3 + delay: 10 failed_when: false changed_when: false no_log: true @@ -84,6 +87,9 @@ community.vmware.vmware_datastore_info: cluster: "{{ hypervisor_cfg.cluster }}" register: system_check_cluster + until: system_check_cluster.datastores is defined + retries: 3 + delay: 10 failed_when: false changed_when: false no_log: true @@ -132,6 +138,10 @@ path: "{{ item.path }}" state: file register: system_check_media_files + # A missing file fails with status 404; a dropped vCenter connection fails with status None. + until: system_check_media_files is not failed or system_check_media_files.status is not none + retries: 3 + delay: 10 failed_when: false changed_when: false loop: "{{ system_check_datastores_needed | rejectattr('source', 'equalto', 'hypervisor.storage') | list }}" diff --git a/roles/system_check/tasks/main.yml b/roles/system_check/tasks/main.yml index 95a7b6a..d47b411 100644 --- a/roles/system_check/tasks/main.yml +++ b/roles/system_check/tasks/main.yml @@ -82,6 +82,11 @@ name: "{{ hostname }}" folder: "{{ system_cfg.path if system_cfg.path | length > 0 else omit }}" register: system_check_vmware_check_result + until: >- + not system_check_vmware_check_result.failed + or (system_check_vmware_check_result.msg is search('non-existing VM')) + retries: 3 + delay: 10 failed_when: false changed_when: false no_log: true