how hudson hit puppet with a cucumber

73
Hudson, Puppet, Cucumber Patrick Debois Julian Simpson 23-25 March 2010 http://www.ukuug.org / Thursday 25 March 2010

Upload: patrick-debois

Post on 27-Jan-2015

107 views

Category:

Technology


0 download

DESCRIPTION

What sysadmins can learn from developer practices. Use Cucumber a Behavior Driven Test tool to test your puppet recipes. And automate it with CI tool Hudson. Talks was given at UKUUG by Julian Simpson (http://www.builddoctor.com) and Patrick Debois (http://jedi.be/blog)

TRANSCRIPT

Page 1: How Hudson hit Puppet with a Cucumber

Hudson,Puppet,

Cucumber

Patrick DeboisJulian Simpson

23-25 March 2010http://www.ukuug.org/

Thursday 25 March 2010

Page 2: How Hudson hit Puppet with a Cucumber

Patrick:Belgian

http://www.flickr.com/photos/bookeditor/

Thursday 25 March 2010

Page 3: How Hudson hit Puppet with a Cucumber

Julian: New Zealand

http://www.flickr.com/photos/glutnix/

Thursday 25 March 2010

Page 4: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/timmygunz/213619310/sizes/l/

A story about an IT companynot so far away

Thursday 25 March 2010

Page 5: How Hudson hit Puppet with a Cucumber

Meet the manager http://www.flickr.com/photos/thomashawk/31562846/sizes/l/

Thursday 25 March 2010

Page 6: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/praziquantel/32023792/sizes/o/

Project Managers

Thursday 25 March 2010

Page 7: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/mikeygottawa/400926090/sizes/o/

Rock-Stardevelopers

Thursday 25 March 2010

Page 8: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/auntylaurie/2486555769/sizes/l/

Rock-Starsysadmins

Thursday 25 March 2010

Page 9: How Hudson hit Puppet with a Cucumber

Stubborn guys from operations

Thursday 25 March 2010

Page 10: How Hudson hit Puppet with a Cucumber

Typicalchain of command

http://www.flickr.com/photos/keepwaddling1/3088388506/sizes/l/

Thursday 25 March 2010

Page 11: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/anjibarton/3115066604/sizes/l/

Ops and Sysadmins usually get along

Thursday 25 March 2010

Page 12: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/charles_nouyrit/3102079345/sizes/o/

But devs and

sysadmins

oftendebate about

‘quality’

Thursday 25 March 2010

Page 13: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/poenaru/1304953088/sizes/o/

Devs:“You should

be able to make changes

faster in production”

Thursday 25 March 2010

Page 14: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/cenz/15108117/sizes/o/

Sysadmins: “You should Test More”

Thursday 25 March 2010

Page 15: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/timmygunz/213619310/sizes/l/

Fight!

Usually results in ....

Thursday 25 March 2010

Page 16: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/bulldogsrule/35701005/sizes/o/

Then the managers created silos

Thursday 25 March 2010

Page 17: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/elsie/3577264876/sizes/l/

Now only some deploysget through

Thursday 25 March 2010

Page 18: How Hudson hit Puppet with a Cucumber

But over time developers evolved

Thursday 25 March 2010

Page 19: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/gigijin/2400999295/sizes/o/

They looked on the internet

Thursday 25 March 2010

Page 20: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/dvorscak/498914813/sizes/l/

Found new ways

to automatethe tests

TDD, BDD

Thursday 25 March 2010

Page 21: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/eiriknewth/282275178/sizes/l/

New ways ofautomating

delivery

Thursday 25 March 2010

Page 22: How Hudson hit Puppet with a Cucumber

Solved theirfocus problem

Thursday 25 March 2010

Page 23: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/squeakywheel/264379350/

Kept operations on a leash

Thursday 25 March 2010

Page 24: How Hudson hit Puppet with a Cucumber

And what about the sysadmins?

http://www.flickr.com/photos/24443965@N08/2893354732/sizes/o/

Thursday 25 March 2010

Page 25: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/31525296@N06/2951515346/sizes/o/

Whenever a customer wanted some new server

Thursday 25 March 2010

Page 26: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/maistora/485092742/sizes/l/

They would go off and do their manual

installs

Thursday 25 March 2010

Page 27: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/brianatwebbmoto/3096643650/sizes/l/

Even in terrible conditions

Thursday 25 March 2010

Page 28: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/s9500/2490150854/sizes/l/

http://www.flickr.com/photos/fmpgoh/4123201107/

http://www.flickr.com/photos/eelcoc/809648617/sizes/l/

Just like their role models

Thursday 25 March 2010

Page 29: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/alanhogan/3094280494/sizes/o/

Then they startedto use kickstarts

Thursday 25 March 2010

Page 30: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/donpezzano/2061429048/sizes/o/

Automatedit with ‘ugly’ custom scripting

Thursday 25 March 2010

Page 31: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/extraketchup/408727662/sizes/o/

config mgt v1 =

Lcfg, CFEngine

Thursday 25 March 2010

Page 32: How Hudson hit Puppet with a Cucumber

What’s a DSL?

http://strongdogz.com/wp-content/uploads/2009/11/dog-1.png

Thursday 25 March 2010

Page 33: How Hudson hit Puppet with a Cucumber

Puppet is a DSL for systems administration

http://www.flickr.com/photos/schockwellenreiter/2184781281/sizes/l/

http://reductivelabs.com/products/puppet/

Thursday 25 March 2010

Page 34: How Hudson hit Puppet with a Cucumber

# verify owner & permissionsclass base_etc {    file { "/etc/passwd": owner => root, group => root, mode => 644}    file { "/etc/sudoers": owner => root, group => root, mode => 440}} # install apacheclass apache2 {    # using the local package manager, install the reqd pkg    package { "apache2": ensure => installed }     service { "apache2":        ensure => running,        hasstatus => true,        hasrestart => true,        require => Package["apache2"],    }}  # default node is applied by _all_ connecting puppet clientsnode default {    include base_etc} # specific config for host www01node www01 {    # load the corresponding class defined above    include apache2} 

Read more: http://www.agileweboperations.com/configuration-management-introduction-to-puppet/#ixzz0iyVDqF89

Example Puppet Recipehttp://www.flickr.com/photos/paguma/4282178983/

Thursday 25 March 2010

Page 35: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/pmtorrone/65245861/sizes/l/

Chef

PuppetSysadmin

Config Management is evolving

http://www.opscode.com/chef/

Thursday 25 March 2010

Page 36: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/deannas_pics/3071841122/sizes/l/

Deploy new systems more often, faster and better reproducible

Thursday 25 March 2010

Page 37: How Hudson hit Puppet with a Cucumber

congruence

rebuild the whole node

convergence

making systemssimilar over time

http://www.flickr.com/photos/keirmoffatt/35306073/sizes/o/

http://www.infrastructures.org/papers/turing/turing.html

Models

http://www.flickr.com/photos/xjy/2269150356/sizes/o/

http://resources.metapress.com/pdf-preview.axd?code=yuce6e26a51dx9nh&size=largest

Thursday 25 March 2010

Page 38: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/richtpt/2173590295/sizes/l/

Provisioning Different Environments

Production

http://www.flickr.com/photos/idan586/3570542251/sizes/l/

Dev

Test

Thursday 25 March 2010

Page 39: How Hudson hit Puppet with a Cucumber

http://www.pet-dog-cat-supply-store.com/shop/shop_image/product/ad41a25245cbb895fbfbc950b1a0a3f5.jpg

Becoming agile

Thursday 25 March 2010

Page 40: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/stopbeingcarbon/231737755/sizes/o/

Cloud for testing configuration systems

Thursday 25 March 2010

Page 41: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/utherpendragonsphotos/14010402/sizes/o/

Sysadmins should look at problems from a development perspective

Thursday 25 March 2010

Page 42: How Hudson hit Puppet with a Cucumber

Devs should view it from operational point of view

Thursday 25 March 2010

Page 43: How Hudson hit Puppet with a Cucumber

Infrastructure is becoming code

http://www.flickr.com/photos/briandewitt/534143047/sizes/o/

Thursday 25 March 2010

Page 44: How Hudson hit Puppet with a Cucumber

So I’m a programmer now?

http://c0424311.cdn.cloudfiles.rackspacecloud.com/perfect-pet.jpg

Thursday 25 March 2010

Page 45: How Hudson hit Puppet with a Cucumber

If you’re a programmer, be a good one

http://www.flickr.com/photos/zippy/199990105/sizes/l/

Thursday 25 March 2010

Page 46: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/thelifeofshannon/385604955/sizes/o/

Version your scripts

Thursday 25 March 2010

Page 47: How Hudson hit Puppet with a Cucumber

Use a repository

http://www.flickr.com/photos/jeffreygutermanflickr/2674219854/Thursday 25 March 2010

Page 48: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/ideonexus/2897085942/sizes/l/

Testing

Thursday 25 March 2010

Page 49: How Hudson hit Puppet with a Cucumber

You might like

http://www.flickr.com/photos/the_harry_philes/217927389/sizes/l/

http://cukes.info/

Thursday 25 March 2010

Page 50: How Hudson hit Puppet with a Cucumber

Results

Thursday 25 March 2010

Page 51: How Hudson hit Puppet with a Cucumber

Gherkin

http://www.flickr.com/photos/lawriecate/2543688459/Thursday 25 March 2010

Page 52: How Hudson hit Puppet with a Cucumber

Validating Apache config

Thursday 25 March 2010

Page 53: How Hudson hit Puppet with a Cucumber

Mail Scenarios

http://github.com/albanpeignier/tryphon-puppet

TestTest

TestTest

TestTest

Thursday 25 March 2010

Page 54: How Hudson hit Puppet with a Cucumber

MailStep definitions

http://www.flickr.com/photos/sziliotti/3787189858/sizes/o/

Thursday 25 March 2010

Page 55: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/-konayuki-/3986635994/sizes/l/

Testingwill make the pains visible

Thursday 25 March 2010

Page 56: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/schneelocke/467551426/sizes/l/

Things will get dirty

Thursday 25 March 2010

Page 57: How Hudson hit Puppet with a Cucumber

It requires a strong stomach to keep it up

http://www.flickr.com/photos/82213449@N00/68608360/sizes/o/

Thursday 25 March 2010

Page 58: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/showbizsuperstar/4033321314/sizes/l/

Extra bonus

http://auxesis.github.com/cucumber-nagios/

: Cucumber-Nagios

$ cucumber-nagios ukuug.featurecritical: 0, warning: 0, 2 okay | passed=2, failed=0

Thursday 25 March 2010

Page 59: How Hudson hit Puppet with a Cucumber

Keep an overview on your changes

Thursday 25 March 2010

Page 60: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/sugarpond/2851411809/sizes/l/

Don’t change your infrastructure all at once

Thursday 25 March 2010

Page 61: How Hudson hit Puppet with a Cucumber

One pieceat a time

http://www.flickr.com/photos/lumpy_golightly/3479956609/sizes/l/

Thursday 25 March 2010

Page 62: How Hudson hit Puppet with a Cucumber

It’sstill a human

process

http://www.flickr.com/photos/shehal/2725353884/sizes/l/

Thursday 25 March 2010

Page 63: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/cvr/2914455499/

Tools help

Story!

Thursday 25 March 2010

Page 64: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/clofresh/3384877145/

Hudson facilitates the process

http://hudson-ci.org/

Thursday 25 March 2010

Page 65: How Hudson hit Puppet with a Cucumber

Puppet manifestsare tested

runs tests

invokes

Hudson

Puppet

Cucumber

provisions

=

OS

http://www.flickr.com/photos/tupwanders/89267092/sizes/l/

Thursday 25 March 2010

Page 66: How Hudson hit Puppet with a Cucumber

Tools are only a means to an end

http://images0.cafepress.com/product/36081430v1_225x225_Front.jpg

Thursday 25 March 2010

Page 67: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/42614915@N00/104222743/sizes/o/

Devs and Ops working together

Thursday 25 March 2010

Page 68: How Hudson hit Puppet with a Cucumber

Ops-Ops working together

Operating System

Network

Database

Thursday 25 March 2010

Page 69: How Hudson hit Puppet with a Cucumber

http://www.phantompub.com/images/CDPanel_Page_1.jpg

It’s about the business

Thursday 25 March 2010

Page 70: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/stephenpoff/2852616498/sizes/l/

Devops:a bit of everything

businessdeveloperssysadmins

Thursday 25 March 2010

Page 71: How Hudson hit Puppet with a Cucumber

http://www.devopsdays.org/http://planet.devops.info/http://www.devops.info/

#devops - twitter#infra-talk - irc

agile-system-administration - googlegroups

Puppetcamp Europe 2010 : Ghent, Belgium , on 27&28 May, 2010

Devopsdays US: Mountain View, California, US on Friday, June 25, 2010

Devopsdays Europe coming somewhere in October/November

Thursday 25 March 2010

Page 72: How Hudson hit Puppet with a Cucumber

http://www.flickr.com/photos/rosslittle/161718033/sizes/l/

Questions?

Thursday 25 March 2010

Page 73: How Hudson hit Puppet with a Cucumber

Patrick Debois@patrickdebois

[email protected]://jedi.be/blog

Julian [email protected]

@builddoctorhttp://www.build-doctor.com

Thank you!

http://www.flickr.com/photos/caliope-olga/4247576011/sizes/o/

Thursday 25 March 2010