rc Apprentice
Joined: 16 Dec 2003 Posts: 234
|
Posted: Wed Feb 20, 2008 2:50 pm Post subject: Administration mehrerer Rechner mittels Radmind |
|
|
Hi,
mittels Radmind ist es möglich, mehrere Rechner zentral zu verwalten.
http://rsug.itd.umich.edu/software/radmind/
Funktionsweise
Das ganze funktioniert grob folgendermaßen:
- Ein Rechner dient als "Vorlage"
- Von diesem Rechner werden sogenannte "Loadsets" erstellt (Base- / Overload).
- Diese werden auf einen Server übetragen.
- Die zu administrierenden Clients gleichen ihre Dateisysteme gegen die auf dem Server gespeicherten "Loadsets" ab.
Ein Loadset besteht aus zwei Teilen.
Einem Transskript, welches eine Aufzählung aller im Loadset enthaltenen "Elemente" (z.B.: Dateien, Verzeichnisse, Links) des Dateisystems ist.
Diese Aufzählung ist eine Textdatei, die u.a. den Typ, Namen, Änderungsdatum und Prüfsumme enthält.
Und den Dateien selbst.
Eine Baseload ist das initiale Abbild des Dateisystems, des Rechners, der als Vorlage dient.
Hier sind sämtliche (ab / alles) Elemente des Dateisystems enthalten.
Ein Overload beschreibt die Unterschiede zwischen vorher erstellten Loadsets (Base- / Overload) und dem aktuellen Zustand des Dateisystems.
Installation
Eine (nicht mehr ganz aktuelle) Version von Radmind ist im Portage-Tree enthalten.
Improvisiertes Runscripts für Radmind:
/etc/init.d/radmind
Code: |
#!/sbin/runscript
depend() {
need net
use dns logger
}
start() {
ebegin "Starting radmind"
start-stop-daemon --start --exec /usr/sbin/radmind \
--pidfile /var/run/radmind.pid \
-- -p /var/run/radmind.pid ${RADMIND_OPTS}
eend $? "Failed to start radmind"
}
stop() {
ebegin "Stopping radmind"
start-stop-daemon --stop \
--pidfile /var/run/radmind.pid \
--exec /usr/sbin/radmind
eend $? "Failed to stop radmind"
}
|
/etc/conf.d/radmind
Code: |
# /etc/conf.d/radmind
RADMIND_OPTS="-w 1 -U -a 10.5.9.250"
|
Für erste Tests nur folgendes verwenden:
Code: |
# /etc/conf.d/radmind
RADMIND_OPTS="-a 10.5.9.250"
|
Einrichtung
Muster Client für die "Vorlagen"
Es muss ein "negatives Transskript" erstellt werden, welches alle Elemente des Dateisystems auflistet, die bei der Erstellung von Loadsets nicht berücksichtigt werden sollen.
Hierzu am besten erstmal ein Transskript des ganzen Dateisystems erstellen
Code: |
fsdiff -C -c sha1 –o /var/radmind/client/base.T /
|
und die nicht erwünschten Elemente in /var/radmind/client/negative.T eintragen.
Danach nochmals /var/radmind/client/base.T erstellen.
Code: |
fsdiff -C -c sha1 –o /var/radmind/client/base.T /
|
Dies kann man sooft wiederholen, bis nur noch die gewünschten Elemente in /var/radmind/client/base.T verbleiben.
Dieses /var/radmind/client/base.T ist dann das Transskript für die Baseload.
Server
/var/radmind/config wird Benutzt um sogenannte Command-Files, die Transskripte zusammenfassen, Client IP-Adressen (IP Adressbereichen) zuzuordnen.
Z.B.:
Code: |
192.168.0.42 meinCommandFile.K
192.168.0.<10-20> nocheinCommandFile.K
|
Damit die initiale Baseload übertragen werden kann muss ein leeres Command-File z.B. /var/radmind/command/neu.K erstellt werden und in /var/radmind/config eingetragen werden.
Code: |
touch /var/radmind/command/neu.K
echo "IP-AdresseMusterClient /var/radmind/command/neu.K" > /var/radmind/config
|
Dann muss der Server gestartet werden.
Code: |
/usr/local/sbin/radmind
|
Oder alternativ mittels des improvisierten Runscript.
Code: |
/etc/init.d/radmind start
|
Baseload auf dem Server speichern
Auf dem Client:
Code: |
lcreate -h ServerAdresse /var/radmind/client/base.T
|
Das negative Transskript muss ebenfalls übertragen werden.
Code: |
lcreate –N –h ServerAdresse /var/radmind/client/negative.T
|
Auf dem Server müssen die Übetragenen Dateien verifiziert werden.
Code: |
cd /var/radmind/tmp/transcript
lcksum -c sha1 -n base.T
lcksum -c sha1 negative.T
|
Wenn dies erfolgreich war können diese "verfügbar" gemacht
Code: |
mv /var/radmind/tmp/transcript/base.T /var/radmind/transcript/
mv /var/radmind/tmp/transcript/negative.T /var/radmind/transcript/
mv /var/radmind/tmp/file/base.T /var/radmind/file/
mv /var/radmind/tmp/file/negative.T /var/radmind/file/
|
und in das Command-File eingetragen werden.
Hier /var/radmind/command/neu.K
Code: |
p base.T
n negative.T
|
Jetzt kann die Baseload getestet werden.
Auf dem "Muster Client"
Code: |
ktcheck –c sha1 -h ServerAdresse
fsdiff -A -c sha1 /
|
Da ja von diesem Client die Baseload erstellt wurde, sollten keine großen Unterschiede auftreten.
An diesem Punkt können nun auch andere Clients, auf denen Radmind installiert ist mit diesem Loadset versorgt werden.
Code: |
ktcheck –c sha1 -h ServerAdresse
fsdiff -A -c sha1 / | lapply -h ServerAdresse
|
Overloads erstellen
Overloads können nun ähnlich erstellt werden.
Z.B. nachdem auf dem "Muster Client" eine neue Software installiert oder ein Update durchgeführt wurde.
Auf dem Muster Client:
Code: |
fsdiff -C -c sha1 –o /var/radmind/client/meineNeueOverload.T /
lcreate -h ServerAdresse /var/radmind/client/meineNeueOverload.T
|
Auf dem Sever müssen die übetragenen Dateien verifiziert werden:
Code: |
cd /var/radmind/tmp/transcript
lcksum -c sha1 -n meineNeueOverload.T
|
Wenn dies erfolgreich war können diese "verfügbar" gemacht
Code: |
mv /var/radmind/tmp/transcript/meineNeueOverload.T /var/radmind/transcript/
mv /var/radmind/tmp/file/meineNeueOverload.T /var/radmind/file/
|
und in das Command-File eingetragen werden.
Hier /var/radmind/command/neu.K
Code: |
p base.T
p meineNeueOverload.T
n negative.T
|
Das Testen und Verteilen erfolgt analog dem Testen und Verteilen der Baseload (s.o.).
Quellen
http://rsug.itd.umich.edu/software/radmind/
http://webapps.itcs.umich.edu/radmind/index.php/Command_Line_Tutorial
http://webapps.itcs.umich.edu/radmind/index.php/TLS_Cookbook
http://webapps.itcs.umich.edu/radmind/index.php/Main_Page
soweit ... werde diesen Beitrag eventuell noch um TLS (SSL Authentifizierung und Verschlüsselung) erweitern.
Gruß,
rc |
|