= How to perform firmware upgrades on iDRAC management controllers?

In order to perform firmware upgrades on iDRAC management controllers, one
needs to have access to the web interface of the nodes, present within the Red
Hat virtual private network.

[NOTE]
====
You need to have the following information handy to follow the process.

1. Credentials for the web interfaces of the iDRAC management controllers
2. Access to the `batcave01` node via SSH
3. Access to the Red Hat intranet via Red Hat VPN
====

== Steps

1.  Connect with the
    https://pagure.io/fedora-infrastructure/[*Fedora Infrastructure*] team to
    request the credentials for the web interface of the iDRAC management
    controllers.

2.  Ensure that the device is connected to the Red Hat virtual private network
    before proceeding with the discovering their IP addresses.

3.  Connect to the `batcave01` node using SSH and ping the management FQDNs to
    discover the IP address of the web interface.

    [cols="3*", options="header"]
    .IDRAC Management Controllers FQDN/IP Mapping (Recorded at 30 Sep 2024)
    |==================================================================================================
    |    | FQDN                                       | MGMT FQDN
    | 1  | autosign02.iad2.fedoraproject.org          | autosign02.mgmt.iad2.fedoraproject.org
    | 2  | backup01.iad2.fedoraproject.org            | backup01.mgmt.iad2.fedoraproject.org
    | 3  | bkernel01.iad2.fedoraproject.org           | bkernel01.mgmt.iad2.fedoraproject.org
    | 4  | bkernel02.iad2.fedoraproject.org           | bkernel02.mgmt.iad2.fedoraproject.org
    | 5  | buildhw-x86-01.iad2.fedoraproject.org      | buildhw-x86-01.mgmt.iad2.fedoraproject.org
    | 6  | buildhw-x86-02.iad2.fedoraproject.org      | buildhw-x86-02.mgmt.iad2.fedoraproject.org
    | 7  | buildhw-x86-03.iad2.fedoraproject.org      | buildhw-x86-03.mgmt.iad2.fedoraproject.org
    | 8  | buildhw-x86-04.iad2.fedoraproject.org      | buildhw-x86-04.mgmt.iad2.fedoraproject.org
    | 9  | buildhw-x86-05.iad2.fedoraproject.org      | buildhw-x86-05.mgmt.iad2.fedoraproject.org
    | 10 | buildhw-x86-06.iad2.fedoraproject.org      | buildhw-x86-06.mgmt.iad2.fedoraproject.org
    | 11 | buildhw-x86-07.iad2.fedoraproject.org      | buildhw-x86-07.mgmt.iad2.fedoraproject.org
    | 12 | buildhw-x86-08.iad2.fedoraproject.org      | buildhw-x86-08.mgmt.iad2.fedoraproject.org
    | 13 | buildhw-x86-09.iad2.fedoraproject.org      | buildhw-x86-09.mgmt.iad2.fedoraproject.org
    | 14 | buildhw-x86-10.iad2.fedoraproject.org      | buildhw-x86-10.mgmt.iad2.fedoraproject.org
    | 15 | buildhw-x86-11.iad2.fedoraproject.org      | buildhw-x86-11.mgmt.iad2.fedoraproject.org
    | 16 | buildhw-x86-12.iad2.fedoraproject.org      | buildhw-x86-12.mgmt.iad2.fedoraproject.org
    | 17 | buildhw-x86-13.iad2.fedoraproject.org      | buildhw-x86-13.mgmt.iad2.fedoraproject.org
    | 18 | buildhw-x86-14.iad2.fedoraproject.org      | buildhw-x86-14.mgmt.iad2.fedoraproject.org
    | 19 | buildhw-x86-15.iad2.fedoraproject.org      | buildhw-x86-15.mgmt.iad2.fedoraproject.org
    | 20 | buildhw-x86-16.iad2.fedoraproject.org      | buildhw-x86-16.mgmt.iad2.fedoraproject.org
    | 21 | bvmhost-x86-01.iad2.fedoraproject.org      | bvmhost-x86-01.mgmt.iad2.fedoraproject.org
    | 22 | bvmhost-x86-01.stg.iad2.fedoraproject.org  | bvmhost-x86-01.stg.mgmt.iad2.fedoraproject.org
    | 23 | bvmhost-x86-02.iad2.fedoraproject.org      | bvmhost-x86-02.mgmt.iad2.fedoraproject.org
    | 24 | bvmhost-x86-02.stg.iad2.fedoraproject.org  | bvmhost-x86-02.stg.mgmt.iad2.fedoraproject.org
    | 25 | bvmhost-x86-03.iad2.fedoraproject.org      | bvmhost-x86-03.mgmt.iad2.fedoraproject.org
    | 26 | bvmhost-x86-03.stg.iad2.fedoraproject.org  | bvmhost-x86-03.stg.mgmt.iad2.fedoraproject.org
    | 27 | bvmhost-x86-04.iad2.fedoraproject.org      | bvmhost-x86-04.mgmt.iad2.fedoraproject.org
    | 28 | bvmhost-x86-05.iad2.fedoraproject.org      | bvmhost-x86-05.mgmt.iad2.fedoraproject.org
    | 29 | bvmhost-x86-05.stg.iad2.fedoraproject.org  | bvmhost-x86-05.stg.mgmt.iad2.fedoraproject.org
    | 30 | bvmhost-x86-06.iad2.fedoraproject.org      | bvmhost-x86-06.mgmt.iad2.fedoraproject.org
    | 31 | bvmhost-x86-07.iad2.fedoraproject.org      | bvmhost-x86-07.mgmt.iad2.fedoraproject.org
    | 32 | bvmhost-x86-08.iad2.fedoraproject.org      | bvmhost-x86-08.mgmt.iad2.fedoraproject.org
    | 33 | ibiblio02.fedoraproject.org                | ibiblio02.fedoraproject.org
    | 34 | ibiblio05.fedoraproject.org                | ibiblio05.fedoraproject.org
    | 35 | kernel01.iad2.fedoraproject.org            | kernel01.mgmt.iad2.fedoraproject.org
    | 36 | kernel02.iad2.fedoraproject.org            | kernel02.mgmt.iad2.fedoraproject.org
    | 37 | openqa-x86-worker01.iad2.fedoraproject.org | openqa-x86-worker01.mgmt.iad2.fedoraproject.org
    | 38 | openqa-x86-worker02.iad2.fedoraproject.org | openqa-x86-worker02.mgmt.iad2.fedoraproject.org
    | 39 | openqa-x86-worker03.iad2.fedoraproject.org | openqa-x86-worker03.mgmt.iad2.fedoraproject.org
    | 40 | openqa-x86-worker04.iad2.fedoraproject.org | openqa-x86-worker04.mgmt.iad2.fedoraproject.org
    | 41 | openqa-x86-worker05.iad2.fedoraproject.org | openqa-x86-worker05.mgmt.iad2.fedoraproject.org
    | 42 | openqa-x86-worker06.iad2.fedoraproject.org | openqa-x86-worker06.mgmt.iad2.fedoraproject.org
    | 43 | osuosl02.fedoraproject.org                 | osuosl02.fedoraproject.org
    | 44 | qvmhost-x86-01.iad2.fedoraproject.org      | qvmhost-x86-01.mgmt.iad2.fedoraproject.org
    | 45 | qvmhost-x86-02.iad2.fedoraproject.org      | qvmhost-x86-02.mgmt.iad2.fedoraproject.org
    | 46 | sign-vault01.iad2.fedoraproject.org        | sign-vault01.mgmt.iad2.fedoraproject.org
    | 47 | sign-vault02.iad2.fedoraproject.org        | sign-vault02.mgmt.iad2.fedoraproject.org
    | 48 | virthost-cc-rdu02.fedoraproject.org        | virthost-cc-rdu02.fedoraproject.org
    | 49 | vmhost-x86-01.iad2.fedoraproject.org       | vmhost-x86-01.mgmt.iad2.fedoraproject.org
    | 50 | vmhost-x86-01.stg.iad2.fedoraproject.org   | vmhost-x86-01.stg.mgmt.iad2.fedoraproject.org
    | 51 | vmhost-x86-02.iad2.fedoraproject.org       | vmhost-x86-02.mgmt.iad2.fedoraproject.org
    | 52 | vmhost-x86-02.stg.iad2.fedoraproject.org   | vmhost-x86-02.stg.mgmt.iad2.fedoraproject.org
    | 53 | vmhost-x86-03.iad2.fedoraproject.org       | vmhost-x86-03.mgmt.iad2.fedoraproject.org
    | 54 | vmhost-x86-04.iad2.fedoraproject.org       | vmhost-x86-04.mgmt.iad2.fedoraproject.org
    | 55 | vmhost-x86-05.iad2.fedoraproject.org       | vmhost-x86-05.mgmt.iad2.fedoraproject.org
    | 56 | vmhost-x86-05.stg.iad2.fedoraproject.org   | vmhost-x86-05.stg.mgmt.iad2.fedoraproject.org
    | 57 | vmhost-x86-06.iad2.fedoraproject.org       | vmhost-x86-06.mgmt.iad2.fedoraproject.org
    | 58 | vmhost-x86-06.stg.iad2.fedoraproject.org   | vmhost-x86-06.stg.mgmt.iad2.fedoraproject.org
    | 59 | vmhost-x86-07.iad2.fedoraproject.org       | vmhost-x86-07.mgmt.iad2.fedoraproject.org
    | 60 | vmhost-x86-07.stg.iad2.fedoraproject.org   | vmhost-x86-07.stg.mgmt.iad2.fedoraproject.org
    | 61 | vmhost-x86-08.iad2.fedoraproject.org       | vmhost-x86-08.mgmt.iad2.fedoraproject.org
    | 62 | vmhost-x86-08.stg.iad2.fedoraproject.org   | vmhost-x86-08.stg.mgmt.iad2.fedoraproject.org
    | 63 | vmhost-x86-09.stg.iad2.fedoraproject.org   | vmhost-x86-09.stg.mgmt.iad2.fedoraproject.org
    | 64 | vmhost-x86-11.stg.iad2.fedoraproject.org   | vmhost-x86-11.stg.mgmt.iad2.fedoraproject.org
    | 65 | vmhost-x86-12.stg.iad2.fedoraproject.org   | vmhost-x86-12.stg.mgmt.iad2.fedoraproject.org
    | 66 | vmhost-x86-cc01.rdu-cc.fedoraproject.org   | vmhost-x86-cc01.rdu-cc.fedoraproject.org
    | 67 | vmhost-x86-cc02.rdu-cc.fedoraproject.org   | vmhost-x86-cc02.rdu-cc.fedoraproject.org
    | 68 | vmhost-x86-cc03.rdu-cc.fedoraproject.org   | vmhost-x86-cc03.rdu-cc.fedoraproject.org
    | 69 | vmhost-x86-cc05.rdu-cc.fedoraproject.org   | vmhost-x86-cc05.rdu-cc.fedoraproject.org
    | 70 | vmhost-x86-cc06.rdu-cc.fedoraproject.org   | vmhost-x86-cc06.rdu-cc.fedoraproject.org
    | 71 | worker02.ocp.iad2.fedoraproject.org        | worker02.ocp.mgmt.iad2.fedoraproject.org
    | 72 | worker04.iad2.fedoraproject.org            | worker04.mgmt.iad2.fedoraproject.org
    | 73 | worker04-stg.ocp.iad2.fedoraproject.org    | worker04-stg.ocp.mgmt.iad2.fedoraproject.org
    | 74 | worker04.ocp.iad2.fedoraproject.org        | worker04.ocp.mgmt.iad2.fedoraproject.org
    | 75 | worker05.iad2.fedoraproject.org            | worker05.mgmt.iad2.fedoraproject.org
    | 76 | worker05.ocp.iad2.fedoraproject.org        | worker05.ocp.mgmt.iad2.fedoraproject.org
    | 77 | worker06.ocp.iad2.fedoraproject.org        | worker06.ocp.mgmt.iad2.fedoraproject.org
    |==================================================================================================

