I have recently been spending some time exploring the latest release of Photon Controller (v0.8). One of the new features in this release is the ability to deploy Photon Controller using a new UI installer provided by a virtual appliance. Since I already have a vCenter Server running in my lab environment, I decided to deploy the Photon Controller Installer OVA using the vSphere Web Client. There are several OVF properties that you can configure as part of deploying the appliance, just like you would with any VMware/3rd Party based virtual appliance. Below is a screenshot of the available OVF properties when deploying the Photon Controller Installer OVA.
I came to find out that the OVF properties that were specified were not actually being obeyed after the VM was powered on. I was scratching my head for a bit and after a big of digging, I found out that the OVA was actually missing a very important configuration which prevented the OVF properties from properly being passed down into the guestOS for customization. The fix was actually quite simple which I had also reported to the Engineering team. Below are the steps to take to properly deploy Photon Controller Installer OVA to vCenter Server.
Step 1 - Deploy the Photon Controller Installer OVA using either vSphere Web/C# Client and fill out the OVF Properties, but do NOT power on the VM yet.
Step 2 - Right click and Edit the Photon Controller VM that you had just deployed. Click on "vApp Options" tab and scroll to the bottom of that and check the "VMware Tools" box. This will ensure that the OVF properties (ovfEnv) can be passed down to the guestOS for customization.
Here is a screenshot for those using the vSphere C# Client to connect to their vCenter Server.
Step 3 - Power on the VM and it should be configured with the settings you had specified in the OVF properties.
Note: The password that you specify in the OVF properties is NOT the password to the esxcloud account but rather the password required to switch over to root account via su. I know the description might be confusing but the default password for esxcloud account is using default vmware.
For those of you wondering, the following tweak needs to be made to the OVA for this to work out of the box for vCenter Server. You just need to convert the OVA to an OVF and then adjust the following line from:
<VirtualHardwareSection>
to
<VirtualHardwareSection ovf:transport="com.vmware.guestInfo”>
If you do not have a vCenter Server and wish to deploy the Photon Controller OVA directly to an ESXi host, you can do so by injecting the OVF properties by using either ovftool or govc CLI as ESXi does not have support for OVF properties.
Here is a quick snippet that you can use to deploy using ovftool:
PHOTON_CONTROLLER_OVA="/Volumes/Storage/Images/installer-vm.ova"
ESXI_HOST="192.168.1.50"
ESXI_USERNAME="root"
ESXI_PASSWORD="vmware123"
PC_PASSWORD="VMware1!"
PC_VM_NAME="Photon-Controller-Deployer"
PC_IP_ADDRESS="192.168.1.25"
PC_NETMASK="255.255.255.0"
PC_GATEWAY="192.168.1.1"
PC_NTP_SERVER="pool.ntp.org"
PC_DNS_SERVER="192.168.1.1"
PC_VM_NETWORK_NAME="VM Network"
PC_DATASTORE="vsanDatastore"
'/Applications/VMware OVF Tool/ovftool' --acceptAllEulas --allowAllExtraConfig --X:injectOvfEnv --powerOn --diskMode=thin "--name=${PC_VM_NAME}" "--datastore=${PC_DATASTORE}" "--net:NAT=${PC_VM_NETWORK_NAME}" "--prop:ip0=${PC_IP_ADDRESS}" "--prop:netmask0=${PC_NETMASK}" "--prop:gateway=${PC_GATEWAY}" "--prop:DNS=${PC_DNS_SERVER}" "--prop:ntp_servers=${PC_NTP_SERVER}" "--prop:admin_password=${PHOTON_CONTROLLER_PASSWORD}" "${PHOTON_CONTROLLER_OVA}" "vi://${ESXI_USERNAME}:${ESXI_PASSWORD}@${ESXI_HOST}"
Thanks for the comment!