--- - name: Something hosts: temp become: true gather_facts: false # With NFS share(s) being in a hung state, we cannot utilize `gather_facts` # as that too hangs when it tries to figure out the current mounts on the # system tasks: - name: Check for mounted NFS shares # noqa: command-instead-of-module ansible.builtin.command: mount -t nfs,nfs4 register: nfs_mounts_result changed_when: false failed_when: nfs_mounts_result['rc'] not in [0, 32] - name: Create a list of NFS mount points ansible.builtin.set_fact: nfs_mount_list: "{{ nfs_mounts_result['stdout_lines'] | map('split') | map(attribute=2) | list }}" - name: Verify mount status and reboot host block: - name: Verify mount status ansible.builtin.command: "ls {{ item }}" timeout: 5 register: r_verify_mounts loop: "{{ nfs_mount_list }}" loop_control: label: "{{ item }}" rescue: - name: Group shares that failed check ansible.builtin.set_fact: failed_nfs_shares: "{{ r_verify_mounts['results'] | selectattr('failed') | map(attribute='item') | list }}" - name: Lazily unmount the failed shares ansible.builtin.command: "umount -f -l {{ item }}" register: r_lazy_unmount async: 30 poll: 0 loop: "{{ failed_nfs_shares }}" loop_control: label: "{{ item }}" always: - name: Reboot host # noqa: no-handler ansible.builtin.import_role: name: verified_reboot