4.  For this instance, we would be performing firmware upgrade on the iDRAC
    management controller of the FQDN `autosign02.iad2.fedoraproject.org`.

5.  Ping the management FQDN from the `batcave01` session to obtain the internal
    IP address of the same `a.b.c.d` and open it up in web browser.

6.  Log into the web interface of the management controller using the provided
    credentials after skipping the HTTPS warning message.
    image:drac-01.png[image]

7.  Make a note of the *Service Tag* from the dashboard of the web interface
    (which, in this case, is `DEADCAFE`).
    image:drac-02.png[image]

8.  Head over to the *Dell Support* website on a separate browser session or tab
    and enter the Service Tag in the identifier field.
    image:drac-03.png[image]

9.  When the *Product Support* page finishes loading for the associated product
    switch over to the *Drivers & Downloads* tab.
    image:drac-04.png[image]

10. Search for keywords like `Firmware` and `iDRAC` in the search bar to find
    the *iDRAC Firmware* update package file.
    image:drac-05.png[image]

11. Scroll down to the entry of the *iDRAC Firmware* update package file and
    confirm the update package file extension to be *EXE*.
    image:drac-06.png[image]

12. Confirm the presence of the *current version* of the *iDRAC Firmware* in
    the *Older Versions* list to ensure correct selection.
    image:drac-07.png[image]

13. Navigate to the *Maintenance* > *System Update* > *Manual Update* section
    of the web interface of the management controller.
    image:drac-08.png[image]

14. Upload the *iDRAC Firmware* update package file to the web interface and
    wait for it to finish uploading before continuing.
    image:drac-09.png[image]

15. After uploading has finished, click on the *Install* button to begin with
    installing the uploaded *iDRAC Firmware* package file.
    image:drac-10.png[image]

16. Navigate to the *Job Queue* section of the web interface after clicking on
    the *Job Queue* button from the modal window.
    image:drac-11.png[image]

17. Observe the running processes in the *Job Queue* section from the
    *Maintenance* section and wait for the installation to complete.
    image:drac-12.png[image]

18. After the installation completes and the management controller is finished
    rebooting, confirm the *current version* from the dashboard.
    image:drac-13.png[image]
