--- - name: Reboot host hosts: all remote_user: root tasks: - name: check if reboot is required stat: path: /lib/modules/{{ ansible_kernel }} register: modules - name: reboot host shell: 'sleep 5 && shutdown -r now "Reboot by Ansible."' register: reboot async: 1 poll: 0 ignore_errors: true when: modules.stat.isdir is not defined - name: wait for server to come down local_action: wait_for host={{ inventory_hostname }} port=22 state=stopped when: - reboot.stdout is defined - "'Reboot by Ansible.' in reboot.stdout" - name: wait for server to come up local_action: wait_for host={{ inventory_hostname }} port=22 state=started when: - reboot.stdout is defined - "'Reboot by Ansible.' in reboot.stdout" - name: check uptime shell: 'uptime' register: uptime - name: show uptime debug: msg: "Uptime: {{ uptime.stdout }}" ...