63 lines
1.8 KiB
YAML
63 lines
1.8 KiB
YAML
---
|
|
- 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 |