cfengine
deklarativ
, nicht prozedural, idempotent cfagent
/etc/cfengine/cfagent.conf
cfexecd
oder cron
cfexecd
copy
:
copy: ${configspace}/sshd_config dest=/etc/ssh/sshd_config
copy: ${configspace}/sshd_config dest=/etc/ssh/sshd_configdefine=ReloadSSHshellcommands: ReloadSSH:: "/usr/sbin/invoke-rc.d ssh reload > /dev/null"
lxg0815
, 140_181_70_60
linux
, debian
, debian_4_0
Friday
, Yr2007
, Hr09
, Min15_20
class1.class2::
class1|class2::
!class1::
!(class1|class2) = class1.!class2
Yr2007.November.Day27.Hr11.Min30_35::
debian_4_0|linux_i686_2_6_18_2_686_bigmem::
groups
können neue Klassen definiert werden.
groups: dns = ( lxdns1 lxdns2 )
batchfarm = ( !HostRange(lxb,000-999) )
standalone = ( '/usr/bin/test -w /' )
control: AddClasses = ( ExecResult(/gsiroot/sbin/cfe-mainboard) )
copy: any:: ${configspace}/sshd_config dest=/etc/ssh/sshd_config define=ReloadSSHserver=cfmaster.gsi.de
cfservd
cfengine
installieren und starten
/etc/cfengine/update.conf
holen oder erzeugen. cfengine
und update.conf
cfshow --last-seen
(-> Nagios)
editfiles
ist das Editieren von Dateiinhalten möglich:
editfiles: { /etc/ssh/sshd_config ReplaceFirst ".*X11Forwarding no" With "X11Forwarding yes" ReplaceFirst "PasswordAuthentication no" With "PasswordAuthentication yes" DefineClasses "RestartSSH" }
AppendIfNoSuchLine
fügt fehlende Zeilen an. CommentLinesMatching
kommentiert Zeilen aus, die zum gegebene Muster passen. EmptyEntireFilePlease
leert die Datei komplett. DeleteLinesMatching
löscht Zeilen, die auf das gegebene Muster passen.
BeginGroup...EndGroup
ist eine Fallunterscheidung und Klammerung möglich:
{ /etc/sudoers BeginGroupIfNoLineMatching "User_Alias ADMINS=.*" WarnIfNoLineMatching "# User alias specification" LocateLineMatching "# User alias specification" InsertLine "User_Alias ADMINS=christo,karin,schoen,shaller,troth" EndGroup }Möglicherweise der mächtigste Aktionstyp von
cfengine
.
packages: desktop:: gsi-desktop version=1 cmp=ge action=install
processes: !reboot:: "cfexecd" restart "/usr/sbin/invoke-rc.d cfengine2 start > /dev/null" inform=true "syslog-ng" restart "/usr/sbin/invoke-rc.d syslog-ng start > /dev/null" inform=true ... !reboot.debian_3_1:: "ntpd" restart "/usr/sbin/invoke-rc.d ntp-server start > /dev/null" inform=true
files
: Datei-Besitzer und -Berechtigungen ändern/reparieren, tripwire
"für Arme")
control
: Variablendefinition, Konfiguration von cfengine
disable
: verschiebt Dateien
disks
: überwacht Plattenplatz
links
: wartet Symlinks
tidy
: räumt auf
acl
, binservers
, broadcast
, mountables
, ...
copy
, files
, processes
, tidy
) verwendet werden.
filters: { no_svn_dirs NameRegex: ".*/\.svn(/.*)?$" Result: "!NameRegex" } copy: /src dest=/dest r=inf filter=no_svn_dirs
cfenvd
cfenvd
lernt die Normalwerte von selbst
www_in_high_dev2
LoadAvg_low_anomaly
entropy_smtp_in_low
shellcommands
ausgelöst werden:
LoadAvg_high_anomaly:: "/bin/echo Load anomaly on $(host) value $(value_loadavg) \\
average $(average_loadavg) +- $(stddev_loadavg)"
cfenvd
rrdtool
cfengine
cfengine
machen das Richtige
cfengine
macht den Betrieb einer Farm dieser Größe und Diversität (Heterogenität) mit der vorhandenen Manpower überhaupt erst möglich.