Ansible Reboot Only If Required
This quick tip will help you issue a reboot command during your Ansible playbook if a reboot is required.
This has only been tested on Ansible 2.9.13 for a debian-based host system.
For my scenario, I wanted to do a complete dist upgrade as the first thing for this virtual machine (I normally would recommend against this much of a drastic upgrade, but this is for a throw-away implementation).
After the upgrade, a lot of times a reboot is required. Luckily Ansible has the reboot method built in. Now, all you have to do is check if a reboot is required. (The best thing about this method is that Ansible is in control of the reboot so it won’t just timeout future commands).
Let’s take a look at some tasks with this implemented:
--- - name: Update apt-cache and do dist upgrade apt: update_cache: yes cache_valid_time: 3600 upgrade: dist - name: Check if reboot required stat: path: /var/run/reboot-required register: reboot_required_file - name: Reboot if required reboot: when: reboot_required_file.stat.exists == true - name: Install snapd apt: name: snapd state: present
The first step is to update apt-cache and do a dist upgrade. Then, ansible will register if the
/var/run/reboot-required file exists. (This is also what motd uses I think to tell you a reboot is required.) Then, if that stats true, reboot is called. After that, we continue with our playbook. In my example, installing