30
presented by Puppet 3: Present and future tense Eric Sorenson | Puppet Labs [email protected]

Puppet 3: Present and Future Tense

Embed Size (px)

DESCRIPTION

Eric Sorenson's talk on "Puppet 3: Present and Future Tense" at Puppet Camp Ghent 2013.

Citation preview

Page 1: Puppet 3: Present and Future Tense

presented by

Puppet 3: Present and future tense

Eric Sorenson | Puppet Labs [email protected]

Page 2: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

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

Page 3: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

• Welcome to PuppetCamp!

• Ground Rules for Conduct

• Be Nice. Assume good faith.

• Encourage diversity and participation

• Keep it legal

Front Matter

thank you for coming. these events are really about you. we have an amazing group of speakers lined up for the structured part of the program, then in the afternoon a split track with intro tutorials for people new to puppet and open spaces where we’ll all collectively figure 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, productive event. first, we should be nice in our interactions with one another. as wikipedia says, assume the other people are acting in good faith and aren’t automatically crazy or dumb because they have a different view.second, related point -- i’m going to read this part because its important and i get emotional about it, so i dont want to miss anything. we have a problem in open source: we’ve built a system of communication that’s unfair, because it tends to exclude the voices of people who aren’t some or all of young, male, straight and white. apart from individual actions of harassment, which are against both our principles and our policy, the system perpetuates itself unless we do something to change it. So yes, be nice, and especially be aware of how your biases affect your interactions with those around you.Lastly, keep it legal -- for presentations and open spaces: respect privacy and confidentiality and the laws of the land. Note we do not have any talks from quasi-legal organizations like Pirate Bay or the US National Security Agency scheduled -- so either end of the criminal spectrum.

Page 4: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

Thank our Sponsors!

• Be nice to everyone @HoGentFBO

• Tweet Sponsors a #puppetcamp DANK U!!

• @inuits, @nucleus_hosting for Camp

• @bookingcom for FREE BEER tonight

you can take out your phone now.

Page 5: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

Hi. 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 Enterprise team and community build on

Page 6: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

THE PAST - puppet camp 2009 at uc san francisco. anybody else there? turns out attendance at this conference is the single biggest predictor for eventually working at puppet labs. something around 30% of attendees end up employees. so see me after the talk!

Page 7: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

2006 2007 2008 2009 2010 2011 2012 2013

0.13 0.22 0.24 0.25

2.6 2.73 3.1

A Brief History of Puppet

this slide’s alternate title was ‘give edward tufte an aneurysm’roughly yearly releases until the Great Renaming in 2010 introduced roughly 10x more puppetany 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 more functionality like certificates through RESTsignificant new functionality through 2.7 series, including some surprises in minor versions.up to 2.7.20 now.next up is 3, released this week.

Page 8: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

3.0.0 Release

2.7.0 Release

3.1.0 Release

jeff weiss made this calendar heat map of commit lines-of-code changed between 2.7 and 3.x0-250 / 250-500 / 500-750 / > 750 lines in each of 4 shades of green.it was a long road to the 3.0 release and things got fairly intense around puppet conf in september...and didn’t really slake off so far in 2013. lots of great stuff in there, lets talk about it in more detail.

Page 9: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

From http://www.keepcalm-o-matic.co.uk/p/keep-calm-and-ooh-shiny/

Page 10: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

# code loading improvements

## pluginsync enabled w/ lazy loadingpuppet agent --genconfig | grep pluginsync # pluginsync = true

## faces can load from a modulepuppet module install pl-cloud_provisioner

## accessing/using settings is sane(r)require ‘puppet’Puppet.initialize_settings

## YARD DOCS ROCKyard serveropen http://localhost:8808

enabled 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 and good OS citizens (reducy RUBYLIB craziness)open yard, click Class List then Type. This shows a helpful description about what a type looks like

Page 11: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

# platform support

## solaris 10 & 11 puppet resource service # SMF yaypuppet resource zone # Zones yayfacter osfamily # thx ashp

## windows msi packagespackage { ‘XXX’: provider => windows }

## loads of correctness and features

ruby 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 much needed love to sol 11 packaging, zones -- #7175 “zones borken since 0.24.8”, holdable packagesashley penney --variants like openindiana into osfamily. windows support improved with more to come --next up is powershell correctness - redhat: pip provider works, better useraddmac: pkgdmg works again, launchd servers can be restarted, mountain lion supportdebian:

Page 12: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

# hiera built in via data bindings (thx RI)

## beforeclass ntp($ntpserver=hiera(ntp_server, ‘time.apple.com’)) { ...}

## afterclass ntp($ntpserver) { ...}

whos 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

Page 13: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

# language features

## unlessunless $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 }}

if !

Page 14: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

from Greg Dallavalle at WolfNet -- early adopter because he was hurting under 2.7 and had to add 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 dropping and smoothing out on 3)- store catalog on agent in json not yaml- avoid needless object creation- reduce stat() call

Page 15: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

1.8.5

we’re deprecating support for ruby 1.8.5 in telly.RHEL5 platform can use a drop-in 1.8.7 package backported from el6

Page 16: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

1.9.3

squashed 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

Page 17: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

# dynamic scoping is gone

class parent { $var = "from parent" include included}

class included { notify { $var: } ## NOT GONNA WORK notify { $parent::var: } ## YUP }

takeaway: qualify your variables. local scope works, top-level works --

Page 18: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

# old Ruby DSL is deprecated

# rewritten Ruby DSL out of play

# if you use it in production andreally need a feature, let us know!

Page 19: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

Image via http://brandontoddwright.blogspot.be/2011/07/problem-with-jetpacks.html

Page 20: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

The future

• Beware “Forward-Looking Statements”

• But we’re striving for transparency

• Keep up on the backlog query

• Modularity, Asynchronicity, Integration

Page 21: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

Modules Everywhere

• Enable Easy Iteration

• Modular Filesystem layout in lib/

• Updated versions in modulepath?

• Also: “params” data and more helpful metadata in Puppet modules

make 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 at packaging time

Page 22: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

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

Page 23: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

Integrating Ourselves

• We want to be your PaaL

• YARD everywhere

• If you need stuff in Private methods, ask!

• Radical Ideas as a Service

“puppet as a library”

Page 24: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

• The outside world

the world outside of puppet core is big and full of cool things.photo credit: eric sorenson

Page 25: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

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

Page 26: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

that’s sven nys, eight time belgian cyclocross champion giving you a call to actionphoto: cyclephotos.co.uk

Page 27: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

• Download it.

• Run it.

• File bugs.

• Tell us what you think.

What you can do

Page 28: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

We’re hiring!

Page 29: Puppet 3: Present and Future Tense

presented by

Thank You

Eric Sorenson | twitter: @ahpook | irc: [email protected]

Page 30: Puppet 3: Present and Future Tense

#puppetcamp @puppetlabs

• Photo Credits

• cat photo: icanhazcheeseburger.com

• puppetcamp 2009: gary larizza

• keep calm: keepcalm-o-matic.co.uk

• jetpack: http://brandontoddwright.blogspot.com

• buffalo: eric sorenson

• sven nys: http://cyclephotos.co.uk