Department of Computer Science

Best Practices

Im Folgenden werden einige Best Practices dargestellt, die für die Benutzung von Puppet und der damit verwalteten Linux-Distributionen empfohlen werden.

Allgemein

Software im AFS/NFS

In Abweichung vom früheren Status Quo wird der LD_LIBRARY_PATH in den Resource Control Scripts nicht mehr gesetzt. Es wird empfohlen, auf die Verwendung des LD_LIBRARY_PATH weitgehend zu verzichten. Bei Software auf Netzlaufwerken sollte der Suchpfad für die benötigten Bibliotheken mit Hilfe der rpath-Option von ld direkt einkompiliert werden. Dies kann z.B. beim Aufruf von configure wie folgt angegeben werden:

./configure --enable-shared --prefix=/net_drive/arch/software \
LDFLAGS="-Wl,-rpath /net_drive/arch/software/lib"

Ändern des root-Passworts

Das root-Passwort der Puppet-Clients wird während der initialen Kickstart-Installation auf ein Default-Passwort gesetzt. Es empfiehlt sich die Verwendung der folgenden Klasse in den arbeitsbereichspezifischen Modulen, um das Passwort zu ändern:

class cpw_root {
exec {
"initial_cpw_root":
command => "/usr/sbin/usermod -p '<passwordhash>' root && /bin/rm /etc/cpw_root",
onlyif => "/usr/bin/test -e /etc/cpw_root";
"custom_cpw_root":
command => "/usr/sbin/usermod -p '<passwordhash>' root,
onlyif => "/usr/bin/test -e ${basepath}/${modulename}/cpw_root/cpw_root";
}
}

In der Klasse wird zwischen den beiden Befehlen initial_cpw_root und custom_cpw_root unterschieden. Der erste Befehl wird ausgeführt, wenn die lokale Datei /etc/cpw_root existiert. Diese Datei wird während der Kickstart-Installation angelegt, und der Befehl ist daher gut für die einmalige Änderung des root-Passworts auf einem einzelnen Rechner (z.B. direkt nach der intialen Installation) geeignet. Beim Befehl initial_cpw_root wird die Datei automatisch von Puppet gelöscht, so dass der Befehl nicht bei jedem Puppet-Run wiederholt wird. Der zweite Befehl wird ausgeführt, wenn die Datei /afs/wsi/wsi/git-environment/puppet/files/ubuntu/<modulename>/cpw_root/cpw_root existiert. Da diese Datei im AFS liegt, ist dieser Befehl dazu geeignet, das root-Passwort auf allen Clients auf einmal zu ändern. Man muss dazu nur diese Datei anlegen und max. 30 Minuten bis zum nächsten Puppet-Run warten. Die Datei kann nicht von Puppet gelöscht werden, da der Befehl custom_cpw_root sonst nur für den ersten Client ausgeführt würde, der den Puppet-Server kontaktiert. Sie muss daher manuell gelöscht werden, nachdem das Passwort erfolgreich auf allen Rechnern aktualisiert wurde.

Ubuntu

Installation von Paketen

Es wird empfohlen, Pakete immer mit Hilfe von aptitude (und nicht mittels apt-get) zu installieren. Auch die zentral bereitgestellten Puppet-Module verwenden ausschließlich aptitude.

Installation automatischer Updates

Es wird empfohlen, Paket-Updates automatisch installieren zu lassen. Für Desktop-Rechner, die von $wg_desktopconfig erben, ist dies über die zentral bereitgestellten Puppet-Module bereits so voreingestellt ($wg entspricht dem Arbeitsgruppen-Kürzel). Für Server (erben von $wg_serverconfig) ist dies nicht der Fall, um dem Benutzer hier die Entscheidung selbst zu überlassen. Um die automatischen Updates bei Servern "nachzurüsten", empfiehlt es sich, das Paket unattended-upgrades zu verwenden. Die Konfiguration des Pakets kann $wg_desktopconfig entnommen werden.

Zusätzliche Paketquellen

Bei Ubuntu gibt es außer den Paketquellen main und restricted auch die Repositories universe und multiverse mit vielen zusätzlichen Paketen, für die von Canonical jedoch keine Sicherheitsupdates bereit gestellt werden. Es wird empfohlen, diese Quellen für Server nicht zu verwenden. Bei Desktoprechnern bestehen keine schwerwiegenden Bedenken gegen die Verwendung dieser zusätzlichen Repositories.

Scientific Linux

Für Scientific Linux gibt es derzeit keine empfohlenen Vorgehensweisen.