• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Kennismaking Met Puppet
 

Kennismaking Met Puppet

on

  • 2,358 views

Presentatie gegeven tijdens de Unixprofs bijeenkomst op 13 april 2010

Presentatie gegeven tijdens de Unixprofs bijeenkomst op 13 april 2010

Statistics

Views

Total Views
2,358
Views on SlideShare
2,355
Embed Views
3

Actions

Likes
2
Downloads
11
Comments
0

1 Embed 3

http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Kennismaking Met Puppet Kennismaking Met Puppet Presentation Transcript

    • Puppet Resultaatgericht beheer Wim Haver Een kennismaking met Puppet
    • Voorstellen
      • Wim Haver
      • Automatisering sinds 1980
      • Toen: IBM mainframe
      • Nu: Open Source en Linux
    • Agenda
      • Historie / heden zonder Puppet
      • Wat is Puppet (theorie)
      • Wat is Puppet (praktijk)
      • Heden / toekomst met Puppet
    • Historie zonder Puppet Lang wachten op hardware Installatie Configuratie Fixes / updates
    • Heden zonder Puppet Snelle levering hardware / virtuele machine Image (golden copy) Configuratie (geautomatiseerd) Fixes, updates
    • Nadelen
      • Te veel computers / services
      • Te veel OS'en
      • Te weinig tijd
      • Veel handmatig of met behulp van op maat gemaakte scripts
      • Geen rapportage
      • Weinig / geen kennis delen
      • Weinig / geen documentatie
    • Uitdagingen
      • Hou systemen gelijk
      • Weet wat de status is
      • Een systeem kunnen vervangen door een identiek exemplaar
      • Verschillende OS'en (versies) zelfde applicaties
      • Wijzigingen kunnen ”pushen”
      • Stoppen met dupliceren
      • Op tijd thuis zijn
    • Wat is Puppet?
      • Een beschrijvende programmeertaal om beheer te automatiseren
      • Open source geschreven in Ruby
      • Abstraheert configuratie tot resources
      • Beschrijft het 'wat' en niet het 'hoe'
      • Server / Clients (volgende slide)
      • Een bibliotheek ten behoeve van configuratie
      • Abstractielaag tussen beheerder en systeem
      • Zorgt voor herhaalbare beheeracties
    • Server / Clients
      • Server
        • Puppetmaster
        • Eenvoudige fileserver
        • Uitgever certificaten
      • Clients
        • Puppet
        • Facter (Vergaart informatie die als variabele gebruikt kan worden, zogenaamde 'facts')
    • Gevolgen van het gebruiken van Puppet
      • Configuratie conform jouw specificaties
      • Schrijf de code 1 keer, gebruik de code vaker
      • Zelfdocumenterende code
      • Reproduceerbaar
      • Infrastructuur blijft up-to-date
      • Accuratesse (kan getest worden)
    • Het Puppet configuratieproces
      • Ophalen van de catalog (gecompileerde code) van de Puppetmaster
      • Bepaal de volgorde van verwerking
      • Voor elke gedefinieerde resource
        • Wat is de huidige status
        • Vergelijk de huidige status met de gewenste status
        • Fix als er ongelijkheid is
      • Stuur report naar Puppetmaster
      • Herhaal dit (default) elke 30 minuten
    • Puppet in de praktijk - Type Het hoogste definitieniveau is de Environment Bijvoorbeeld productie, acceptatie of test Types zijn elementen die door Puppet geconfigureerd kunnen worden, zoals: Files, Packages, Services, Cron, User, … Bijvoorbeeld: package { mc: ensure => installed }
    • Puppet in de praktijk – Type package package { mc: ensure => installed } In plaats van: # yum install mc # up2date mc # apt-get install mc # fink install mc # ports install mc # pkg_add mc # emerge mc # pkg-get mc # rpm -Uvh mc-1.8.6.i386.rpm # rug install mc # gem install mc # pkgadd mc
    • Puppet in de praktijk - Class Class heeft een naam en is een verzameling van types. Includes en inherits zijn mogelijk. Bijvoorbeeld: class mc { package { mc: ensure => installed } }
    • Puppet in de praktijk - Node Node is een configuratieblok dat een client vertegenwoordigt. Een node bevat types en/of classes. Includes en inherits zijn mogelijk. Bijvoorbeeld: node basenode { include mc } node 'sansbeheer.santec.beheer' inherits basenode { }
    • Puppet in de praktijk - Definitions Definitions zijn een soort subclass die meer dan eens gebruikt kunnen worden binnen een class. Handig bij bijvoorbeeld vhost definities: define vhost ( $docroot = '' ,$domain = '') { … definities met variabelen .. } apache::vhost { … ”een”: assign variabelen 1 ... … ”twee”: assign variabelen 2 … }
    • Puppet in de praktijk - Templates Een template is een configuratiefile met variabelen. Een template file heeft .erb als extentie Voorbeeld van een regel uit een template: CLIENTHOSTNAME=&quot;<%= hostname %>&quot; De hostname wordt hier door Facter (draait op de client) ingevuld.
    • Puppet in de praktijk - module Module is een verzameling classes, definitions, files, templates en/of plugins Een module is portable en staat op zich zelf. Je kunt dus modules uitwisselen met anderen. Er zijn verschillende repositories waar je uitstekende modules kunt vinden.
    • Puppet in de praktijk - modules Typische directory structuur van een module: modulenaam/manifests/ (.pp bestanden. init.pp automatisch) modulenaam/templates/ (.erb bestanden) modulenaam/files/ (voor de fileserver functie) modulesnaam/plugins/
    • Deze twee Debian apt-get install openssh-server vi /etc/ssh/sshd_config /etc/init.d/ssh start RedHat yum install openssh-server vi /etc/ssh/sshd_config /etc/init.d/sshd start
    • Worden in Puppet Puppet package {ssh: ensure => installed} file {sshd_config: name => &quot;/etc/ssh/sshd_config&quot;, source => &quot;puppet://server/aps/ssh/sshd_config } service {sshd: ensure => running }
    • Puppet taalattributen Arrays [ “red”, “green”, “blue” ] Variables $variable = value Conditionals If/else statements Case statement Selectors
    • class hobbit-client { package { hobbit-client: ensure => installed } file { &quot;hobbit-client&quot;: owner => &quot;root&quot;, group => &quot;root&quot;, mode => 644, content => template(&quot;hobbit-client/hobbit-client.default.erb&quot;), require => Package[&quot;hobbit-client&quot;], notify => Service[hobbit-client], path => $operatingsystem ? { default => &quot;/etc/default/hobbit-client&quot;, CentOS => &quot;/etc/sysconfig/hobbit-client&quot; } } service { hobbit-client: ensure => running, } }
    • Zelf beginnen met Puppet
      • Puppet verstoort het huidige proces niet dus is een stapsgewijze invoering mogelijk
      • Start eenvoudig en pragmatisch
      • Er zijn meerdere online repositories
      • Er is veel online documentatie, een Google group en een Puppet cursus
    • Puppet links Informatie : http://www.puppetlabs.com/puppet/introduction/ http://www.kanarip.com/courses Module Repositories : http://git.puppetmanaged.org/ http://git.koumbit.net/ http://git.black.co.at/