Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kennismaking Met Puppet

2,416 views

Published on

Presentatie gegeven tijdens de Unixprofs bijeenkomst op 13 april 2010

  • Be the first to comment

Kennismaking Met Puppet

  1. 1. Puppet Resultaatgericht beheer Wim Haver Een kennismaking met Puppet
  2. 2. Voorstellen <ul><li>Wim Haver
  3. 3. Automatisering sinds 1980
  4. 4. Toen: IBM mainframe
  5. 5. Nu: Open Source en Linux </li></ul>
  6. 6. Agenda <ul><li>Historie / heden zonder Puppet
  7. 7. Wat is Puppet (theorie)
  8. 8. Wat is Puppet (praktijk)
  9. 9. Heden / toekomst met Puppet </li></ul>
  10. 10. Historie zonder Puppet Lang wachten op hardware Installatie Configuratie Fixes / updates
  11. 11. Heden zonder Puppet Snelle levering hardware / virtuele machine Image (golden copy) Configuratie (geautomatiseerd) Fixes, updates
  12. 12. Nadelen <ul><li>Te veel computers / services
  13. 13. Te veel OS'en
  14. 14. Te weinig tijd
  15. 15. Veel handmatig of met behulp van op maat gemaakte scripts
  16. 16. Geen rapportage
  17. 17. Weinig / geen kennis delen
  18. 18. Weinig / geen documentatie </li></ul>
  19. 19. Uitdagingen <ul><li>Hou systemen gelijk
  20. 20. Weet wat de status is
  21. 21. Een systeem kunnen vervangen door een identiek exemplaar
  22. 22. Verschillende OS'en (versies) zelfde applicaties
  23. 23. Wijzigingen kunnen ”pushen”
  24. 24. Stoppen met dupliceren
  25. 25. Op tijd thuis zijn </li></ul>
  26. 26. Wat is Puppet? <ul><li>Een beschrijvende programmeertaal om beheer te automatiseren
  27. 27. Open source geschreven in Ruby
  28. 28. Abstraheert configuratie tot resources
  29. 29. Beschrijft het 'wat' en niet het 'hoe'
  30. 30. Server / Clients (volgende slide)
  31. 31. Een bibliotheek ten behoeve van configuratie
  32. 32. Abstractielaag tussen beheerder en systeem
  33. 33. Zorgt voor herhaalbare beheeracties </li></ul>
  34. 34. Server / Clients <ul><li>Server </li><ul><li>Puppetmaster
  35. 35. Eenvoudige fileserver
  36. 36. Uitgever certificaten </li></ul><li>Clients </li><ul><li>Puppet
  37. 37. Facter (Vergaart informatie die als variabele gebruikt kan worden, zogenaamde 'facts') </li></ul></ul>
  38. 38. Gevolgen van het gebruiken van Puppet <ul><li>Configuratie conform jouw specificaties
  39. 39. Schrijf de code 1 keer, gebruik de code vaker
  40. 40. Zelfdocumenterende code
  41. 41. Reproduceerbaar
  42. 42. Infrastructuur blijft up-to-date
  43. 43. Accuratesse (kan getest worden) </li></ul>
  44. 44. Het Puppet configuratieproces <ul><li>Ophalen van de catalog (gecompileerde code) van de Puppetmaster
  45. 45. Bepaal de volgorde van verwerking
  46. 46. Voor elke gedefinieerde resource </li><ul><li>Wat is de huidige status
  47. 47. Vergelijk de huidige status met de gewenste status
  48. 48. Fix als er ongelijkheid is </li></ul><li>Stuur report naar Puppetmaster
  49. 49. Herhaal dit (default) elke 30 minuten </li></ul>
  50. 50. 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 }
  51. 51. 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
  52. 52. 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 } }
  53. 53. 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 { }
  54. 54. 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 … }
  55. 55. 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.
  56. 56. 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.
  57. 57. 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/
  58. 58. 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
  59. 59. 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 }
  60. 60. Puppet taalattributen Arrays [ “red”, “green”, “blue” ] Variables $variable = value Conditionals If/else statements Case statement Selectors
  61. 61. 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, } }
  62. 62. Zelf beginnen met Puppet <ul><li>Puppet verstoort het huidige proces niet dus is een stapsgewijze invoering mogelijk
  63. 63. Start eenvoudig en pragmatisch
  64. 64. Er zijn meerdere online repositories
  65. 65. Er is veel online documentatie, een Google group en een Puppet cursus </li></ul>
  66. 66. 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/

×