Konfigurationsdateien zentral verwalten

Der Nutzen einer zentralen Konfigurationsdateien-Verwaltung ist immens und zahlt sich auch finanziell aus.

Artikel erschienen in Swiss IT Magazine 2005/11

     

Der grösste Aufwand beim Überführen von Konfigurationsdateien in eine zentrale Verwaltung besteht darin, eine gut pflegbare und redundanzfreie Metadatei zu erstellen. In historisch gewachsenen System-Umgebungen ist diese Konsolidierungsarbeit häufig Sisyphusarbeit. Das Resultat ist oftmals ein Konfigurationsdateien-Chaos. Um dies zu vermeiden, ist ein strukturiertes, zentral verwaltbares Datei-Synchronisationsprogramm erforderlich.
Die Aufgabenstellung ist eigentlich ganz einfach: Der IT-Administrator betreut eine Unix-Systemlandschaft mit beliebigen Servern beispielsweise für den Applikations-, Mail-, SAP-, Produktions- und Backup-Betrieb. Die darin enthaltenen Konfigurationsdateien zur Steuerung der Systeme sollen zentral verwaltet und über alle Systeme hinweg konsistent gehalten werden. Dabei gilt es für den System-Administrator, die Eigenheiten der jeweiligen Unix-Plattform zu beachten, da diese bei hohem Wachstum der Systemumgebung sehr schnell komplex werden können.






In der Praxis existieren zwei traditionelle Vorgehensweisen: Der System-Administrator kopiert eine Template-Datei auf die Systeme und nimmt die systemspezifischen Anpassungen von Hand vor. Dies ist nicht nur sehr mühsam und zeitaufwendig, sondern auch fehleranfällig, denn häufig wird die Template-Datei nicht sauber gepflegt und es schleichen sich systematische Fehler und Inkonsistenzen ein. Versierte System-Administratoren automatisieren diese Arbeiten mit Scripts. Die Scripts kopieren die Template-Dateien auf die Systeme und nehmen auch automatisch die nötigen Anpassungen vor. Dieser scriptbasierte Synchronisationsprozess läuft seriell ab, das heisst, es wird ein System nach dem anderen synchronisiert beziehungsweise ein Update vorgenommen. Der Nachteil bei diesen Lösungen ist, dass sie meist schlecht skalieren und das Neueinpflegen oder das Löschen von Systemen sehr zeitaufwendig werden kann, da diese Änderungen oftmals in etlichen Dateien nachgeführt werden müssen. Ein weiteres Manko ist, dass die Entwicklung der Scripts oft von einer Person abhängig ist.


Erkennen von Sicherheit

Zusätzlich zur Pflege der Dateien ist es in einigen Fällen erforderlich, Scripts vor (Pre-Script) oder nach (Post-Script) dem Ändern der Dateien auszuführen. Als Beispiel nehmen wir die /etc/inetd.conf-Datei, die bei Unix-Systemen die Steuerung der Netzwerkdienste übernimmt. Ein Pre-Script könnte vor dem Abgleich eine Sicherheitskopie der Konfigurationsdatei erstellen. Das Post-Script sendet dem inetd-Prozess ein Signal und fordert ihn damit auf, seine Konfigurationsdatei neu einzulesen. Ein essentieller Bestandteil dieses Prozesses ist das Wissen um Veränderungen in den Konfigurationsdateien. Denn diese können leicht ohne Wissen des System-Administrators durch Hacking oder auch ganz legitim durch die Installation einer Software oder eines System-Upgrades beziehungsweise Patches erfolgen. In einem solchen Fall muss der System-Administrator unverzüglich alarmiert werden.






Um diese Sicherheitslücke zu schliessen, muss als Basis eine vom System ausgelagerte sogenannte Metadatei bestehen. Sie liefert Angaben über den Sollzustand der veränderten Konfigurationsdatei und garantiert somit das Erkennen fremdmutierter Dateien. Konfigurationsdateien unterscheiden sich von System zu System in der Regel nur geringfügig. In vielen Fällen muss nur der eigene Hostname oder eine IP-Adresse eingetragen werden (z.B. /etc/hosts). Diese Parametrierbarkeit lässt sich durch Verwendung von Variablen erreichen. Die Metadatei ermöglicht die Erstellung von zentralen und redundanzfreien Konfigurationsdateien, indem sie diese formal beschreibt.


Vorgehensweise

Bevor jedoch mit der Datei-Synchronisation begonnen werden kann, muss der IT-Administrator folgende Fragen klären:



• Welche Konfigurationsdateien sollen synchronisiert werden?


