rake puppetexpert:create
Nathan Valentine
Professional Services Engineer - Puppet Labs
nathan@puppetlabs.com
@nrvale0
Why am I here?
Managing Windows with Puppet?
Spooky action at a distance with
MCollective!
Awesome sauce with Puppet + Docker?
Argh! Let me go to my corner and play
with my toys!
Let's play a game...
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
More Difficult
Beyond the basics, how do I become a Puppet expert?
Tons of resources! What's the progression?
Meta-learning
Meta-learning
Deconstruction: "...minimum learnable units, the LEGO blocks..."
Selection: "Which 20% of the blocks?"
Sequencing: "In what order?"
** shamelessly stolen from Wikipedia and T4HC
Selection and Sequencing are important!
Let's focus on
Review of available resources
Selection & Sequencing
BTW, this presentation linked from Twitter later today:

@nrvale0
Getting Started
The Usual Suspects
puppet-users mailing list:
http://goo.gl/dgvApa
"Whoa, Nelly! That's a lot of email!"
#puppet on irc.freenode.net
Puppet Labs Learning Management System
http://puppetlabs.com/learn
Puppet Enterprise Learning VM
http://info.puppetlabs.com/download-learning-puppet-VM.html
Puppet Enterprise Training
http://puppetlabs.com/services/training
Pro Puppet, Second Edition
http://goo.gl/SEjW6N
http://ask.puppetlabs.com
http://puppetlabs.com/blog
Twitter: @PuppetLabs
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
Puppet DSL Style
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
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
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.
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
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...
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
Tooling (and retooling)
Git
For better or worse (Hg lovers), Git dominates in the Puppet community.
GitHub : enough said
BitBucket : http://bitbucket.org
free private repos
'The Git Book' : http://git-scm.com/book
'Learn Git Branching' : http://pcottle.github.io/learnGitBranching/
New title: "First, learn Vagrant."
http://vagrantup.com
Vagrant
Disposable repeatable VMs with:
VirtualBox
VMWare
LXC
Docker
etc
Let's see some Vagrant magic!
Google these when you get home!
librarian-puppet (cool) : https://github.com/rodjek/librarian-puppet
r10k (way cool) : https://github.com/adrienthebo/r10k
Google these too!
vagrant-pe_build : https://github.com/adrienthebo/vagrant-pe_build
vagrant-oscar : https://github.com/adrienthebo/oscar
Thanks for listening! Feed back to
nathan@puppetlabs.com

rake puppetexpert:create - Puppet Camp Silicon Valley 2014