Tipps zum Troubleshooting und allgemeinen Handling

Unter Information zu allen Beispielen habe ich erklärt, wie man einzelne Bundles aufruft. Wenn nun etwas nicht funktioniert, wie schaut man wo nach? Sehr nützlich ist es, den cf-agent mittels:

cf-agent -v 

aufzurufen. In diesem Output sieht man detailliert, was der cf-agent macht. Damit nicht die hunderte von Zeilen an einem vorbeirasseln, empfiehlt es sich, die Ausgabe in eine Datei umzuleiten:

cf-agent -v > /tmp/cf-agent.out

Dann kann man sich mit:

less /tmp/cf-agent.out

die Datei in Ruhe anschauen. In dieser Protokolldatei ist sehr viel Information, aber die Beschäftigung damit hilft sehr, die Arbeitsweise von CFEngine zu verstehen. Wenn man nun nicht versteht, wieso ein Bundle nicht das tut, was man erwartet, sucht man in less mit /meinBundle nach meinem Bundle; dann drückt man drei oder viermal "n", um zum nächsten Sucheergebnis zu kommen und findet "BEGIN bundle meinBundle". Hier kann man nun verstehen, wie der cf-agent das Bundle durchläuft, wann und wieso an welcher Stelle Classes gesetzt werden oder nicht usw.


Promise/Policy Updates vom Policy-Server (Hub) auf den Node kopieren

Die Promises schreibt man auf dem Hub, von dort holt sich jeder cf-agent auf jedem zu verwaltenden Node die Promises nach /var/cfengine/inputs. Hat man nun ein neues Promise auf dem Hub geschrieben oder etwas aktualisiert und man möchte keine fünf Minuten warten, bis der Node sein Verzeichnis synchronisiert hat, so kann man das mit:

cf-agent -KIf /var/cfengine/inputs/update.cf -D validated_updates_ready

erreichen. Hiermit sagt man dem cf-agent, dass Updates auf dem Hub zur Verfügung stehen und dass er sich die holen soll.