Automating VMware App Volumes!

On the upcoming E2EVC event in Athene Greece , Chris Jeucken (ITStore-Guru.com) and I are going to show how you can automate the creation of App Volmes and App Layers. Chris Jeucken will focus on Citrix App Layering (read here) and, as you can see by the title, I have focused on VMware App Volumes. In this blog I will share with you some of the basic API calls the script does and of course the complete scripts.
*The script(s) are created with App Volumes 2.14

So what does VMware App Volumes do? Well, it lets you create application installations in App Volumes (VMDK files). These  App Volumes can then be mounted on a machine with the agent installed and when that is done the machine has access to that application. And if an application needs updating you only update the one App Volumes and not your complete base image. The goal of App Volumes is to minimize the need of different base images. For example: you can have the same base image for the financial department and the sales department. But then during login a sales user will mount his sales App Volumes and a financial user will mount his financial App Volumes.

VMware App Volumes uses a web based GUI to create the App Volumes. Once you create a new App Volumes you need to mount it to a provisioning machine (sequencer) and install the application. After the installation you need to finish provisioning on the machine by pressing 3 times OK on a dialog box, then reboot and press again on OK on a dialog box. So you can imagine that if you need to create 100 App volumes this can be a real hassle. That is why I wanted to automate it. The script I wrote is just a proof of concept and might need some tweaking for production use.

Luckily the VMware App Volumes GUI is web based and uses an API. Unlucky is that there is not a written official document about the API. I did find this article online which helped.  But I was still missing a few API calls and correct calling methodes. So I used Firefox development tools and they are great. They even show which parameters are sent to the API.



The Scripts:

Download the complete scripts from GitHub Here.

*Make sure to read the README.md on how to prepare your sequencer.
I created two scripts. 1 will just create one App Volume. The other one uses a XML file and will create App Volumes for each application in the XML file. The scripts start with reverting the sequencer machine back to a “start” snapshot. Then the scripts will boot the sequencer machine, create a new App Volume and provision it to the sequencer. Then the application installer is copied to the sequencer and the installation is started. After that the hit-enter.cmd is created in the startup folder of the sequencer, after which the sequencer is rebooted. When it’s back online it will automatically hit enter and finish the provisioning. See the demo of the XML script here:


Here are some of the API commands I use in the scripts.

Sign in to App Volumes:

Create a new App Volume and wait on completion:

Provision new App Volume to sequencer:

I hope this was informative. For questions or comments you can always give a reaction in the comment section or contact me: