Zend Server via Puppet konfigurieren
Kommentare

In unserem Beispiel wollen wir anhand der Anzahl von CPU-Kernen die Anzahl zu startender Server für den Apache definieren. Wir erstellen also eine httpd.conf-Datei mit dynamischen Inhalten, die sich aus

In unserem Beispiel wollen wir anhand der Anzahl von CPU-Kernen die Anzahl zu startender Server für den Apache definieren. Wir erstellen also eine httpd.conf-Datei mit dynamischen Inhalten, die sich aus Facts berechnen lassen. Da man in Templates nicht rechnen kann, berechnen wir die Werte für die httpd.conf in unserem Manifest. Dazu wird die Klasse zend_server wie folgt erweitert:

&start_servers_prefork = &processorcount*8 &start_servers_worker = &processorcount*2

Jetzt können wir in dem Template auf die beiden neuerstellten Variablen zugreifen. Am besten kopiert man die bestehende httpd.conf als Template in das Verzeichnis /etc/puppet/modules/zend_server/templates/ und ersetzt die Settings StartServers durch folgende Zeilen:

StartServers StartServers

In der Klasse zend_server können wir nun das Template verwenden:

file { "httpd.conf": ensure => present, path => "/etc/httpd/conf/httpd.conf", content => template("zend_server/httpd.conf.tpl"), owner => root, group => root, mode => 644, notify => Service["httpd"] }

Die letzte Zeile benachrichtigt Puppet, dass es den httpd-Service neustarten muss, wenn Änderungen in der httpd.conf-Datei vorgenommen wurden. Umgekehrt könnte der httpd-Service auch auf definierte Files „horchen“. Das kann man mit dem Parameter subscribe. Damit Puppet etwas über diesen Service weiß, müssen wir ihn noch kurz beschreiben:

service { httpd: enable => false, ensure => running, subscribe => File["httpd_conf"] }

Schöner Artikel?

Hat Ihnen der Artikel gefallen? Dies und mehr ist alles Teil der Ausgabe 6.09 unseres PHP Magazins. Alle zwei Monate frisch am Kiosk! Zur jeweils aktuellen Ausgabe geht es hier.

Wenn jetzt der Puppet-Client nochmals gestartet wird, werden die Werte der zu startenden Server automatisch anhand der Anzahl verfügbarer CPU-Kerne konfiguriert. Dieses Beispiel gewährt einen kleinen Einblick in die riesigen Möglichkeiten von Puppet und dessen Template Engine. Eine ausführliche Dokumentation über die Templates in Puppet findet man unter diesem Link.

Fazit

Anhand von diesem kleinen und sehr einfachen Beispiel lässt sich bereits gut erkennen, welches Potenzial Puppet bietet. Wohlgemerkt befindet sich die Entwicklung erst am Anfang, jedoch ist der bestehende Funktionsumfang für produktive Umgebungen ohne Probleme einsetzbar. Das volle Potenzial von Puppet entfaltet sich natürlich erst dann, wenn man nicht nur ein System damit verwaltet. Trotzdem, wenn die geschriebenen Manifeste in einer Versionsverwaltung wie Subversion eingecheckt werden, und das empfehle ich dringend, gewinnt man auch schon bei einem System die volle Kontrolle, was Nachvollziehbarkeit betrifft. Auf der Website von Reductivelabs kann man zur Inspiration auf Puppet-Rezepte zugreifen, die gängige Sysadmin-Probleme lösen.

Puppet kann auch anhand von Dokumentations-Tags, ähnlich wie PHP-Documentor, eine komplette Systemdokumentation erstellen. Die Abhängigkeiten unter den einzelnen Modulen, die mit Require und Before definiert werden, können als DOT-File ausgegeben werden und nachher mit Graphviz sogar grafisch dargestellt werden. Die Unterstützung von verschiedenen Environments und die Möglichkeit, anhand von Domainnamen, IP-Ranges oder Systemnamen Weichen einzubauen, lassen beinahe unbegrenzten Spielraum auch für komplexe Systemumgebungen. Nach der Einführung von Puppet in unserer Firma konnten wir für die rund 20 zu verwaltenden System den Administrationsaufwand um 80 Prozent senken. Durch die Verwendung von SSL-Zertifikaten zur Kommunikation zwischen Client und Server können auch sensitive Informationen, wie Passwörter und Private/Public Keys, via Puppet verteilt werden.

Philip Eschenbacher (philip@eschenbacher.ch), ist Entwicklungsleiter bei der Entris Banking AG (http://entris-banking.ch). Er arbeitet seit acht Jahren professionell mit PHP im Banking-Umfeld und kann auf viel Erfahrung als Systemadministrator für Linux zurückgreifen. Anfang dieses Jahres hat er Puppet zusammen mit dem Zend Server mit viel Erfolg bei seinem Arbeitgeber eingeführt.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -