dellemc.openmanage.omevv_firmware module – Update the firmware of a specific host in the cluster
Note
This module is part of the dellemc.openmanage collection (version 9.12.3).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install dellemc.openmanage.
You need further requirements to be able to use this module,
see Requirements for details.
To use it in a playbook, specify: dellemc.openmanage.omevv_firmware.
New in dellemc.openmanage 9.10.0
Synopsis
- This module allows you to update the firmware of a specific host in the cluster. 
Requirements
The below requirements are needed on the host that executes this module.
- python >= 3.9.6 
Parameters
| Parameter | Comments | 
|---|---|
| The Privacy Enhanced Mail (PEM) file that contains a CA certificate to be used for the validation. | |
| Check vSAN health while updating the firmware. 
 
 Choices: 
 | |
| Date and time when the job must run. This is applicable when run_now is  The supported format is YYYY-MM-DDThh:mm:ss<offset>. | |
| Whether to delete the job queue in iDRAC while updating firmware. 
 
 Choices: 
 | |
| Allows you to check if DRS of the cluster is enabled or not. 
 
 Choices: 
 | |
| VM migration policy during management mode. 
 
 
 Choices: 
 | |
| Time out value during maintenance mode in minutes. Default:  | |
| Allows to move the virtual machine (VM) to other host when current host is powered off. 
 
 Choices: 
 | |
| Whether to exit management mode after Update. 
 
 Choices: 
 | |
| IP address or hostname of the OpenManage Enterprise Modular. | |
| Update job description. | |
| Update job name. | |
| Whether to wait till completion of the job. This is applicable when power_on is  
 
 Choices: 
 | |
| The maximum wait time of job_wait in seconds. The job is tracked only for this duration. This option is applicable when job_wait is  Default:  | |
| Allows to check if any host in cluster is in management mode. 
 
 Choices: 
 | |
| OpenManage Enterprise HTTPS port. Default:  | |
| Host reboot option for firmware update. 
 
 
 Choices: 
 | |
| Whether to reset the iDRAC while performing firmware update. 
 
 Choices: 
 | |
| Whether to run the update job now or later. 
 
 Choices: 
 | |
| The target details for the firmware update operation. Either cluster, servicetag or host is required for the firmware update operation. | |
| Name of the cluster to which firmware needs to updated. cluster is mutually exclusive with servicetag and host. This module supports only single cluster update. | |
| List of host firmware components to update. dellemc.openmanage.omevv_firmware_compliance_info module can be used to fetch the supported firmware components. | |
| The IP address or hostname of the host. host is mutually exclusive with servicetag and cluster. dellemc.openmanage.omevv_device_info module can be used to fetch the device information. | |
| The service tag of the host. servicetag is mutually exclusive with host and cluster. dellemc.openmanage.omevv_device_info module can be used to fetch the device information. | |
| The socket level timeout in seconds. Default:  | |
| Whether to check SSL certificate. - If  Choices: 
 | |
| Password for OpenManage Enterprise Integration for VMware vCenter (OMEVV). If the password is not provided, then the environment variable  Example: export OMEVV_VCENTER_PASSWORD=password | |
| Username for OpenManage Enterprise Integration for VMware vCenter (OMEVV). If the username is not provided, then the environment variable  Example: export OMEVV_VCENTER_USERNAME=username | |
| Universally Unique Identifier (UUID) of vCenter. vCenter UUID details can be retrieved using dellemc.openmanage.omevv_vcenter_info module. If UUID is not provided, then the environment variable  Example: export OMEVV_VCENTER_UUID=uuid | 
Attributes
| Attribute | Support | Description | 
|---|---|---|
| Support: full | Can run in check_mode and return changed status prediction without modifying target, if not supported the action will be skipped. | |
| Support: full | Will return details on what has changed (or possibly needs changing in check_mode), when in diff mode. | 
Notes
Note
- Run this module from a system that has direct access to Dell OpenManage Enterprise. 
- This module supports IPv4 and IPv6 addresses. 
Examples
---
- name: Immediately update the firmware of a single component for a specific host
  dellemc.openmanage.omevv.omevv_firmware:
    hostname: "XXX.XXX.XXX.XX"
    vcenter_uuid: "xxxxx"
    vcenter_username: "username"
    vcenter_password: "password"
    ca_path: "path/to/ca_file"
    run_now: false
    date_time: "2024-09-10T20:50:00Z"
    enter_maintenance_mode_timeout: 60
    enter_maintenance_mode_options: FULL_DATA_MIGRATION
    drs_check: true
    evacuate_VMs: true
    exit_maintenance_mode: true
    reboot_options: NEXTREBOOT
    maintenance_mode_count_check: true
    check_vSAN_health: true
    reset_idrac: true
    delete_job_queue: true
    targets:
      - servicetag: SVCTAG1
        firmware_components:
          - "DCIM:INSTALLED#802__Diagnostics.Embedded.1:LC.Embedded.1"
