VMware EUC Access Point, part 2 OVFtool deployment

I was talking to Mark Benson the other day on the futures of EUC Access Point ( you will have to wait but you will like it once it is released ) and we started to talk about the deployment and how “desktop folks” don’t normally deal with edge devices like EUC Access Point.  I stated that the setup is a little confusing and the documentation is somewhat lacking.  During our talk he posed an interesting point.  “Why not just use the OVFTOOL and do a command line deployment ?  The OVA deploys in just a few minutes.”  This got me thinking and thus I went on a little deployment adventure.

Deployment Adventure Time ( I wish I had Jake and Finn to join me on this one )

This is for your background information on OVF deployment documentation for EUC Access Point https://pubs.vmware.com/horizon-62-view/topic/com.vmware.horizon-ap.deploy-config.doc/GUID-658A266E-989B-43F9-AF64-95D442FD456B.html

Now the first thing I did was go and download the latest version on the Windows OVFTool.  Once I installed the code I edited my environment variables to include the ovftool.exe in the PATH.  Ok the hard part is done right ?  How hard can it be to deploy an OVA/OVF from a command line ?

The command line is actually straightforward once you figure out all of the switches.  My command is below using the same information from the previous post.  I did attempt this many many times before I was successful.  I am going to dissect the statement so you can follow along and update your own EUC Access Point.

Please note that this is a single line and is wrapped due to length

