Top Banner
Ikke test Puppet-koden din! Oslo Puppet Meetup
44

Ikke test Puppet-koden din

Aug 12, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ikke test Puppet-koden din

Ikke testPuppet-koden

din!Oslo Puppet Meetup

Page 2: Ikke test Puppet-koden din

på Twitter eller Freenode

@beddari

Page 3: Ikke test Puppet-koden din

1. StatusHva kan vi om testing av infrastruktur-kode?

Page 4: Ikke test Puppet-koden din

Vi skiller kodemiljøene frahverandre

Kanskje en branch, deretter dev, test, qa før prod

Page 5: Ikke test Puppet-koden din

Vi itererer raskt i dev-miljøet

Vagrant, VMware, OpenStack, LXC/Docker

Page 6: Ikke test Puppet-koden din

Vi validerer syntaks ogkodestil automatisk

Integrert med versjonskontroll og CI

Page 7: Ikke test Puppet-koden din

Vi kjører unit- ogintegrasjonstesting

Modules/cookbooks/bundles er kodekomponenter

Page 8: Ikke test Puppet-koden din

Hmm .. gjør vi egentlig det?

Page 9: Ikke test Puppet-koden din

Vi overvåker og målerinfrastrukturen

Page 10: Ikke test Puppet-koden din

Vi overvåker og målerinfrastrukturen tjenestene

Page 11: Ikke test Puppet-koden din

OK, men det gjør vi jo? Det gjør vel alle?

Page 12: Ikke test Puppet-koden din

- Ja, i prod!

Page 13: Ikke test Puppet-koden din
Page 14: Ikke test Puppet-koden din

2. Hva er

egentlig

infrastruktur-

kode?Ikke ditt typiske utviklingsprosjekt, nei

Page 15: Ikke test Puppet-koden din

Det egentlige artifaktet eret dynamisk system!

Start-tilstanden vil ofte være ukjent

Page 16: Ikke test Puppet-koden din

Kjøring av koden har flereinputs enn dine!

Ikke anta for mye om miljøet

Page 17: Ikke test Puppet-koden din

Koden beskriver entilstand!

Dersom tilstandsbeskrivelsen er korrekt, hva er igjen åteste?

Page 18: Ikke test Puppet-koden din

Tradisjonell testing trefferikke godt nok!

Unit- og integrasjonstester gir mindre gevinst

Page 19: Ikke test Puppet-koden din

3. Test-pyramiden

faller?.. eller hvorfor infra-kodere liker iskrem

Page 20: Ikke test Puppet-koden din

Originalen

Mike Cohn, (2009)Succeeding with Agile

Page 21: Ikke test Puppet-koden din

Pyramiden 2.0

Robert C. Martin, (2011)The Clean Coder

Page 22: Ikke test Puppet-koden din
Page 23: Ikke test Puppet-koden din
Page 24: Ikke test Puppet-koden din
Page 25: Ikke test Puppet-koden din
Page 26: Ikke test Puppet-koden din

4. Løsninger?Endeling kan vi snakke om verktøy!

Page 27: Ikke test Puppet-koden din

og Serverspec mspectatorrspec-system

Page 28: Ikke test Puppet-koden din

ServerspecVerktøy og bibliotek for utside-inn testing av server-

infrastruktur

Page 29: Ikke test Puppet-koden din

@beddari tidlig i 2013:

Hurra!

Dette er jo enn veldig veldig VELDIG god ide!

Page 30: Ikke test Puppet-koden din

Alle kan skrive tester medserverspec

Ops? Det er bare bash med en wrapper rundt!

Dev? Det er rspec, du kan jo det/lærer det lett!

Page 31: Ikke test Puppet-koden din

Både et verktøy i seg selv og etbibliotek

Ferdig util for å kjøre tester via Vagrant og SSH

Page 32: Ikke test Puppet-koden din

Vi vil se kode![root@localhost serverspec-eksempel]# tree.├── Rakefile└── spec ├── centos64 │ └── httpd_spec.rb └── spec_helper.rb

Page 33: Ikke test Puppet-koden din

Mulighet for en gjenbrukbartestbase!!

På kryss av ansvar og bakgrunn

Page 34: Ikke test Puppet-koden din

Er alt bare fryd ..

Nei, prosjektet har utfordringer rundt beskrivelse av flerenoder og .. syntaks!

Page 35: Ikke test Puppet-koden din

Ideer til implementasjon ...tenkehatten på!

Testene bør skrives av andreVi kan hente data fra ikke-kodet-infrastruktur, typiskstorage, nettverkBenytte testene i hele kjeden helt fra dev til prodTesting blir en form for overvåkning? WIN!

Page 36: Ikke test Puppet-koden din

mspectatorFullt ut integrert infrastruktur-testing med Mcollective av

Raphaël Pinson, Camp2camp

Page 37: Ikke test Puppet-koden din

mspectator kan benyttemcollective-filter

Løser problemet med at serverspec knytter testene motFQDN

Page 38: Ikke test Puppet-koden din

.. also, since I installed mcollective, I lost 5kg, I can see in the dark and cook without using my hands

require 'mspectator'

describe "apache::server" do it { should find_nodes(10).or_less.with_agent('spec') } it { should have_certificate.signed } it { should pass_puppet_spec }

context "when on Debian", :facts => [:operatingsystem => "Debian"] do it { should find_nodes(5).or_more } it { should have_service('apache2').with( :ensure => 'running', :enable => 'true' ) } it { should have_package('apache2') } it { should have_user('www-data') } endend

Page 39: Ikke test Puppet-koden din

Arkitekturen er mer komplisert

En må naturlig nok ha mcollective ...Testene må deployes til nodene som skal kjøre deTaper noe av elegansen, vinner i utbytte!

Page 40: Ikke test Puppet-koden din

rspec-systemEt undercover Puppetlabs-prosjekt av Ken Barber

Page 41: Ikke test Puppet-koden din

Mange av de samme tankene

Testing av systemer og gjerne større sett av noder

sammen

SSH som default-transport

Vurderer å ta i bruk serverspec som lib

Page 42: Ikke test Puppet-koden din

5. Referanserog linker

Page 43: Ikke test Puppet-koden din

Tekster

The Clean Coder: A Code of Conduct for Professional

Programmers ( )

: Promises, Lies and Dry-Run Mode ( )

: Testing your infrastructure ( )

: Automated infrastructure testing ( )

: Puppet at GitHub ( | )

: Puppet module testing ( )

Kode

Tools for writing fast unit tests for puppet

Framework for running integration tests in

an isolated environment

Book

Sean OMeara Blog

Andrew Crump Blog

Ranjib Dey Slides

Will Farrington Video Slides

Jan Vansteenkiste Slides

Fizzgig

Test Kitchen

Page 44: Ikke test Puppet-koden din

Hire me!no.linkedin.com/in/beddari