Dell provides an https website with firmware updates. If your host can reach https://downloads.dell.com you can update Dell firmware using Ansible and the dellemc.openmanage
module.
First install the dellemc.openmanage
module:
ansible-galaxy collection install \
--force-with-deps dellemc.openmanage
Then add the following playbook to your roles:
---
# ansible/roles/firmware_update/tasks/main.yml
- name: Update Dell firmware
delegate_to: localhost
become: False
block:
- name: Update firmware from downloads.dell.com
dellemc.openmanage.idrac_firmware:
share_name: "https://downloads.dell.com"
idrac_ip: "{{ inventory_hostname }}.{{ subdomain }}"
idrac_user: "{{ ilo_admin_user_name }}"
idrac_password: "{{ ilo_admin_password }}"
validate_certs: False
reboot: True
job_wait: True
apply_update: True
register: firmware
- name: Pause for 5 minutes before trying the next host
ansible.builtin.pause:
minutes: 5
when: firmware.changed
This playbook will check to see if any firmware updates are available and if there are any it will immediately apply them, possibly rebooting the host.
You do not want to apply this to an entire cluster of hosts running some distributed application, such as Kubernetes or vSAN, because it could reboot all of the hosts at the same time, trashing your environment. To ensure that Ansible only updates one host at a time use the serial
command in the playbook that calls this role:
# main.yml
- name: Update Dell firmware
gather_facts: False
hosts: firmware_update_hosts
serial: 1
roles:
- firmware_update
Hope you find this useful.
Want to learn Ansible? Start on the Ansible Community Documentation page and just start automating your environment. Want to level-up your Ansible skills? I highly recommend the O’Reilly book Ansible: Up and Running.