All the Puppet manifests, public shared modules, site modules, and (Hiera) data are the code and data we create. We need tools and workflows to manage them.
In this chapter, we are going to review the existing tools and techniques to manage Puppet's code workflow, from when it is written to when it is deployed to production.
Most of the people in the Puppet world use Git to version their code, so we will refer mostly to Git, but similar processes can be followed if we manage our code with subversion, mercurial, or any other source code management tool.
In this chapter, we give an overview of the tools that can help us with our Puppet code. We will cover the following topics:
Write with Geppetto and Vim
Manage with Git
Review with Gerrit
Test modules with rspec-puppet
Test Puppet runs with Beaker and Vagrant
Deploy with librarian-puppet or r10k
Automate with Travis or Jenkins