Install Software in Isolated Virtual Machines

During the back-end of 2012 and earlier this year, I was involved in a fairly substantial VMware vCloud Plan and Design engagement that required integration of a number of different VMware and 3rd Party products. In particular a level of integration was required between VMware vCloud Director (vCD), vCloud Automation Center (vCAC) and consumer virtual machine workloads. This was required in order to offer advanced management capabilities.

One of the challenges that came to light during my involvement with this project was that the vCAC design depended upon the use of vCAC agents for installing software packages in virtual machine workloads. In effect it was assumed TCP/IP connectivity was available between the management infrastructure and consumer virtual machines – not common practice in a multi-tenant environment. Without going in to specific details of the project, what was needed was a mechanism to install software in consumer virtual machines without compromising security between the provider and the consumer(s). A number of options were considered, including:

I was personally an advocate of the second option as it involved not TCP/IP connectivity between consumer’s and/or the provider infrastructure. Furthermore it would work for virtual machines running on isolated networks too. During the various design discussions that ensued I produced a quick example script to prove the concept of connecting to vCloud Director, identifying a specific vApp and its constituent virtual machines, and then locating the same virtual machines in vSphere and installing the required software. The following video and script is an updated version of that initial test, which I enhanced with the ability to cope with multiple virtual machines, Powered Off virtual machines and packaged as an advanced function.

When I get some more free time, I might take a look at adding some enhancements, such as support for both Windows and Linux based virtual machine guest operating systems and/or enhanced support for handling virtual machines in different power states. Feel free to leave comments and provide some suggestions.