Login
Newsletter
Werbung

Do, 2. Juni 2011, 15:00

Von Puppen und Marionetten

Konfigurationsmanagement mit Puppet

Definitionen

In Listing 3 erkennen wir, was eine Definition ausmacht. Das Beispiel erstellt eine Definition namens »newip«, welche als Parameter die entsprechende IP-Adresse erwartet. Das zu konfigurierende Interface wird dem Titel entnommen. Wie Listing 4 zeigt, lassen sich Definitionen auch in Klassen packen.

Variablen lassen sich nach Belieben definieren, und sämtliche »facts«, welche uns Facter zusammengetragen hat, liegen ebenfalls als solche vor. Listing 5 zeigt, wie sich solche Informationen in sogenannten »Conditionals« nutzen lassen. Die folgenden Zeilen wenden die Konfiguration schließlich auf einen bestimmten Knoten (»node«) an:

node 'client1.example.com' {
  include hosting::webserver
}

Listing 3: Definition

define newip ( $ip ) {
  exec { "/sbin/ip address add $ip dev $title": }
}

newip { eth0:
  ip => "10.0.0.30",
}

Listing 4: Klasse

class network {
  define newip ( $ip ) {
    exec { "/sbin/ip address add $ip dev $title": }
}

network::newip { eth0:
  ip => "10.0.0.30",
}

Listing 5: Conditionals

class hosting {
  case $operatingsystem {
    fedora: { $httpd_packages = ["httpd", "php"] }
    debian: { $httpd_packages = ["apache2", "libapache2-mod-php5"] }
    ubuntu: { $httpd_packages = ["apache2", "libapache2-mod-php5"] }
    default: { $httpd_packages = ["apache", "php"] }
  }
  package { $httpd_packages: ensure => installed }
  service { "webserver":
    name => $operatingsystem ? {
      debian => "apache2",
      ubuntu => "apache2",
      redhat => "httpd",
      default => "apache",
    },
    ensure => running,
  }
}

Stored Configurations

Um Daten in einer Datenbank ablegen zu können, nutzt Puppet eine Technologie, die sich Stored Configurations nennt. Hierfür benötigt Puppet Rails, welches man unter Debian mittels apt-get install rails installiert. Zudem benötigt man je nach gewünschter Datenbank noch libsqlite3-ruby für SQLite (Default), libmysql-ruby für MySQL oder libpgsql-ruby für PostgreSQL. Rails sollte mindestens in Version 2.2.2 vorhanden sein, unter Debian Lenny findet sich eine entsprechende Version wiederum in den offiziellen Backports.

Auch wenn MySQL nach der Installation von rails auch ohne libmysql-ruby bereits funktioniert, ist dringend anzuraten, letzteres zu installieren. Der mitgelieferte in Ruby implementierte Connector ist nicht für den Produktivbetrieb bestimmt. Macht man es dennoch, wird man im rails.log entsprechend gewarnt.

Um jetzt zum Beispiel mit MySQL loszulegen, müssen zuerst eine entsprechende Datenbank und ein passender Benutzer angelegt werden:

# mysql -u root -p
mysql> CREATE DATABASE puppet;
mysql> GRANT ALL PRIVILEGES ON puppet.* TO puppet@localhost IDENTIFIED BY 'Passwort';

In der Konfiguration muss dann noch der Abschnitt des Puppetmasters entsprechend angepasst werden:

[master]
storeconfigs = true
dbadapter = mysql
dbuser = puppet
dbpassword = Passwort
dbserver = localhost
dbsocket = /var/run/mysqld/mysqld.sock

Kommentare (Insgesamt: 3 || Alle anzeigen )
Re: Was es nicht alles gibt (harry klein, Mi, 8. Juni 2011)
Was es nicht alles gibt (hEAdr00m, Di, 7. Juni 2011)
Super Artikel (kmork, Do, 2. Juni 2011)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung