Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Puppet 3: Present and Future Tense


Published on

My Presentation from Puppetcamp Gent 2013

Published in: Technology
  • Be the first to comment

Puppet 3: Present and Future Tense

  1. 1. Puppet 3: Present andfuture tense Eric Sorenson | Puppet Labs presented by
  2. 2. What’s In this Talk? • Hi. • The path to 3.1 • Shiny new stuff and Changes since 2.7 • Future • The outside world • Call to action #puppetcamp @puppetlabs
  3. 3. Front Matter • Welcome to PuppetCamp! • Ground Rules for Conduct • Be Nice. Assume good faith. • Encourage diversity and participation • Keep it legal #puppetcamp @puppetlabsthank you for coming. these events are really about you. we have an amazing group ofspeakers lined up for the structured part of the program, then in the afternoon a split trackwith intro tutorials for people new to puppet and open spaces where we’ll all collectivelyfigure out what’s the best way to spend our time.i’m going to lay out some ground rules so we can all have a great, respectful, productiveevent. first, we should be nice in our interactions with one another. as wikipedia says, assumethe other people are acting in good faith and aren’t automatically crazy or dumb becausethey have a different view.second, related point -- i’m going to read this part because its important and i get emotionalabout it, so i dont want to miss anything. we have a problem in open source: we’ve built asystem of communication that’s unfair, because it tends to exclude the voices of people whoaren’t some or all of young, male, straight and white. apart from individual actions ofharassment, which are against both our principles and our policy, the system perpetuatesitself unless we do something to change it. So yes, be nice, and especially be aware of howyour biases affect your interactions with those around you.Lastly, keep it legal -- for presentations and open spaces: respect privacy and confidentialityand the laws of the land. Note we do not have any talks from quasi-legal organizations likePirate Bay or the US National Security Agency scheduled -- so either end of the criminalspectrum.
  4. 4. Thank our Sponsors! • Be nice to everyone @HoGentFBO • Tweet Sponsors a #puppetcamp DANK U!! • @inuits, @nucleus_hosting for Camp • @bookingcom for FREE BEER tonight #puppetcamp @puppetlabsyou can take out your phone now.
  5. 5. #puppetcamp @puppetlabsHi. I’m Eric Sorenson aka eric0 on irc, ahpook on twitter.product owner for opensource puppet.cfengine since 98, in awesome but failed startupspuppet user since 0.24 at apple, an awesome sucessful non-startuppuppet employee since june, an awesome hopefully successful startuplove OSS, commited to puppet becoming an amazing platform that our Puppet Enterpriseteam and community build on
  6. 6. #puppetcamp @puppetlabsTHE PAST - puppet camp 2009 at uc san francisco.anybody else there? turns out attendance at this conference is the single biggest predictor foreventually working at puppet labs. something around 30% of attendees end up employees. sosee me after the talk!
  7. 7. A Brief History of Puppet 3 3.1 2.6 2.7 0.13 0.22 0.24 0.25 2006 2007 2008 2009 2010 2011 2012 2013 #puppetcamp @puppetlabsthis slide’s alternate title was ‘give edward tufte an aneurysm’roughly yearly releases until the Great Renaming in 2010 introduced roughly 10x morepuppetany pre-0.24 users here?sep 2009 0.25.0 introduced REST instead of XML-RPCjuly 2010 2.6.0 had run stages, param classes, complex data structures, and lots of syntaxjune 2011 2.7.0 introduced greater API-zation , through faces and exposing morefunctionality like certificates through RESTsignificant new functionality through 2.7 series, including some surprises in minor versions.up to 2.7.20 up is 3, released this week.
  8. 8. 2.7.0 Release 3.0.0 Release 3.1.0 Release #puppetcamp @puppetlabsjeff weiss made this calendar heat map of commit lines-of-code changed between 2.7 and3.x0-250 / 250-500 / 500-750 / > 750 lines in each of 4 shades of was a long road to the 3.0 release and things got fairly intense around puppet conf inseptember...and didn’t really slake off so far in 2013. lots of great stuff in there, lets talk about it in moredetail.
  9. 9. #puppetcamp @puppetlabsFrom
  10. 10. # code loading improvements ## pluginsync enabled w/ lazy loading puppet agent --genconfig | grep pluginsync # pluginsync = true ## faces can load from a module puppet module install pl-cloud_provisioner ## accessing/using settings is sane(r) require ‘puppet’ Puppet.initialize_settings ## YARD DOCS ROCK yard server open http://localhost:8808 #puppetcamp @puppetlabsenabled by default to ease bootstrappinglazy-loaded instead of download-then-load`gem install` just works for Ruby extensionsmore work to do on the code distribution story: puppet modules as 1st class distribution andgood OS citizens (reducy RUBYLIB craziness)open yard, click Class List then Type. This shows a helpful description about what a typelooks like
  11. 11. # platform support ## solaris 10 & 11 puppet resource service # SMF yay puppet resource zone # Zones yay facter osfamily # thx ashp ## windows msi packages package { ‘XXX’: provider => windows } ## loads of correctness and features #puppetcamp @puppetlabsruby 1.9.3 - sorta worked on 2.7, for realz on 3. earlier 1.9, pls dontsolaris - smf was kinda sad, zones, pkgs meh. rahul and stefan schulte brought some muchneeded love to sol 11 packaging, zones -- #7175 “zones borken since 0.24.8”, holdablepackagesashley penney --variants like openindiana into support improved with more to come --next up is powershellcorrectness - redhat: pip provider works, better useraddmac: pkgdmg works again, launchd servers can be restarted, mountain lion supportdebian:
  12. 12. # hiera built in via data bindings (thx RI) ## before class ntp($ntpserver=hiera(ntp_server, ‘’)) { ... } ## after class ntp($ntpserver) { ... } #puppetcamp @puppetlabswhos used hiera? heard of hiera? simple hierarchical data store for separating code from dataarri wrote it, available as add-ons since last june.simplified install--4 packages to 2--auto dependenciessimplified usage w/ data bindings -- kelsey’s work
  13. 13. # language features ## unless unless $operatingsystem == ‘OpenBSD’ { notice(“Need moar neckbeard!”) } ## More on the way in 3.2 (see #11331) $array = [ ‘foo’, ‘bar’, ‘baz’ ] foreach($array) { |$item| file { “/tmp/${item}”: ensure => present } } #puppetcamp @puppetlabsif !
  14. 14. #puppetcamp @puppetlabsfrom Greg Dallavalle at WolfNet -- early adopter because he was hurting under 2.7 and had toadd a bunch more resources -- 40K managed resources -- upgraded to telly RC6 and boom,all his machines crashed. i mean, it started using less cpu.bottom graph is from finch in puppet operations, showing runtime (compile + apply droppingand smoothing out on 3)- store catalog on agent in json not yaml- avoid needless object creation- reduce stat() call
  15. 15. 1.8.5 #puppetcamp @puppetlabswe’re deprecating support for ruby 1.8.5 in telly.RHEL5 platform can use a drop-in 1.8.7 package backported from el6
  16. 16. 1.9.3 #puppetcamp @puppetlabssquashed the last known 1.9 compat bug in 3.1 (cant collect virtual resources)please use it!we’re running on ruby 2.0 now w/ just a couple of test problems
  17. 17. # dynamic scoping is gone class parent { $var = "from parent" include included } class included { notify { $var: } ## NOT GONNA WORK notify { $parent::var: } ## YUP } #puppetcamp @puppetlabstakeaway: qualify your variables. local scope works, top-level works --
  18. 18. # old Ruby DSL is deprecated# rewritten Ruby DSL out of play# if you use it in production andreally need a feature, let us know! #puppetcamp @puppetlabs
  19. 19. #puppetcamp @puppetlabsImage via
  20. 20. The future • Beware “Forward-Looking Statements” • But we’re striving for transparency • Keep up on the backlog query • Modularity, Asynchronicity, Integration#puppetcamp @puppetlabs
  21. 21. Modules Everywhere • Enable Easy Iteration • Modular Filesystem layout in lib/ • Updated versions in modulepath? • Also: “params” data and more helpful metadata in Puppet modules #puppetcamp @puppetlabsmake it easy to iterate on parts of puppet that move at a different speed than coretypes and providers especially -- separate repos that are versioned and combined atpackaging time
  22. 22. Asynchronous Life • Enable HUUUUUUGE scale • Enable rapid runs - 1/minute? • It’s a ways off but we know we need: • Lightweight daemon (kick replacement) • Facter storage service • Standalone compiler#puppetcamp @puppetlabs
  23. 23. Integrating Ourselves • We want to be your PaaL • YARD everywhere • If you need stuff in Private methods, ask! • Radical Ideas as a Service #puppetcamp @puppetlabs“puppet as a library”
  24. 24. • The outside world #puppetcamp @puppetlabsthe world outside of puppet core is big and full of cool credit: eric sorenson
  25. 25. The World Around Us • PuppetDB 1.1 - Reports, sweet query API • MCollective 2.3 development series • Puppet Enterprise • Rebase onto Puppet 3 + PuppetDB • Features around Reports in PuppetDB#puppetcamp @puppetlabs
  26. 26. #puppetcamp @puppetlabsthat’s sven nys, eight time belgian cyclocross champion giving you a call to actionphoto:
  27. 27. What you can do • Download it. • Run it. • File bugs. • Tell us what you think.#puppetcamp @puppetlabs
  28. 28. We’re hiring!#puppetcamp @puppetlabs
  29. 29. Thank YouEric Sorenson | twitter: @ahpook | irc: eric0 presented by
  30. 30. • Photo Credits • cat photo: • puppetcamp 2009: gary larizza • keep calm: • jetpack: • buffalo: eric sorenson • sven nys: @puppetlabs