Administration von Unix-Rechnern mit cfengine


Einführung

Was ist cfengine?

  • Programmiersprache für die Verwaltung und Konfiguration von TCP/IP-vernetzten Unix-Systemen
  • Autor:  Mark Burgess (Oslo College, Norwegen)
  • unterliegt der  GNU-Lizenz , ist also kostenfrei zu benutzen
  • aktuelle Version (zur Zeit der Überarbeitung dieser Unterlagen): 1.4.13b6
  • Download:  ftp://ftp.iu.hioslo.no/pub/cfengine/

Was leistet cfengine?

  • Unterstützung des Administrators bei der einheitlichen Verwaltung undKonfiguration von Unix-Systemen und Netzdiensten (Schlagwort: zero administration client)
  • Automatisierung der administrativen Systemeingriffe
  • Übertragung der Aufgaben an verschiedene Personen ohne Weitergabe von root-Rechten
  • Berücksichtigung von Abhänigkeiten (z.B. Signalisierung von Server-Prozessen bei Austausch des Konfigurationsfiles)

Konzepte und Eigenschaften

  • cfengine ist eine Programmiersprache auf sehr hohem Sprachniveau: einzelne Anweisungen können Hunderte von Aktionen auslösen
  • Arbeitsweise
    • ein cfengine-Programm beschreibt  die Konfiguration eines, mehrerer oder sogar aller Rechner im Verantwortungsbereich
    • der cfengine-Interpreter arbeitet das Programm auf jeder betreffenden Maschine ab und vergleicht die Konfiguration des Systems mit dem cfengine-Programm
    • dabei festgestellte Unterschiede werden im System korrigiert
  • cfengine kommt ohne klassische Steuerstrukturen einer Programmiersprache aus (if-then-else, ...), statt dessen Klassen-basierte Entscheidungsstrukturen
  • Klassen dienen der Klassifizierung von
    • Maschinen entsprechend
      • dem eingesetzen Betriebssystem
      • dem Einsatzzweck (Pool-Maschine, Arbeitsplatz-Maschine, Fax-Server, NFS-Server, ...)
    • zeit- oder ereignisabhängig auszuführenden Aktionen
  • ein cfengine-Programm kann
    • ACSII-Files editieren
    • Files kopieren
    • symbolische Links prüfen und einrichten
    • Zugriffsrechte und Eigentümerangaben von Files prüfen und setzen
    • Files löschen
    • Shell-Scripte und Kommandos ausführen
    • Signale an Prozesse schicken
    • Netz-Schnittstellen prüfen und konfigurieren
    • NFS-Filesysteme automatisch montieren


27. November 1997, überarbeitet: 30. November 1998
Thomas Müller, TU Chemnitz, URZ