Standardize Provisioning of Virtual Machines with Blueprints
Problem
With the adoption of virtualization technologies, virtual machines (VMs) are provisioned and decommissioned frequently and dynamically. As overall system complexity grows, launching the right combination of VMs, assigning them to roles, dealing with error conditions and getting all the moving parts into the proper positions becomes more and more challenging. Moreover, the number of VM image combinations that need to be stored and maintained including VM patching and version control gets complicated fast.
Solution
Create “recipes” which are precise ingredients and steps for a specific software or configuration. A combination of recipes creates a blueprint. Define individual recipes for building each stack (application, services, operating environment, etc.). A recipe in this context is similar to a recipe in its more familiar usage: in cooking, a recipe identifies the list of ingredients, the order in which the ingredients are processed and any parameters such as quantity, temperature, cooking times, etc. A set of recipes can form blueprints, such as a “breakfast menu” (i.e. variations may include “continental,” “English,” etc.) Utilize a standardized template to capture provisioning requirements and attach recipes in the order of dependency. Inject run-time configuration values to be set for the parameters into recipes.
Application
- Creation and distribution of images for desktops, development environments or product deployments through a precise, consistent, repeatable and reproducible combination of resources, software services and configuration values
- Standardized configurations across development, testing, staging and production to support continuous design, integration and build
- Consistency in version management, instance patching, and distribution – for example, distributing an updated version of the desktop to all users within an organization or release of a new software to upgrade all routers on the field.
Impacts
- Provisioning issues if recipes and combination are not tested adequately
- Proliferation of recipes and blueprints with excessive non-standard requests
- Potential for errors arising out of manual provisioning and configuration
Anti-Patterns
- Provisioning based on an SDLC and project plan:
- Multiple deployment and installation documents executed as per a project plan, owned by multiple departmental groups, may be performed from different geographic locations, by multiple organizations and vendors
- Each activity in the process is disconnected in terms of sequence and timing, and involves hand-offs and knowledge transfer
- Provision Gold Images: The entire stack consisting of the operating system, system software, application software etc. is burned into an installable image that is used for provisioning
Related Patterns
- VM Factory Pattern
- Platform VM Pattern
- Application Virtualization Pattern
- Stateless VM Pattern
References
- Puppet Labs
- Chef
- rPath
- RightScale



