--- - name: Check if system reboot is required hosts: all become: yes become_method: sudo tasks: - name: Check if a reboot is required register: reboot ansible.builtin.stat: path: /var/run/reboot-required - name: Reboot machine command: /sbin/reboot now poll: 0 when: reboot.stat.exists - name: Pause for 15 seconds ansible.builtin.pause: seconds: 15 when: reboot.stat.exists - name: Wait for systems to become reachable wait_for_connection: - name: Gather server information set_fact: server_info: "{{ { 'server': inventory_hostname, 'rebooted': reboot.stat.exists } }}" - name: Create a list of server information set_fact: server_list: "{{ server_list | default([]) + [server_info] }}" - name: Send Teams notification run_once: true uri: url: "{{ Teams_webhook }}" method: POST body: | { "title": "Playbook: {{ ansible_play_name }}", "text": "All servers were checked and rebooted where needed.", "sections": [ { "activityTitle": "Server Reboot Status", "facts": [ { "name": "Server", "value": "{{ server_list | map(attribute='server') | join(', ') }}" }, { "name": "Rebooted", "value": "{{ server_list | map(attribute='rebooted') | map('string') | join(', ') }}" } ], "markdown": true } ] } body_format: json headers: Content-Type: application/json when: reboot.stat.exists or not reboot.stat.exists