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_config
define=ReloadSSH
shellcommands:
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=ReloadSSH
server=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)"
Erweiterung von 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.
Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors. 