Puppet 3: Present and Future Tense

Post on 23-Jun-2015

2.605 views 1 download

Tags:

description

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

Transcript of Puppet 3: Present and Future Tense

presented by

Puppet 3: Present and future tense

Eric Sorenson | Puppet Labs eric0@puppetlabs.com

#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

#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.

#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.

#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

#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!

#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.

#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.

#puppetcamp @puppetlabs

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

#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

#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:

#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

#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 !

#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

#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

#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

#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 --

#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!

#puppetcamp @puppetlabs

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

#puppetcamp @puppetlabs

The future

• Beware “Forward-Looking Statements”

• But we’re striving for transparency

• Keep up on the backlog query

• Modularity, Asynchronicity, Integration

#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

#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

#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”

#puppetcamp @puppetlabs

• The outside world

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

#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

#puppetcamp @puppetlabs

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

#puppetcamp @puppetlabs

• Download it.

• Run it.

• File bugs.

• Tell us what you think.

What you can do

#puppetcamp @puppetlabs

We’re hiring!

presented by

Thank You

Eric Sorenson | twitter: @ahpook | irc: eric0eric0@puppetlabs.com

#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