• Auf welchen Systemen sollen sie synchronisiert werden?


• Welche Unterschiede bestehen pro System?


• Welche Variablen müssen definiert werden?


• Wo soll die Metadatei angelegt werden?



Die Implementierung – und somit die Konsolidierung der Konfigurationsdateien – lässt sich recht einfach durchführen, wenn die Dateien schon in einem konsistenten Zustand sind. Ist dies nicht der Fall, beginnt hier die eigentliche Sisyphusarbeit, denn es muss pro Konfigurationsdatei und System entschieden werden, was in der bereinigten neuen Konfigurationsdatei eingetragen werden soll.


Werkzeuge

Tools für die Erstellung von strukturierten und bereinigten Konfigurationsdateien müssen eine Reihe von Anforderungen erfüllen:


• einfache Bedienbarkeit


• Skalierbarkeit und Übersichtlichkeit bei hohem System-Wachstum


• zentrale, redundanzfreie und parametrierbare Verwaltung der Konfigurationsdateien


• Auslösen eines Alarms bei ungewollten Mutationen


• übersichtliche Darstellung der Metadatei


• Ausführen von Scripten auf den Zielsystemen



Es stehen allerdings kaum Produkte zur Verfügung, die dieses Segment im System-Management zur Zufriedenheit des IT-Administrators abdecken. So gibt es mit «rsync» (Free and Open Source), «unison» (Free and Open Source) und «robocopy», das mit dem Resource-Kit von Windows ausgeliefert wird, Lösungsansätze. Mit diesen Tools kann der Administrator allerdings nur einzelne Files und Directories über mehrere Systeme synchron halten, d.h., hier fehlt die Möglichkeit, systemspezifische und parametrierbare Konfigurationen zu erstellen. Auch sind die Post- und Pre-Prozess-Funktionen nicht möglich.





Der optimale Weg besteht darin, dass sich alle Synchronisationsprozesse parallel auf den Systemen ausführen lassen. Das nachfolgende Beispiel (Meta-Datei /etc/hosts) zeigt einen Ausschnitt der Möglichkeiten, die beispielsweise das Modul FileSynchronisation des «SysGem Enterprise Managers» (SEM) bietet. Die Variabeln {{IPADDR}} und {{HOSTNAME}} werden bei der Konfiguration der Systeme definiert. Der Dateiname auf dem Zielsystem kann mit ${INPUT_OUT} angesprochen werden.





# Wo befindet sich das File auf dem System?

F * /etc/hosts


# Auf allen Systemen

A *

D {{IPADDR}} {{HOSTNAME}}

D 192.168.1.10 dns1.mydomain.ch

D 192.168.2.10 dns2.mydomain.ch


# Spezialfaelle

A –-

A + Linux01

D 192.168.1.11 wins1.mydomain.ch


# Zuerst Original Datei auf alle Systemen sichern

A ++

S cp ${INPUT_OUT} ${INPUT_OUT}.sysgem_old






Anschliessend wird die Syntax der Metadatei mit Hilfe der grafischen SysGem-Benutzerschnittstelle interpretiert, und die so erzeugten systemspezifischen Konfigurationsdateien werden auf die Zielsysteme verteilt. Das Anlegen empfiehlt sich auf einem Share, auf den alle System-Administratoren Zugriff haben.


Fazit

Eine gut gepflegte Systemumgebung mit entsprechend leistungsfähigen Tools bietet in vielerlei Hinsicht Vorteile. Sie funktioniert zuverlässig, ist gut dokumentiert und für Audits und Reviews transparent. Anpassungen der Systeme können unmittelbar und zentral ausgeführt werden. Gleichzeitig erhöht sich die Sicherheit der einzelnen Systeme sowie des gesamten Systemkomplexes massiv, da bei sicherheitsrelevanten Dateien sehr rasch Änderungen vorgenommen werden können. Auch ist ein teamorientiertes Arbeiten in einem derartigen Umfeld viel effizienter – und Stellvertretungen sind einfacher zu realisieren. Der Nutzen bezüglich Verfügbarkeit, Sicherheit und Wartbarkeit, den eine zentrale Konfigurationsdateien-Verwaltung bietet, ist um ein Vielfaches höher und zahlt sich auch finanziell rasch aus.


Der Autor

Jonas Furrer ist Senior
IT-Consultant beim Berner
IT-Beratungsunternehmen RealStuff Informatik AG (www.realstuff.ch).




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Was für Schuhe trug der gestiefelte Kater?
GOLD SPONSOREN
SPONSOREN & PARTNER