This document contains notes from a presentation on getting started with Puppet. It discusses several key resources for learning Puppet including documentation, style guides, roles and profiles, Hiera, tooling like Git and Vagrant, and community resources like mailing lists and meetups. The presentation focuses on selecting the most important learning blocks and sequencing them effectively to progress from basic to expert Puppet skills.
8. Easy
"What is Puppet?" with basic examples
clever things others have done with Puppet
How to DevOps-ify your organization with Puppet as a core tool
9. More Difficult
Beyond the basics, how do I become a Puppet expert?
Tons of resources! What's the progression?
24. Oh, also...real people in The Real World!
PuppetConf 2014 in San Francisco, CA!
PuppetCamps ( You must have figured this one out on your own. ;) )
Meetups
26. Validate Your Code
$ ( cd mymodule && puppet parser validate `find ./ -name '*.pp'` )
very basic sanity check ( brackets, commas, etc)
doesn't check for valid attributes for the type
27. Style Guide Check
$ sudo gem install puppet-lint && puppet-lint --with-filename ./mymodule
http://puppet-lint.com
very basic sanity check ( brackets, commas, quotes, etc )
doesn't check for valid attributes for the type
28. Puppet Style ProTip
Implement logic which rejects submission of Puppet code code to your central
git/SVN/etc repositories unless the code passes both 'puppet parser' and puppetlint runs.
29. Online Puppet Lint
puppet-lint As A Service?
http://www.puppetlinter.com
And did you know it has a GitHub Post-Receive Hook?
http://www.puppetlinter.com/github
30. Roles and Profiles
higher and higher levels of abstraction for Puppet code
first publicly proposed by Craig Dunn in:
http://www.craigdunn.org/2012/05/239/
now taught as part of Puppet Labs training
roles composed of profiles
profiles composed of component modules (puppetlabs/apache)
Let's see some code...
31. Hiera
source Puppet top-scopes and class parameters from multiple backends
YAML backend is most popular. Also JSON.
other backends allow non-coders to fiddle with data fed to pre-written
modules
CouchDB, MySQL, LDAP, etc - lots of Hiera backends in the community
38. Google these when you get home!
librarian-puppet (cool) : https://github.com/rodjek/librarian-puppet
r10k (way cool) : https://github.com/adrienthebo/r10k
39. Google these too!
vagrant-pe_build : https://github.com/adrienthebo/vagrant-pe_build
vagrant-oscar : https://github.com/adrienthebo/oscar