A Simple VMware ESXi Rapid Deployment System – Part 3 of 3


Introduction and Requirements– Part 1
Testing and Exporting to vSphere – Part 2

Customising the ESXi Rapid Deployment Server

I couldn't just stop there could I? I decided to make a few alterations to make it a little prettier and hopefully quicker.

Removing some ESXi installation steps which are not required

I'll start off by talking about making some changes to the ESXi installation to help make the deployment a little quicker. I got the idea from Stuart Radnidge's great post; Unattended ESXi Installation. Stu talks about editing one of the Python files that make-up the ESXi installation. Stu has a link to a pre-prepared Install.tgz for you to replace the default Install.tgz that comes in the ESXi ISO. Unfortunately this wouldn't work for me as I was using the ESXi ISO that comes with HP Management Agents so I had to make the changes myself:

  • Extract the INSTALL.TGZ from the ESXi ISO using Winrar and save it locally
  • Using WinSCP or Veeam FastSCP upload the file to your home directory on a generic Linux box. (You could use the Service Console of an ESX Host)
  • Open Putty and SSH to the Linux Box that you just uploaded the .tgz to.
  • Login and su –
  • Create a /tmp/esxi directory: mkdir /tmp/esxi
  • Run the following command to decompress and extract the files from the install.tgz:  tar -C /tmp/esxi -xzvf INSTALL.TGZ
  • Next run the following command nano /tmp/esxi/usr/lib/vmware/installer/ThinESXInstall.py
  • Scroll down to Lines 22/23 and edit the line that reads:

Steps = [ WelcomeStep, LicenseStep, TargetSelectionStep, ConfirmStep, \
WriteStep, PostConfigStep, CompleteStep, RebootStep ]

  • This is how I edited it, you can of course decided which steps you do and don't want.

Steps = [ TargetSelectionStep, ConfirmStep, \
WriteStep, PostConfigStep, RebootStep ]

  • Once you’ve finished editing, CTRL+X and then Y to save and exit.
  • To create our new install.tgz change into /tmp/esxi by running: cd /tmp/esxi
  • Then run: tar -czvf /tmp/INSTALL.TGZ *
  • Once the process is complete, download locally your new INSTALL.TGZ file using WinSCP or Veeam FastSCP

Now we need to put this install.tgz file onto the following directory on the Rapid Deployment App: C:\PXEServer\TFTPRoot\Boot\ESXi_4x. The quickest way I found to do this was to create an ISO with the install.tgz in. Connect that to the VM and copy the file across.

Customising the PXE Delpoyment Menu

The second part of my customisation was to change the deployment menu to suit my companies needs. The menu is configured using the pxelinux.cfg configuration file. Its a pretty simple config file which is edited using the text editor which comes with V-PXEServer and with this PXELINUX WIKI you have all the information you need. These are the customisations I made:

  • Change the background to image to a Corporate Image (Image needs to be 640×480)
  • Removed the options; Network Boot, Command Line, Boot Normal
  • Changed the option names to make them more "User Friendly"
  • Changed the option noted to display a better description
  • Change the Font colours
  • Added a Timeout of 15 seconds, So if nothing is selected it would boot from Local Disk. I decided to do this in case a server PXE booted by accident without me knowing.

Here is a screenshot of my customised menu.


Now that our customisation is complete it's time to test out to see if these little tweeks have made any difference. I have recored a little video showing the deployment process.

Note: The recording has been speeded up, but I have included a clock at the bottom to show you how long it takes.


6 MINUTES!!! That'll do, that's a massive improvement.

I hope my 3 part series has shown you how simple it is to setup an ESXi Deployment System. If you wanted to you could take it one step further and remove the step of the installation where you are asked which HardDisk you want to install ESXi onto. If I have some spare time I may look into it. Unfortunately I have little experience with Python, so if anyone out there can offer a hand that would be great. Just contact me in the usual ways.