Puppet Camp Dallas 2014: How Puppet Ops Rolls

  • View
    370

  • Download
    0

Embed Size (px)

DESCRIPTION

Puppet Camp Dallas 2014: "How Puppet Ops Rolls" by Joe Rodriguez, Puppet Labs

Text of Puppet Camp Dallas 2014: How Puppet Ops Rolls

  • 1.PuppetLabs How Puppet Ops Rolls! 10 June 2014 Joe Rodriguez (JRod) Ops Wrangler - Puppet Labs, Inc.

2. $(whoami) 3. So what are we talking about? 4. Q: How does Puppet Ops do Puppet? 5. Answer: Good Question! Believe it or Not, our challenges are not any different than yours. 6. How are we not different? Internal PaaS Infrastructure: Puppet Engineering & Delivery Cloud Infrastructure: Various Web Properties *Rackspace *Linode *GCE *AWS Networking infrastructure *Remoteofficeinfrastructure. *ColocationRedundancy. 7. Today's Goals: Is To: *Giveyouahigh-levelperspectiveofthingsPuppetOpsdoesinourPuppetCode. *Getyouthinkingaboutpuppetthingsnotnotnecessarilycoveredininthedocs. Not To: Show you how to use Puppet. 8. 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. 9. Modules 10. Module Design 11. Understand how a module looks, feels, and is used in your environment. 12. 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 PFS pattern then it time to BGTM. Example: PGPool - https://github.com/jrodriguezjr/puppet-pgpool2 13. Roles and Profiles 14. Roles/Profiles In General: Allows separation of Tech and Business logic in Puppet Code - Craig Dunn, Hunter Haugen Are meant to consume Modules in a logical way. Allows for Code organization. Architecture paradigm: For you Devs, its comparative to MVC programming patterns. 15. Role: 16. Profiles: 17. Hiera 18. Hiera: Let Data Drive Everything. Allows you to drive puppet with data. Allows you to group data according to groups or environments. 19. Our Hiera Structure: 20. 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 Puppet Workflow. 21. A look at the Puppetfile: 22. Extras: Useful Puppet Tools in the wild we've used: Puppet Query - Eric D., Spotify Puppet Dashboard - FOSS 23. Bonus Tip(s): Things you should use in case you are not already ;) : Linting and Code Checking: puppet-lint puppetparservalidate Smoke testing: puppetapply--noop 24. Bonus Tips (cont.) Unit-testing rspec-puppet bundleexecrakespec Acceptance testing beaker-rspec 25. On Puppet Infrastructure - Hardware (Avoid Puppet drag!) Anyone running a decent sized puppet infrastructure knows that at times it can be slow. Run Puppet on a decently sized box! Preferably one with SSDs, a good amount of procs, and memory. 26. Summary: Keep your Puppet Operation Expenditure Low. (Sysadmin/Dev Time) == $$$ Recap: -StriveEngineerGreatModules-understandyourLegos!(JoeK.) -RockoutwithRoles/Profiles -LetHieraDriveyourdata. -FallinlovewithR10K&DynamicEnvironments.Getyourwork-flowon! -Learntoloveyourfactsandfunctions. 27. That's all she wrote! Q & A 28. 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 29. Thank you Joe Rodriguez (JRod) Ops Wrangler - Puppet Labs, Inc. jrod@puppetlabs.com(mailto:jrod@puppetlabs.com) @r0dr1gu3zjr(http://twitter.com/r0dr1gu3zjr)