45 lines
1.4 KiB
YAML
45 lines
1.4 KiB
YAML
---
|
|
- name: Managed Reboot of Lab Infrastructure
|
|
hosts: all_nodes
|
|
become: true
|
|
gather_facts: true
|
|
serial: 3 # Reboots one host at a time to maintain availability
|
|
|
|
tasks:
|
|
- name: Check if reboot is actually required
|
|
ansible.builtin.stat:
|
|
path: /var/run/reboot-required
|
|
register: reboot_required_file
|
|
|
|
- name: Reboot block
|
|
when: reboot_required_file.stat.exists
|
|
block:
|
|
- name: Handle Proxmox Guests (Endor specific)
|
|
when: inventory_hostname == 'endor'
|
|
shell: |
|
|
# Gracefully stop all running VMs/CTs that aren't set to autostart
|
|
# or simply rely on Proxmox's built-in shutdown service.
|
|
# This is a safety check.
|
|
pvesh create /nodes/localhost/stopall
|
|
register: stop_all_guests
|
|
failed_when: false
|
|
|
|
- name: Reboot the machine
|
|
ansible.builtin.reboot:
|
|
msg: "Reboot initiated by Ansible for kernel updates"
|
|
connect_timeout: 5
|
|
reboot_timeout: 600
|
|
pre_reboot_delay: 10
|
|
post_reboot_delay: 30
|
|
test_command: uptime
|
|
|
|
- name: Confirm uptime
|
|
ansible.builtin.debug:
|
|
msg: "Host {{ inventory_hostname }} is back up and running."
|
|
|
|
- name: No reboot needed
|
|
ansible.builtin.debug:
|
|
msg: "Host {{ inventory_hostname }} does not require a reboot."
|
|
when: not reboot_required_file.stat.exists
|
|
|