/
/
/
Ansible role that sets up sane defaults based on a simple host configuration.
1---
2# Reboot the host if the system indicates a reboot is required.
3# This runs right after package upgrades so that kernel/driver updates
4# take effect before any services are started later in the playbook.
5
6- name: Check if reboot is required
7 ansible.builtin.stat:
8 path: /var/run/reboot-required
9 register: reboot_required_file
10 become: true
11
12- name: Check for NVIDIA driver/library version mismatch
13 ansible.builtin.shell: |
14 if ! command -v nvidia-smi &>/dev/null; then
15 echo "no_nvidia"
16 exit 0
17 fi
18 if nvidia-smi &>/dev/null; then
19 echo "ok"
20 else
21 echo "mismatch"
22 fi
23 register: nvidia_check
24 changed_when: false
25 failed_when: false
26 become: true
27
28- name: Set reboot needed fact
29 ansible.builtin.set_fact:
30 system_needs_reboot: >-
31 {{ reboot_required_file.stat.exists
32 or nvidia_check.stdout | trim == 'mismatch' }}
33
34- name: Display reboot status
35 ansible.builtin.debug:
36 msg: >-
37 Reboot {{ 'REQUIRED' if system_needs_reboot else 'not needed' }}
38 â reboot-required file: {{ reboot_required_file.stat.exists }},
39 NVIDIA status: {{ nvidia_check.stdout | trim }}
40
41- name: Reboot and wait for reconnection
42 ansible.builtin.reboot:
43 msg: "Ansible: rebooting due to pending system updates"
44 reboot_timeout: 300
45 connect_timeout: 30
46 post_reboot_delay: 15
47 become: true
48 when: system_needs_reboot
49