ovftool –X:enableHiddenProperties –powerOffTarget –powerOn –overwrite –vmFolder=”Horizon View/Access Point” ^ –net:Internet=”Virtual Machine Network” –net:ManagementNetwork=”Management” –net:BackendNetwork=”Infrastructure” ^ –deploymentOption=onenic –prop:ip0=172.17.1.55 –prop:DNS=172.17.1.2 ^ -ds=”Storage” -dm=thin –name=AP01 –ipAllocationPolicy=fixedPolicy ^ –prop:adminPassword=AdM1n! –prop:rootPassword=rootpwd1! ^ –prop:settingsJSON=”{\”edgeServiceSettingsList\”: { \”edgeServiceSettingsList\”: ^ [ { \”identifier\”: \”VIEW\”, \”enabled\”: true, \”proxyDestinationUrl\”: \”https://hvrs.therandomone.net:443\”, ^ \”proxyDestinationUrlThumbprints\”: \”sha1=01 f6 8f 8e b6 e0 a9 08 57 45 4c 47 2a 27 3e 9d 1a aa 85 98\”, ^ \”pcoipEnabled\”: true, \”pcoipExternalUrl\”: \”23.229.145.166:4172\”, ^ \”blastEnabled\”: true, \”blastExternalUrl\”: \”hv.therandomone.net:8443\”, ^ \”tunnelEnabled\”: true, \”tunnelExternalUrl\”: \”hv.therandomone.net:8443\”, ^ \”proxyPattern\”:\”/\” } ] }}” ^ euc-access-point-2.0.0.0-2939373_OVF10.ova ^ vi://vcenter.therandomone.net/”Random Labs”/host/esxi.therandomone.net/

The first part of the command ovftool –X:enableHiddenProperties –powerOffTarget –powerOn –overwrite –vmFolder=”Horizon View/Access Point” ^ calls the ovftool and –powerOn will force the VM to turn on once it is deployed. The next part specifies the folder and if you would like to overwrite any existing VM with the same name.  I changed my name so I left that. The –vmFolder=”Horizon View/Access Point” will create the VM in the root vm folder called Horizon View and the sub folder called Access Point.  Please note the “ “ too allow for spaces.

The second part of the command line –net:Internet=”Virtual Machine Network” –net:ManagementNetwork=”Management” –net:BackendNetwork=”Infrastructure” ^ will specify the networks from the OVF wizard and match those to you vSwitch or dVS.  For me I have the –net:Internet=”Virtual Machine Network as my edge public facing adapter and my vSwitch is called “Virtual Machine Network”.  You will need to do the same for the Management and Backend network adapters.  In a single NIC deployment you can use the same virtual switch.

The third part of this looooong command line –deploymentOption=onenic –prop:ip0=172.17.1.55 –prop:DNS=172.17.1.2 ^ specifies the type of deployment, 1, 2 or 3 NICs and the IP Address you will use.  As you see the –deploymentOption= and the –prop:ip0= — prop:DNS= are pretty straightforward and should match how you deployed from the first post.

For the fourth part I specified the storage type and set the passwords.  -ds=”Storage” -dm=thin –name=AP01 –ipAllocationPolicy=fixedPolicy ^ –prop:adminPassword=AdM1n! –prop:rootPassword=rootpwd1!  the option -ds= is asking for the name of your Storage Volume.  Mine is Storage.  The -dm= option is one that I added and not in the documentation but it allows you to specify the type of disk used.  I choose Thin, but you could leave it out and you will end up with eagerZero.  Finally the –prop:adminPassword and –prop:rootPassword need to be set.  Note that the Admin password needs to be a complex password or you might will has issues with the deployment if you want to make changes later.

Now for the real fun.  The next part is that JSON formated file that I used in the previous post, but you must modify it to escape the quotes “.  –prop:settingsJSON=”{\”edgeServiceSettingsList\”: { \”edgeServiceSettingsList\”: ^ [ { \”identifier\”: \”VIEW\”, \”enabled\”: true, \”proxyDestinationUrl\”: \”https://hvrs.therandomone.net:443\”, ^ \”proxyDestinationUrlThumbprints\”: \”sha1=01 f6 8f 8e b6 e0 a9 08 57 45 4c 47 2a 27 3e 9d 1a aa 85 98\”, ^ \”pcoipEnabled\”: true, \”pcoipExternalUrl\”: \”23.229.145.166:4172\”, ^ \”blastEnabled\”: true, \”blastExternalUrl\”: \”hv.therandomone.net:8443\”, ^ \”tunnelEnabled\”: true, \”tunnelExternalUrl\”: \”hv.therandomone.net:8443\”, ^ \”proxyPattern\”:\”/\” } ] }}” ^

You will need the set the pcoipExternalUrl, blastExternalUrl and the tunnelExternalUrl for your deployment as well as the your Connection Server address and SSL certificate Thumbprint.  Lets examine one of them: \”pcoipExternalUrl\”: \”23.229.145.166:4172\”,   Their needs to be an escape before every “ so you see \”pcoipExternalUrl\”:\”23.229.145.166:4172\” and in the actual JSON file you would not have the slashes \.  

Once you figure this part out, the deployment of multiple access points should be easy especially if you are going to front end them with a load balancer.

Now the final part of the command line euc-access-point-2.0.0.0-2939373_OVF10.ova ^ vi://vcenter.therandomone.net/”Random Labs”/host/esxi.therandomone.net/ selects the correct EUC Access Point OVA file and which vCenter do you want the deployment to happen on.  The syntax should be straight forward, but it is not.  My vCenter has a DataCenter but I do not have a Cluster or a resource pool, just a host under the DataCenter.

vSphere-vCenter-Web-Client

 So in the syntax you need to specify to look for a host and not a Cluster.  Mine looks like this  vi:\\Your vCenter\Your DataCenter\host\ESXi Host name/ .  You will be prompted for a user id and password to complete the action.  You can also script that with either the user id and password using the vi:\\USERid:password@\Your vCenter…..

Five minute deployment and I was up and running.

After working with both setups, I might agree with Mark Benson and just use the OVF command line deployment method.  I am going to continue to work on this with a few peers, heck we might even deploy a VMware Fling as a EUC Access Point configuration tool that will format your JSON file for you and allow you to deploy multiples EUC Access Points easily.

I hope this help you.  Now back to trying to get to VMworld Barcelona