Administration von Unix-Rechnern mit cfengine
Klassen
- bei Abarbeitung eines cfengine-Programms sind bestimmte Klassen definiert
- welche Klassen definiert sind, ergibt sich
-
- aus der Art des Aufrufs des Programms
- aus der konkreten Hard- und Softwareumgebung des Systems, in dem das Programm läuft
- aus Datum, Uhrzeit und Wochentag des Programmlaufs
- aus dem Hostnamen auf dem das Programm läuft
- durch im Programm definierte Gruppen
- in Abhängigkeit der Ausführung bestimmter Aktionen im Programm
- definierte Klassen bestimmen, welche Teile der einzelnen Aktionen im Programm abgearbeitet werden
- generische Klasse any:: ist immer definiert
Vordefinierte Klassen
- Hard- und Softwareumgebung
-
- z.B.: sun4, sun3, 32_bit, solaris, sunos_5.5.1, sunos_sun4m_5.5.1, ...
- ermitteln mit
-
asmodi% cfengine -p -v
...
Host name is: asmodi
Operating System Type is sunos
Operating System Release is 5.5.1
Architecture = sun4u
Using internal soft-class solaris for host asmodi
The time is now Mon Dec 1 11:44:20 1997
------------------------------------------------------------------------
Additional hard class defined as: 32_bit
Additional hard class defined as: sunos_5.5.1
Additional hard class defined as: sunos_sun4u
Additional hard class defined as: sunos_sun4u_5.5.1
Additional hard class defined as: sunos_sun4u_5.5.1_Generic_103640-12GNU autoconf class from compile time: solaris2.5.1
...
- zeitabhängige Klassen
-
- Wochentage: Monday, Tuesday, Wednesday, ..., Sunday
- Stunde: Hr00, Hr01, Hr02, ..., Hr23
- Minute: Min00, Min01, Min03, ..., Min59
- 5-Minuten-Intervalle: Min00_05, Min05_10, ... Min55_00
- Tag im Monat: Day1, Day2, Day3, ... Day31
- Monat: January, February, ... December
- Jahr: Yr1997, Yr1998, ..., Yr2000, Yr2001, ...
- Aufruf des Programms
-
- Optionen
-
- --define class_(bzw. -D class)
- --undefine class (bzw. -N class)
- z.B.
-
host% cfengine -D `fs sysname`
- Hostnamen
-
- sowohl der unqualifizierte als auch der vollständige Hostname stehen als Klasse zur Verfügung
Gruppen
- Gruppen dienen der expliziten Definition von Klassen
- die Vereinbarung wird in der section groups: (ab Version 1.4.0 synomym auch classes:) vorgenommen
- es gibt folgende Möglichkeiten
-
- Aufzählungen (Listen)
- Nutzen von NIS-Netzgruppen
- Ausführen externer Kommandos
- Beispiele:
-
groups:
Clients = ( dig dag )
Server = ( digedag )SomeTimes = (Hr08 Wednesday Day3)
PC_Pool = ( +@pc_pool )
All = ( Clients Server PC_Pool )have_cc = ( '/bin/test -f /usr/ucb/cc' )
Dynamische Klassendefinitionen
- einige sections erlauben die dynamische Definition von Klassen in Abhängigkeit davon, ob eine bestimmte Aktion ausgeführt wurde (z.B. bei copy:) oder eine bestimmte Situation festgestellt wurde (z.B. bei required:)
Benutzung von Klassen
- innerhalb einer section entscheidet die Tatsache, ob eine Klasse definiert ist, über die Abarbeitung einer bestimmten Aktion
- dabei gibt es verschiedene Kombinationsmöglichkeiten (compound classes), die durch die Angabe von Operatoren bestimmt werden
-
Operator Bedeutung/Vorrang () Klammern von Teilausdrücken, höchster Vorrang ! NOT . AND | oder || OR, niedrigster Vorrang - die entsprechende Aktion wird ausgeführt, wenn bei Auswertung des Ausdrucks der Wert true entsteht
- Beispiele
-
solaris.Monday:: solaris|hpux10::
PC_Pool.!(dig|dag)::
SomeTimes.!SunDay::
PC_Pool.solaris::
Variablen
- in einem cfengine-Programm stehen folgenden Variablen zur Verfügung
-
- alle Umgebungsvariablen (ähnlich der Shell)
- selbstdefinierte Variablen (Makros)
- spezielle interne Variablen (mit Werten vorbelegte reservierte Bezeichner)
- Variablen werden referenziert als $(variable) oder ${variable}
- Makros werden in der control: definiert
-
control:
srcpath = ( /afs/tu-chemnitz.de/admin/linux )
domain = ( hrz.tu-chemnitz.de )
linux::
sysadmin = ( m.clauss@hrz.tu-chemnitz.de )
global = ( /afs/tu-chemnitz.de/global/linux2 )
solaris::
sysadmin = ( m.ehrig@hrz.tu-chemnitz.de,t.mueller@hrz.tu-chemnitz.de )
global = ( /afs/tu-chemnitz.de/global/sun5 )links:
/uni/global -> $(global) - spezielle interne Variablen werden beim Start des cfengine-Programms mit Werten vorbelegt, dazu gehören z.B.
-
host unqualifizierter Hostname fqhost vollständiger Hostname editfilesize maximale Filegröße editierbarer Files (default: 1000 Byte)
01. Dezember 1997
Thomas Müller, TU Chemnitz, URZ