How to apply BIOS changes without BIOS reboot option
Closed this issue · 8 comments
Hello,
I am trying to get set BIOS settings through this module, but as long as I remove the 'reboot' line from the playbooks I am not able to get the settings applied. In general I wish to run the playbook to adjust certain settings and have them queue'd for the next reboot. Once I do this and manually logon the server and 'reboot' it, the settings are never being applied. But if I enabled the part:
# - name: Schedule Config Job - Reboot
# redfish:
# category: System
# command: CreateBiosConfigJob
# baseuri: "{{ baseuri }}"
# user: "{{ user }}"
# password: "{{ password }}"
The server reboots with (Lifecycle Controller: System Configuration Requested) after this job has completed (which I prefer not to happen unless I want to reboot it). How can I schedule the BIOS update but without rebooting it from the playbook? But have it apply the next time I manually reboot the server (from the OS side).
@RBakkumm, what server is this on? You should be able to update as many BIOS settings as you want, and then do a reboot at the end. The pending BIOS updates should be applied next time you reboot the system, whether using the playbook above or a manual reboot from the OS.
Are you saying you're doing this, but the BIOS updates are not applied after a manual reboot?
@jose-delarosa, it's on a iDRAC8 version 2.60.60.60.
But no, what I meant is that once I apply (as many updates as I please) with the playbook they are nicely queue'd for being applied. However the only way for me to actually 'apply' the settings is that I need to reboot the server through the playbook/redfish API to update these settings. In general I understand the principle, but what I wish is to queue the settings and mark them to be applied at the next reboot (which can be a few days later). I just don't want the playbook to initiate the reboot.
Hopes it makes sense.
@RBakkum
I've been playing with just doing a regular warm reboot (via Redfish API) at a later time instead of using CreateBiosConfigJob. iDRAC is aware there is pending config changes and applies them at POST. I have not done a ton of testing on this yet, but it seems to be working for simple things such as changing the UEFI boot options.
Cool, so if iDRAC is aware of pending updates, I would expect a reboot within the OS also could work... or would a warm reboot be a powercycle and the settings are only applied on such an event (poweroff -> on)
Would it be possible to ask the redfish API (and maybe through the ansible module) to ask if there are pending configuration updates?
Good question regarding if it's possible to ask Redfish about any pending BIOS updates. @jose-delarosa might know the answer here.
I've used the value GracefulRestart for doing my restarts after applying BIOS changes. Definitely possible to use others, I would think.
Good question on viewing pending updates. Don't know off the top of my head, will look at a later time. But to answer the original question, just remove or comment out the Schedule Config Job task and it will skip the reboot. The playbooks given are just examples of what you can do, you can edit your local copies are you wish. Is this acceptable?
I will open a separate issue on the question about querying for pending updates, so it can be tracked there, and I will close this issue if your original question was answered to your satisfaction.
Hi,
Yes I think the main reason for OS reboots not picking up the bios changes is just because the server is internally rebooted. To have the BIOS changes been picked up, it needs a 'shutdown' and 'startup' to be picked up. Which the redfish API is doing with a warm reboot. Just a thing you need to know I guess or find out :)