- name: Update the firmware of multiple components at scheduled time for a specific host
  dellemc.openmanage.omevv.omevv_firmware:
    hostname: "XXX.XXX.XXX.XY"
    vcenter_uuid: "xxxxx"
    vcenter_username: "username"
    vcenter_password: "password"
    ca_path: "path/to/ca_file"
    run_now: false
    date_time: "2024-09-10T20:50:00+05:30"
    enter_maintenance_mode_timeout: 60
    enter_maintenance_mode_options: ENSURE_ACCESSIBILITY
    drs_check: true
    evacuate_VMs: true
    exit_maintenance_mode: true
    reboot_options: FORCEREBOOT
    maintenance_mode_count_check: true
    check_vSAN_health: true
    reset_idrac: false
    delete_job_queue: false
    targets:
      - host: "XXX.XXX.XXX.XZ"
        firmware_components:
          - "DCIM:INSTALLED#iDRAC.Embedded.1-1#IDRACinfo"
          - "DCIM:INSTALLED#301_C_BOSS.SL.14-1"
          - "DCIM:INSTALLED#807__TPM.Integrated.1-1"
- name: Update the firmware of multiple components at scheduled time for a cluster
  dellemc.openmanage.omevv.omevv_firmware:
    hostname: "XXX.XXX.XXX.XX"
    vcenter_uuid: "xxxxx"
    vcenter_username: "username"
    vcenter_password: "password"
    ca_path: "path/to/ca_file"
    run_now: false
    date_time: "2024-09-10T20:50:00+05:30"
    enter_maintenance_mode_timeout: 60
    enter_maintenance_mode_options: ENSURE_ACCESSIBILITY
    drs_check: true
    evacuate_VMs: true
    exit_maintenance_mode: true
    reboot_options: SAFEREBOOT
    maintenance_mode_count_check: true
    check_vSAN_health: true
    reset_idrac: false
    delete_job_queue: false
    targets:
      - cluster: cluster_a
        firmware_components:
          - "DCIM:INSTALLED#iDRAC.Embedded.1-1#IDRACinfo"
          - "DCIM:INSTALLED#301_C_BOSS.SL.14-1"
          - "DCIM:INSTALLED#807__TPM.Integrated.1-1"
- name: Retrieve firmware compliance report of all hosts in the specific cluster
  dellemc.openmanage.omevv_firmware_compliance_info:
    hostname: "XXX.XXX.XXX.XX"
    vcenter_uuid: "xxxxx"
    vcenter_username: "username"
    vcenter_password: "password"
    ca_path: "path/to/ca_file"
    clusters:
      - cluster_name: cluster_a
  register: compliance_data
- name: Initialize compliance status results
  ansible.builtin.set_fact:
    source_names: []
    service_tag: ""
- name: Flatten host compliance reports
  ansible.builtin.set_fact:
    host_reports: "{{
        compliance_data.firmware_compliance_info |
        map(attribute='hostComplianceReports') |
        flatten(levels=1) }}"
- name: Flatten and filter concompliant components
  ansible.builtin.set_fact:
    non_compliant_components: >-
        {{
          host_reports
          | map(attribute='componentCompliances')
          | flatten(levels=1)
          | selectattr('driftStatus', 'equalto', 'NonCompliant')
        }}
- name: Gather components source name and set service tag
  ansible.builtin.set_fact:
    source_names: "{{ source_names + [item.sourceName] }}"
    service_tag: "{{ host_report.serviceTag }}"
  loop: "{{ non_compliant_components }}"
  vars:
    host_report: >-
        {{
          host_reports
          | selectattr('componentCompliances', 'contains', item)
          | first
        }}
- name: Combine the final non compliance report
  ansible.builtin.set_fact:
    noncompliance_report:
      sourceNames: "{{ source_names }}"
      serviceTag: "{{ service_tag }}"
- name: Update firmware at the scheduled time for a specific host
  dellemc.openmanage.omevv.omevv_firmware:
    hostname: "192.168.0.1"
    vcenter_uuid: "{{ vcenter_uuid }}"
    vcenter_username: "username"
    vcenter_password: "password"
    ca_path: "path/to/ca_file"
    run_now: false
    date_time: "2024-09-10T20:50:00Z"
    enter_maintenance_mode_timeout: 60
    enter_maintenance_mode_options: NO_DATA_MIGRATION
    drs_check: true
    evacuate_VMs: false
    exit_maintenance_mode: true
    reboot_options: SAFEREBOOT
    maintenance_mode_count_check: true
    check_vSAN_health: true
    reset_idrac: true
    delete_job_queue: true
    targets:
      - servicetag: "{{ noncompliance_report.serviceTag }}"
        firmware_components: "{{ noncompliance_report.sourceNames }}"
Return Values
Common return values are documented here, the following are the fields unique to this module:
| Key | Description | 
|---|---|
| Details of the module HTTP Error. Returned: on HTTP error Sample:  | |
| Status of the firmware update operation. Returned: always Sample:  | 
