Versionierte Konfigurationsfiles
Software ist nicht perfekt und wird auch ständig weiter entwickelt. Das führt dazu, dass bestimmt Konfigurationen der Software sehr viele Generationen überleben müssen. Problem dabei ist, dass durch neue Erkenntnisse Defaults geändert werden, neue Parameter notwendig werden, und dass es eben generell schwer ist den Benutzer bei Upgrades zu unterstützen:
- Welche Parameter müssen hinzugefügt werden
- Welche Defaults haben sich geändert
- Für welche Version ist die Konfiguration
Angenommen wir haben folgendes initiale File:
# /etc/confBeim Start einer neuen Software Version gibt es folgende Fehlermeldung: Das Konfigurationsfile /etc/conf besitz die Version=1. Diese Anwendung benötigt die Version=4. Bitte nehmen Sie die notwendigen Änderungen anhand des kommentierten Templates /etc/conf.sample vor.
Version=1
# netserver=off
basedir=/root
# /etc/conf.sampleDamit bleibt dem Anwender jetzt die Möglicheit sein Logfile folgendermassen anzupassen:
basedir=/var
loglevel=4
# Versions
# 1 Initial Version
# 2 Added required Parameter loglevel (0-5)
# 3 Changed Default for netserver=on to off
# 4 changed default for basedir to /var
Version=4
# /etc/confDenn, er hat den neuen Parameter loglevel hinzugefügt, hat den netserver Parameter dessen Default sich geändert hat überschrieben mit dem benötigten Wert damit die Netzwerk Funktionen weiter bereit stehen. Die Änderung des Defaults für das basedir kann der Anwender bewusst ignorieren. D.h. er weiss, dass er das Default für netserver überschreiben muss um die Funktionalität zu erhalten, und dass er den loglevel parameter angeben muss. Er entscheidet sich dafür sein basedir beizubehalten. Durch die Modifikation des version= parameters signalisiert der Administrator der Anwendung, dass er sich mit dem Upgrade befasst hat. Das ganze läßt sich nicht nur auf Konfigurationsfiles anwenden, sondern auch auf andere Objekte die eine bestimmte Sematik eines Containers voraussetzen. So werden IT-Systeme deutlich besser über längere Zeiten pflegbar.
Version=4
basedir=/root
netserver=on
loglevel=0
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt