Dieses Beispiel zeigt, wie man die IP-Konfiguration aus der Datei /etc/sysconfig/network/ifcfg-eth0 (bei SLES) bzw. (bei Redhat) /etc/sysconfig/networking-scripts/ifcfg-eth0 auslesen kann. Es gibt dazu verschiedene Möglichkeiten; für die, die fit auf der BASH sind, ist es ggf. ein guter Einstieg in den Umgang mit CFEngine, die BASH Kommandos in ein Promise einzubauen:
bundle agent getIPcfg
{
vars:
"gateway" string => execresult("ip route | awk '$1 == \"default\" {print $3}'","useshell");
"ipaddr" string => execresult("ip a s eth0 | grep inet | awk '{ print $2 }' | sed -e s/.*:.*// | awk -F '/' '{print $1}'","useshell");
"submask" string => execresult("ip a s eth0 | grep inet | awk '{ print $2 }' | sed -e s/.*:.*// | awk -F '/' '{print $2}'","useshell");
reports:
SLES11_4::
"default gateway: $(gateway)";
"ip address: $(ipaddr)";
"subnet mask: $(submask)";
}
Im (agent-)Bundle getIPcfg (es gibt auch andere Bundle-Typen) werden unter "vars:" drei Variablen vom Typ String definiert: "gateway", "ipaddr" und "submask". In die Variablen wird jeweils der Rückgabewert bzw. das Ausführungsresultat (exec(ution)result) der BASH-Kommandos geschrieben.
In dem reports-Abschnitt geben wir den Inhalt der drei Variablen aus und schreiben jeweils noch davor, was es ist. Die Reports werden nur auf SuSE-Linux-Enterprise-Servern der Version 11 mit Service Pack 4 ausgegeben, um hier ein weiteres Beispiel für classes als Fallunterscheider aufzuzeigen.
Die Reports sieht man bei der seperaten Ausführung des Promises mit cf-agent -KIvf nur mit den Optionen I und v. Weiter tauchen die Reports im Syslog /var/log/messages auf.