I was just playing around with auto-deploy and I figured I would quickly scribble down the steps required to configure it. The documentation is okay but it often refers me back and forth in the document which makes it difficult to read at times. Here is what I did to get it working. I was in doubt if I would add screenshots, but that would make this article fairly lengthy and I am sure that most of you wouldn’t need it any way. I have my complete lab virtualized at home, so this whole setup is running in VMware Workstation.
- Download vCenter Server 5
- Download the ESXi 5.0 Offline Bundle
- Install vCenter Server 5
- Install Powershell 2.0 (installed it on the vCenter Server)
- Install PowerCLI (installed it on the vCenter Server)
- Install Auto-deploy (also located on vCenter iso) (installed it on the vCenter Server)
- Install TFTP Server (I used Solarwinds) (installed it on the vCenter Server)
- Click “File” and “Configure” and start the TFTP Server
- A folder C:\TFTP-Root will be created
- Make sure if you are running this on Windows that the Firewall is open for TFTP
- Open up your vCenter Client
- Go to the Home screen and click “Auto Deploy”
- Click “Download TFTP Boot Zip”
- I temporarily disabled IE ESC to be able to quickly download the zip file (Control Panel –> Add / Remove Programs –> Turn Windows Features On/Off –> Look for “Configure IE ESC in the Security Information section)
- Unzip the TFTP Boot Zip file in your TFTP-Root folder
- Copy the location of “BIOS DHCP File Name as mentioned in your Auto Deploy screen. This will be “undionly.kpxe.vmw-hardwired”.
- Go to your DHCP Server and add the filename and the ip address of the
- In my case this is what I added to the advanced settings in my Tomato Router/DHCP server:
dhcp-boot=undionly.kpxe.vmw-hardwired,,192.168.1.45 - In the case of a MS DHCP Server you will need to follow this MS KB article. (#66 and #67 should be sufficient)
- In my case this is what I added to the advanced settings in my Tomato Router/DHCP server:
- Now it should be possible to boot your host, however you should see a screen that tells you that there no ESXi image associated yet. Now we need to do some PowerCLI magic…
- First of all we will need to set the execution policy to “remotesigned” if you haven’t done so already, in my case I haven’t as this is a brand new installed Windows VM:
Set-ExecutionPolicy RemoteSigned - Now you can open up PowerCLI and connect to your vCenter Server:
Connect-VIServer <vcenter name> - Next we will need to add a software depot, this is the Offline Bundle file you downloaded at the beginning:
Add-EsxSoftwareDepot c:\tmp\VMware-ESXi-5.0.0-469512-depot.zip - Now that you’ve added the depot you will need to identify the ImageProfile you wan to use. Run the following command to list the image profiles:
Get-EsxImageProfile - In my case it returns the following:
Name
——-
ESXi-5.0.0-469512-no-tools ….
ESXi-5.0.0-469512-standard …. - We will use the “Standard” image profile as we want to be able to install VMware Tools as well through vCenter. In order to use it we will need to define a rule. This basically tells the client which image it should pick up during the PXE Boot. No key thing with this command is the “-Pattern” as that basically defines which machines will get boot the image. In my case everything is running within VMware Workstation and the vendor will always be “VMware Virtual Platform” so I decided to use that is the identifier for this specific rule.
New-DeployRule –Name “FirstTimeBoot” –Item “ESXi-5.0.0-469512-standard” –Pattern “model=VMware Virtual Platform” - This will take a while as it is unzipping and uploading the required packages. When it has successfully completed we will need to make this deploy rule active:
Add-DeployRule -DeployRule FirstTimeBoot - That’s it, now the host should be able to boot up using the assigned image profile. See the screenshot below of my PXE booted ESXi host within VMware Workstation
Now if you would go to vCenter and check your Datacenter you will see a host appearing. This host however will still need to be configured and that is the second portion of this exercise…
What we creating here is a stateless configuration. That means we will need to use host profiles in order to configure this host correctly after reach reboot. These are the steps I took to create a host profile for my Lab hosts:
- Configure the host as needed. Don’t forget things like NTP, Storage, Networking, Scratch etc.
- Go to Host Profiles
- Create a New Profile from an existing host
- Select the host you just configured
- Give it a name that you will remember, I used “ESXiLabHostProfile”
- After creating the host profile you will need to attach the host to the profile and check for compliancy. This test should fail as you will need to create an answer file first.
- Right click the host and select “Update Answer File”
- Check all settings (ip-address etc) and when finished click “update”
- Right click the host and select “Check Answer File”, result should be “x”
- Select the host and click “Check Compliance”, result should be “compliant”
- Before we will create a new deploy rule we will want to add the HA depot and create a new image profile which includes the HA agent as we will want our hosts to be part of that. If you don’t add it the “new-deployrule” statement will throw a message that you will need to add it. First we will add the vSphere HA depot. The ip-address should of course be replace with the ip-address of your own vCenter server:
Add-EsxSoftwareDepot http://192.168.1.45:80/vSphere-HA-depot - Now we will need to clone the ESXi Standard depot and add the HA agent to it:
New-EsxImageProfile -CloneProfile ESXi-5.0.0-469512-standard -name “ESXiHA”
Add-EsxSoftwarePackage -ImageProfile “ESXiHA” -SoftwarePackage vmware-fdm - Now we will create a new deploy rule and associate it with the just created host profile called “ESXiLabHostProfile”. We will also directly enable this new rule. Note that “HA-DRS” is the name of my cluster in this case. First we will remove the old rule to make sure we start with a clean slate:
Remove-DeployRule -DeployRule FirstTimeBoot -delete
New-DeployRule –Name “ProductionBootRule” –Item “ESXiHA”, ESXiLabHostProfile, HA-DRS –Pattern “model=VMware Virtual Platform”
Add-DeployRule -DeployRule “ProductionBootRule” - Now you can restart the ESXi host and it should end up in the cluster (HA-DRS) with the correct host profile (ESXiLabHostProfile) and completely configured ready for action! (Note that for the next host you will need to create the answer file as well initially for it to work correctly.)
That’s it for today… Hope it helps, I had a lot of fun exploring this cool new feature! I love it but boy do I feel like a n00b playing around with PowerCLI after having seen some of Alan‘s or Luc‘s magic. Gabe also has a nice article on this topic… check it out, worth reading!
Changelog:
Edit 1: Changed naming scheme