Post on 10-May-2015
description
PuppetLabsHow Puppet Ops Rolls!10 June 2014
Joe Rodriguez (JRod)Ops Wrangler - Puppet Labs, Inc.
$(whoami)
So what are we talking about?
Q: How does Puppet Ops do Puppet?
Answer: Good Question! Believe it or Not, ourchallenges are not any different than yours.
How are we not different?
Internal PaaS Infrastructure: Puppet Engineering & Delivery
Cloud Infrastructure: Various Web Properties
* Rackspace* Linode* GCE* AWS
Networking infrastructure
* Remote office infrastructure.* Colocation Redundancy.
Today's Goals:
Is To:
* Give you a high-level perspective of things Puppet Ops does in our Puppet Code.* Get you thinking about puppet things not not necessarily covered in in the docs.
Not To: Show you how to use Puppet.
The High Points:
Engineer great modules or use known good modules!
Engineer your Puppet code with Roles/Profiles.
Data: What's in your Hiera?
R10k and Dynamic Environments.
Puppet SCM work-flows
Pro Tips: Around Facts and Functions.
Extras: Puppet Tools in the wild that are quite useful.
Modules
Module Design
Understand how a module looks, feels, and is used in yourenvironment.
A few points on Modules:
The life-blood of a great puppet infrastructure are modules.
Strive not to reinvent the wheel - Forge.puppetlabs.com and Github
Be aware, not all modules are created equal.
A good rule of thumb: If your module code is a few yards beyond a simple PFSpattern then it time to BGTM.
Example: PGPool - https://github.com/jrodriguezjr/puppet-pgpool2
Roles and Profiles
Roles/Profiles In General:
Allows separation of Tech and Business logic in Puppet Code - Craig Dunn, HunterHaugen
Are meant to consume Modules in a logical way.
Allows for Code organization.
Architecture paradigm: For you Devs, its comparative to MVC programmingpatterns.
Role:
Profiles:
Hiera
Hiera: Let Data Drive Everything.
Allows you to drive puppet with data.
Allows you to group data according to groups or environments.
Our Hiera Structure:
R10K, Dynamic Environments, & Puppet Work-flows
Adrien Thebo: Author of R10k
If you have more than one dev, look at R10k and Dynamic Environments.
IMHO: It IS the secret to staying agile and developing Puppetcode fast with a PuppetWorkflow.
A look at the Puppetfile:
Extras: Useful Puppet Tools in the wild we've used:
Puppet Query - Eric D., Spotify
Puppet Dashboard - FOSS
Bonus Tip(s): Things you should use in case you are not already ;) :
Linting and Code Checking:
puppet-lint puppet parser validate <puppetcode.pp>
Smoke testing:
puppet apply --noop
Bonus Tips (cont.)
Unit-testing
rspec-puppet bundle exec rake spec
Acceptance testing
beaker-rspec
On Puppet Infrastructure - Hardware (Avoid Puppet drag!)
Anyone running a decent sized puppet infrastructure knows that at times it can beslow.
Run Puppet on a decently sized box!
Preferably one with SSDs, a good amount of procs, and memory.
Summary: Keep your Puppet Operation Expenditure Low.
(Sysadmin/Dev Time) == $$$
Recap:
- Strive Engineer Great Modules - understand your Legos! (Joe K.)- Rock out with Roles/Profiles- Let Hiera Drive your data.- Fall in love with R10K & Dynamic Environments. Get your work-flow on!- Learn to love your facts and functions.
That's all she wrote! Q & A
References:
Building Great Modules. http://docs.puppetlabs.com/guides/module_guides/bgtm.html
Roles and Profiles: https://github.com/hunner/roles_and_profiles http://www.craigdunn.org/2012/05/239/
R10K and Dynamic Environments: http://hunnur.com/blog/2010/10/dynamic-git-branch-puppet-environments/ http://puppetlabs.com/blog/git-workflow-and-puppet-environments/
Great AIO (All-In-One) Series: http://garylarizza.com/
Other tools: https://github.com/sodabrew/puppet-dashboard
Thank you
Joe Rodriguez (JRod)Ops Wrangler - Puppet Labs, Inc.jrod@puppetlabs.com (mailto:jrod@puppetlabs.com)
@r0dr1gu3zjr (http://twitter.com/r0dr1gu3zjr)