As businesses increasingly adopt lean technologies, they are asked to deliver code to customers more frequently and with greater accuracy, and to respond more quickly to market needs. "Continuous delivery" (CD) is a methodology designed to facilitate the rapid and accurate delivery of software by applying the same methodologies used in industrial production in the 1980s and '90s, optimizing the software delivery process to focus on throughput and systemic performance. Some of the most successful companies in the world are using CD to deploy dozens or even hundreds of changes to their software every day.
The principles of CD evolved from the Theory of Constraints developed by Eliyahu Goldratt and based on many previous years of management theory, and was formally outlined in the seminal work Continuous Delivery by Jez Humble and David Farley.
As outlined by Humble and Farley, continuous delivery relies heavily on configuration management. Puppet is used as the reference technology in their work, and Puppet Labs works frequently with its customers to bring both software (Puppet Enterprise) and methodologies (in the form of professional services engagements) to organizations of all sizes.
The continuous delivery track at PuppetConf 2013 featured speakers who helped attendees learn about the elements of a successful CD implementation, described how we're practicing CD at Puppet Labs, and explored specific tools to aid in adopting CD practices.
What Is This Continuous Delivery Thing Anyway?
I introduced the basic concepts of continuous delivery with my talk by focusing on Puppet technologies and operations teams, asking "what is continuous delivery," "why does my company or development team want it," and "what does it do for me?"
My session focused on the notions behind the Theory of Constraints as well as Gene Kim’s Three Ways and how CD relates to these and to DevOps as a whole. I discussed what you can do with Puppet technologies now to enable an environment that encourages rapid iteration, how operations teams can reach out to help development get on this path, and what Puppet Labs is currently working on to make Continuous Delivery available to every organization.
Test Driven Infrastructure Development
Tomas Doran, senior systems administrator at the TIM Group, said continuous deployment of Puppet code feels like a holy grail. Naive approaches are a minefield for stability, and code that works on existing machines but doesn’t work on newly provisioned machines is easy to write.
Tomas noted that while there are tools like puppet-rspec to help with testing your code, they don’t help with system level tests. One way to solve this problem is to build an infrastructure and run end to end tests against it.
Tomas' talk covered the approach his team has taken to this, which is defined by the development cycle they wanted: test driven development, fast feedback, and confidence in the repeatability of builds with an automated and continuous deployment pipeline to take changes from the first push through to production.
Oscar: Rapid Iteration With Vagrant and Puppet Enterprise
Adrien Thebo, a software engineer at Puppet Labs, said that when you're trying to debug software problems it's critical to be able to reproduce the original situation. Puppet Enterprise is no exception to this, and the Puppet Labs support team needed a way to rapidly reproduce customer issues across a wide range of operating systems and various versions of Puppet Enterprise.
Oscar is a set of Vagrant plugins that handles machine provisioning and configuration to install Puppet Enterprise. It's designed to make building Puppet Enterprise as simple as running
While Oscar was originally built for supporting Puppet Enterprise, it provides a general platform for developing and testing against Puppet Enterprise. Adrien's talk covered the history of Oscar, its current state, how it's used, and where to get it.
Testing for Ops: Going Beyond the Manifest
Christopher Webber, an infrastructure engineer at Demand Media, used his presentation to show the value of rspec-puppet for those who come from a more ops-centric background.
His talk focused on scenarios like:
- Are the baseline security measures in place?
- Do the differences between dev and prod get reflected?
- Are the config elements that are core to the application present?
In addition, he noted, tests become a place for documenting the oddities of configurations and ensuring that minor changes don't result in catastrophe.
Bootstrapping Puppet and Application Deployment
Robert de Macedo Soares, an application security engineer at BusinessWire, offered a dive into the problems faced when first launching Puppet across existing, heterogeneous servers, outlining possible solutions using his experience as an example.
Releasing Puppet: Automating Packaging for Many Platforms or 'Make All the Things'
A year ago, Puppet Labs had fewer than five fully packaged projects with disparate, difficult packaging workflows that took hours of manual work to accomplish identical results, with varying degrees of success.
Since then, we have standardized workflow, added new products, expanded platform support, and removed manual steps (no more hand-crafted builds).
Puppet Labs Release Manager Matthaus Owens and Release Engineer Moses Mendoza described how we have automated this process down to a single command from within the source code repo of most of our projects. That automation has enabled repeatable, automated packaging, and made packaging available to anyone using our projects’ source on GitHub. As a result, the addition of new products to the release process goes much more smoothly.
- Ready why continuous delivery is good for your business.
- Learn about how to build a toolbox for continuous delivery.
- You can use Puppet Enterprise as a key part of your CD processes. Download it today and try it out on 10 nodes for free.
- Configuration management is a critical part of contintinuous delivery. Learn how Puppet Enterprise fits in.