# Administration mehrerer Rechner mittels Radmind

## rc

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

```

#!/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

```

# /etc/conf.d/radmind

RADMIND_OPTS="-w 1 -U -a 10.5.9.250"

```

Für erste Tests nur folgendes verwenden:

```

# /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

```

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.

```

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.:

```

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.

```

touch /var/radmind/command/neu.K

echo "IP-AdresseMusterClient /var/radmind/command/neu.K" > /var/radmind/config 

```

Dann muss der Server gestartet werden.

```

/usr/local/sbin/radmind

```

Oder alternativ mittels des improvisierten Runscript.

```

/etc/init.d/radmind start

```

Baseload auf dem Server speichern 

Auf dem Client:

```

lcreate -h ServerAdresse /var/radmind/client/base.T

```

Das negative Transskript muss ebenfalls übertragen werden.

```

lcreate –N –h ServerAdresse /var/radmind/client/negative.T

```

Auf dem Server müssen die Übetragenen Dateien verifiziert werden.

```

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

```

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

```

p base.T

n negative.T

```

Jetzt kann die Baseload getestet werden.

Auf dem "Muster Client"

```

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.

```

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:

```

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:

```

cd /var/radmind/tmp/transcript

lcksum -c sha1 -n meineNeueOverload.T

```

Wenn dies erfolgreich war können diese "verfügbar" gemacht

```

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

```

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

----------

