Puppenspiel

SysEleven wächst und wächst und wächst und… Nicht nur um uns die tägliche Arbeit etwas leichter zu machen, sondern auch um unseren Kunden schneller ein harmonisches Webserver-Setup zur Verfügung zu stellen und/oder Änderungen, ggf. automatisiert, vorzunehmen, entschieden wir uns vor gut eineinhalb Jahren für die Software namens Puppet.

Kermit (CC BY-SA 2.0, Pirate Alice, Flickr)

Hat das was mit Puppen zu tun?

Nein, natürlich nicht. Puppet ist ein Konfigurationsmanagement-Tool. Es stellt sicher, dass ein Server genauso konfiguriert ist, wie es zuvor zentral festgelegt wurde. In sogenannten Rezepten wird definiert welche Programme mit welchen Einstellungen installiert sein sollen. Eine Erst-Installation ist dabei genauso einfach, wie nachträgliche Änderungen. Puppet prüft den Zustand des jeweiligen Systems und wendet notwendige Änderungen an. Ein kleines Beispiel:

package { 'nginx':
  ensure   => '1.2.4',
}
service { 'nginx':
  ensure   => running,
  enable   => true,
  require  => Package['nginx'],
}
file { 'nginx.conf':
  ensure   => present,
  path     => '/etc/nginx/nginx.conf',
  content  => template('nginx/nginx.conf.erb'),
  notify   => Service['nginx'],
}
file { 'www.domain.de.conf':
  ensure   => present,
  path     => '/etc/nginx/conf.d/www.domain.de.conf',
  content  => template('nginx/conf.d/vhost.conf.erb'),
  notify   => Service['nginx'],
}

Vorteile für unsere Kunden und uns

  • gleiche Maschinen, haben garantiert gleiche Konfiguration
  • Änderungen können zentral vorgenommen und automatisiert auf alle betroffenen Maschinen angewandt werden
  • Änderungen sind nachvollziehbar, dokumentiert und versioniert
  • schnellere Durchführung, auch bei vielen Servern eines Projektes

Zwischenstand

Alle unsere physikalischen Server (Hardwarenodes) sind mit Puppet ausgestattet und sämtliche Konfiguration ist puppetisiert. Bei den virtuellen Servern verwalten wir grundlegende Systembestandteile sowie die Anbindung an unsere Monitoring-Systeme. Rezepte zur Verwaltung von Web- und Datenbankdiensten sind in der Alpha-Phase. Wir konzeptionieren gerade wie hier Puppet sinnvoll eingesetzt werden kann. Die Vielzahl der Konfigurationsmöglichkeiten und die Berücksichtigung der Kunden sind dabei Herausforderungen, die wir diskutieren und “durchspielen”.