Kennismaking TSC Solar met technische opleidingen ROC Friese Poort
Kennismaking Met Puppet
Transcript of Kennismaking Met Puppet
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 hardwareInstallatieConfiguratieFixes / updates
Heden zonder Puppet
Snelle levering hardware / virtuele machineImage (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
ServerPuppetmaster
Eenvoudige fileserver
Uitgever certificaten
ClientsPuppet
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 resourceWat 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=""
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
Debianapt-get install openssh-servervi /etc/ssh/sshd_config/etc/init.d/ssh startRedHatyum install openssh-servervi /etc/ssh/sshd_config/etc/init.d/sshd start
Worden in Puppet
Puppetpackage {ssh: ensure => installed}file {sshd_config: name => "/etc/ssh/sshd_config", source => "puppet://server/aps/ssh/sshd_config}service {sshd: ensure => running }
Puppet taalattributen
Arrays [ red, green, blue ]Variables $variable = valueConditionals If/else statements Case statement Selectors
class hobbit-client {
package { hobbit-client: ensure => installed }
file { "hobbit-client": owner => "root", group => "root", mode => 644, content => template("hobbit-client/hobbit-client.default.erb"), require => Package["hobbit-client"], notify => Service[hobbit-client], path => $operatingsystem ? { default => "/etc/default/hobbit-client", CentOS => "/etc/sysconfig/hobbit-client" } }
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/
Muokkaa otsikon tekstimuotoa napsauttamalla
Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso