Kennismaking Met Puppet

download Kennismaking Met Puppet

If you can't read please download the document

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