What are the best ways to build multiple test environments -- SIT and UAT -- using VMware? And how can I easily enable new environments to be spun up and down but also kept up-to-date?
You should always configure test environments to mimic production environments as closely as possible. System Integration Testing (SIT) environments are akin to Alpha-level environments. The more you tweak things, the further they will be from production system configuration and code.
User Acceptance Testing (UAT) environments are akin to Beta-level environments, where code is frozen at production unless an emergency bug fix is needed. The focus here is ensuring the code supports, and is supported by, the operating system and other infrastructure.
Unfortunately, VMware does not provide all the tools you need to manage multiple test environments. If you use SIT and UAT environments, then you have already dived down the DevOps rabbit hole. I highly recommend getting to know the Puppet IT automation tool: Puppet's desired state configuration capability allows you to configure your application tiers with almost identical OS environments. VMware started investing in Puppet Labs, which provides the configuration management technology, in 2011, and has stepped up its financial support for the company as DevOps becomes more prevalent. VMware's aim is to increase Puppet's integration with VMware virtualization and cloud management software.
Read more about VMware test environments
Improving VMware management skills with a test environment
The basics of building a VMware home lab
Consolidating your test and development environment
If you approach testing management with a gold master and clones, the SIT environment is the master; its updates are released to descendant UAT environments and then to production environments when a development cycle completes. I find this process too error-prone, however, and too difficult to fix in case of an error.
I prefer to have three completely distinct environments descended from the same master template and maintained by Puppet. You can make changes to the SIT and UAT environments at the Puppet Master server without affecting production workloads. Once you determine what changes to make, modify the master template and push it to all environments, including production.
Use the resource throttling native to VMware: Restrict the operating environment of your SIT implementations and ensure that they have fewer resources than your production environments, or that they must fight for contention more than production workloads. This will help you design applications that can withstand unexpected usage surges. Furthermore, moving the applications out of a constrained SIT environment to a production-ready UAT environment will demonstrate the application and virtual machine environments' abilities to handle resource flux.
This was first published in June 2013