Administration von Unix-Rechnern mit cfengine
Grundlagen
Einführendes Beispiel
# Erstes Beispiel
control: links: tidy:
|
- dieses Programm
-
- prüft, falls es sich um ein System mit SunOS 4.x handelt, die Existenz des symbolischen Links /bin nach /usr/bin und erstellt diesen, falls erforderlich (existiert /bin, ist aber kein symbolischer Link nach /usr/bin, so wird eine Warnung ausgegeben)
- prüft, falls es sich um ein System mit Redhat-Linux handelt, die Existenz des symbolischen Links /usr/X11 nach /usr/X11R6 und erstellt diesen, falls erforderlich (existiert /usr/X11, ist aber kein sybolischer Link nach /usr/X11R6, so wird das Einrichten des Links erzwungen)
- löscht rekursiv alle Files im Verzeichnis /tmp, die älter als 7 Tage sind
- Kommentare werden eingeleitet durch das Zeichen # (davor muß ein Newline oder Leerzeichen stehen)
- Worte, die mit ":" enden, bezeichnen sections
- Worte, die mit "::" enden, bezeichnen Klassen
- Anweisungen der Form
name = ( list )
sind Wertzuweisungen- die section control: gibt an, wie sich das Programm verhalten soll (hier: hinzufügen der sections links: und tidy: zu actionsequence)
- die section links: gibt an, daß im folgenden einzurichtende Links definiert werden
- die section tidy: gibt an, daß im folgenden zu löschende Files definiert werden
- ein cfengine-Programm besteht mindestens aus
-
- einer Menge von Deklarationen, die angeben, was zu tun ist
- einer action sequence, die angibt, welche Teile des Programms in welcher Reihenfolge und wie oft auszuführen sind
Programmstruktur
- ein cfengine-Programm besteht aus einer Folge von section-Deklarationen:
-
action-type: class1::
list of things to do ...
class2::
list of things to do ...
- für action-type ist ein reservierte Bezeichner anzugeben, es gibt folgende Möglichkeiten:
binservers, broadcast, control, copy, defaultroute, directories, disable, editfiles, files, groups, homeservers, ignore, import, links, mailserver, miscmounts, mountables, processes, resolve, required, shellcommands, tidy- die Reihenfolge der section-Deklarationen ist frei wählbar, jedoch müssen alle Variablen, Klassen, Gruppen etc. definiert sein, bevor sie verwendet werden können
- die Abarbeitungsreihenfolge wird definiert durch die Aufzählung der sections im Statement
-
actionsequence = ( ... )
- ist diese Liste leer, macht das Programm nichts
Aufruf von cfengine-Programmen
- zahlreiche verschiedene Varianten
-
host% cfengine # führt ./cfengine.conf aus
host% cfengine -f configure # führt ./configure aus
host% cfengine -f configure -v -n # führt ./configure im "do nothing"-Modus (-n) aus
host% cfengine -h
GNU cfengine: A system configuration tool
cfengine-1.4.8a
Free Software Foundation 1995, 1996, 1997
Donated by Mark Burgess, Centre of Science and Technology
Faculty of Engineering, Oslo College, 0254 Oslo, NorwayOptions:
--help (-h)
--debug (-d)
--verbose (-v)
--traverse-links (-l)
--recon (-n)
--dry-run (-n)
--just-print (-n)
--no-ifconfig (-i)
--file (-f)
--parse-only (-p)
--no-mount (-m)
--no-check-files (-c)
--no-check-mounts (-C)
--no-tidy (-t)
--no-commands (-s)
--sysadm (-a)
--version (-V)
--define (-D)
--negate (-N)
--undefine (-N)
--delete-stale-links (-L)
--no-warn (-w)
--silent (-S)
--quiet (-w)
--no-preconf (-x)
--no-links (-X)
--no-edits (-e)
--enforce-links (-E)
--no-copy (-k)
--use-env (-u)
--no-processes (-P)
--underscore-classes (-U)
--no-hard-classes (-H)
--no-splay (-q)
--no-lock (-K)
--auto (-A)Debug levels: 1=parsing, 2=running, 3=summary
Bug reports to bug-cfengine@prep.ai.mit.edu (News: gnu.cfengine.bug)
General help to help-cfengine@prep.ai.mit.edu (News: gnu.cfengine.help)
Info & fixes at http://www.iu.hioslo.no/~mark/cfengine.html
host% - wenn die Umgebungsvariable CFINPUTS gesetzt ist, werden die cfengine-Programme in dem Verzeichnis gesucht, welches CFINPUTS bezeichnet
- ausführbare cfengine-Scripts (analog Shell-Scripts):
-
host% cat ./configure
#!/uni/global/bin/cfengine -f
#
...
- weitere Möglichkeiten:
-
- cfd/cfrun
cfd ist ein Server (gestartet über inetd), welcher cfengine-Progamme starten kann
cfrun ist der cfd Client zum Aufruf von cfengine-Programmen an entfernten Hosts- per cron
- beim Booten
- ...
29. November 1997, überarbeitet: 01. Dezember 1998
Thomas Müller, TU Chemnitz, URZ