I’m a big fan of PXE, but sometimes I don’t want to re-image. It may be a system that isn’t connected to PXE, or a system that I don’t have a profile for. In dealing with these one-off systems, I wanted to be able to apply update the firmware, update the ESXi OS, and apply any other changes that I would usually do via PXE (this could be OS settings or low-level settings like ILO).
Worklfow:
- Enable SSH on the host
- Login to the host
- wget http://server.fqdn/patch
- chmod a+x patch
- ./patch
- reboot
The patch script handles the following:
- Apply BIOS firmware
- Apply Array Firmware
- Apply NIC Firmware
- Apply ILO firmware
- Set any new esxi advanced settings (for me this was changing shell timeouts)
- Use hponcfg to add a new group to ILO
What you need:
- A web server (I use Apache)
- HPE smart components (zip files that contain the firmware files
- I download the HPE recipe, look for my specific models and create a table of the firmware version and the smart component. This is an example:
-
Server Type
BIOS
ILO
Array Controller
Array Driver
Array FW
NIC Type
NIC Driver
NIC FW
BL460c G7
I27 – 2015.08.16
CP028127.zip
1.88
CP029098.zip
p410i
6.0.0.124*
6.64
CP027482.zip
NC553i
11.1.145.0
11.1.183.23
CP031843.zip
BL460c Gen8
I31 – 2015.06.01
CP027282.zip
2.50
CP027910.zip
p220i
6.0.0.124*
8
CP030723.zip
554FLB
11.1.145.0
11.1.183.23
CP031843.zip
3. You need to look for the firmware version from the recipe, and then look in the contents.html file for the Online ROM Flash Component for VMware ESXi
123456<td style="">BIOS - System ROM</td><td style="">Online ROM Flash Component for VMware ESXi - HP ProLiant BL460c G7 (I27) Servers</td><td style=";text-align: center">2015.08.16</td><td style=";text-align: center">Recommended</td><td style=";text-align: center"><p>CP028127.zip<br/></p></td><td style=";text-align: center"><p>no change</p></td>4. Latest ESXi offline bundle (typically an HPE image plus the latest patch combined using PowerCLI imagebuilder). This site has a good info on how to customize an offline bundle
How to setup (assuming your web server is already working)
- Add a directory 2017 and 2017/esxi
- Copy all of the smart component zip files into the 2017 directory
- Put my patch script in the 2017 directory
- Unzip the offline bundle in the esxi directory. Unzip the metadata.zip file in the same folder. Edit the index.xml (these instructions from this VMware pdf), ex of index.xml:
- <vendorList>
<vendor>
<name>blog.chrischua.net</name>
<code>chua</code>
<indexfile>vendor-index.xml</indexfile>
<patchUrl></patchUrl>
<relativePath></relativePath>
<content>
<name>VMware ESX</name>
<type>http://www.vmware.com/depotmanagement/esx</type>
</content>
</vendor>
</vendorList>
- <vendorList>
- In the patch script, update the PROFILENAME to match the name that is used in your offline bundle, add your product in the case statement, update the smart component file names as needed, update the KSERVER with the fqdn of your web server