Continuous Integration with Ravello


Search for scalable, on-demand VMware ESXi lab/test environment

Enterprises of varying scale rely on StacksWare to track their application usage. For example, some of our customers provide several thousand desktops to their employees. To support both SMBs and large enterprises, we needed a flexible solution for benchmarking StacksWare’s performance. Before Ravello we rolled our own commodity rack servers to run VMware ESXI. Aside from the headache of setup and maintenance, we couldn’t easily automate and schedule our own hardware. Providing a flexible test infrastructure to benchmark SMB infrastructures (~20 ESXI hosts) and then against large infrastructures (>75 ESXI hosts) was totally infeasible due to memory and compute constraints. After that painful experience, we decided to try out Rackspace’s managed colocation service for ESXi. Though they provided services for quick hardware scalability in their SLA, the price tag was prohibitively expensive. We also found that managed colocation solutions were often hosted in multi-tenant environments that degraded performance and stability.

Running VMware ESXi hosts on AWS and Google Cloud with Ravello Systems

I heard from fellow entrepreneurs that a Sequoia-backed company Ravello Systems provided nested virtualization with a flexible pay-as-you-go model for VMware ESXi labs on public clouds. At first I was nervous that the ESXi beta version would not be full-featured enough to model mature production ecosystems like the virtualized infrastructure of major universities with thousands of nodes. I had plenty of questions for Ravello’s infrastructure.

  • What if our customers are using hosts with VMXNet3 network drivers?
  • Does the product have the tooling to support multiple drivers?
  • How can we model atight firewall networkin their cluster?
  • How difficult is it toconfigure shared storage systemslike NFS or iSCSI or vSAN across the cluster?

Within minutes of playing around with its functionality, I learned that Ravello provides a rich ecosystem for modeling sophisticated production environments in minutes. This was definitely the solution that we were looking for.

Our current Continuous Integration testing process

Our team went to work building a development pipeline in Ravello that made sense. With their development API, we developed an efficient process to test any additional features for our virtual appliance with just a few Python scripts.

  1. When we create a commit in our Github repository, our continuous integration service creates a job to spin up a Ravello blueprint, using their Python SDK.
  2. Once the ESXi hosts in Ravello have fully booted up from the blueprint, we use the vSphere APIs to programmatically deploy a new StacksWare internal monitor through the vCenter that’s managing these ESXi hosts.
  3. Once the build finishes, we propagate any errors to our continuous integration service and spin down the blueprint. This ensures that we don’t use any more resources than we need.
  4. If there are no errors in the build process, we then repeat steps 2 and 3 with the “next tier” blueprint. More information about blueprint tiering in the next section.

Blueprint tiering for multiple test scenarios

We created different tiers of Ravello blueprints to test basic functionality and performance during this build process.

  1. The first blueprint sanity checks the basic Ravello functionality across three different ESXi hosts. We catch most bugs without expending time and money with this configuration.
  2. The second blueprint models a standard SMB infrastructure with 20 ESXi hosts.
  3. The third blueprint models a larger enterprise infrastructure with 50 ESXi hosts.

If the build system successfully builds the latest StacksWare commit against these three blueprints, the code is merged to our master Github branch and the virtual appliance is ready for deployment!

StacksWare is an agentless software asset management solution for virtualized environments. Our product allows organizations to track their application usage and determine whether they are in compliance with their license agreements. Our software passively gathers application usage via VMware’s ESXi hypervisor and Horizon View, eliminating the need to install an intrusive agent on every guest OS.