[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Werkzeuge zur Softwareverteilung im Netzwerk



Hallo Jan,

Jan Luehr schrieb:
ja hallo erstmal,...

Am Donnerstag, 20. Oktober 2005 18:14 schrieb Hans-Georg Bork:

Moin,

On Thu, Oct 20, 2005 at 03:24:10PM +0200, Jan Luehr wrote:

ja hallo erstmal,..

ich suche zur Zeit nach Werkzeugen um Software und Einstellungen im
Netzwerk (Poolräume, einzelene Wokrstations) zu verteilen.

dafür ist cfengine geeignet

APT ist zur
zwar nett, aber relativ lowlevel. (Es ist relativ mühseelig defaults in
vorhandenen Paketen zu ändern, eigenen links, etc. zu verteilen, etc.)
Gibt es Werkzeuge, die auf höhere Ebene aufsetzen?
Sicher kann man mit Perl, ssh und apt viel machen, aber ich will das Rat
nicht neu erfinden ;)
Any hints?

wie waers mit nem eigenen kleinen Repository auf dem server und die Clients
lassen cron-apt laufen? Auf dem Server legst Du alles so ab, wie Du das
brauchst und cron-apt laesst sich so konfigurieren, dass kein Input
benoetigt wird


Clientseitig ist cron-apt auf jeden Fall interessant. So wie ich das verstehe, kann es aber, was die Installation anbelangt kaum mehr als apt selber. Wie kann ich es erreichen, dass die Antworten auf Fragen und Dialoge, die bei der Installation auftreten auf dem Client vorliegen?

Wir haben die Administration und Softwareverteilung unserer Server
mit cfengine gelöst. Nächtlich läuft sowas:

#!/bin/sh
# Dieses Skript liest die Paket-Auswahl ein und aktualisiert das System

export DEBIAN_FRONTEND=noninteractive

# globale Paketauswahl:
SELECTIONFILE=/etc/cfg/package_selection.txt
# Software, die nur auf diesem Server läuft:
SELECTIONFILELOCAL=/etc/cfg/package_selection.local.txt

PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin

# Paketliste aktualisieren
apt-get --yes update

# globale Paket-Auswahl einlesen
dpkg --set-selections < $SELECTIONFILE

# ggf. lokale Paket-Auswahl einlesen
test -f $SELECTIONFILELOCAL && dpkg --set-selections \
< $SELECTIONFILELOCAL

# Upgrade durchführen
apt-get --yes dselect-upgrade

# runtergeladene Pakete aufräumen
apt-get clean

Danach kann cfengine die definierten Variablen durch geeignete
Werte substituieren.

Für den bind könnte so eine cfengine Sektion (bei uns heißt
die ausgelagerte Datei cf.dns) ausschnitsweise derart aussehen:

directories:
        /etc/bind               mode=755 owner=root group=root
copy:
   serverconf.firstrun:: $(files)/DNS/db.domain   \
   dest=/etc/bind/db.$(domain) m=644 o=root g=root
serverconf::
   $(files)/DNS/named.conf  dest=/etc/bind/named.conf \
    m=600 o=root g=root
editfiles:
 finishing::
{ /etc/bind/named.conf
 ReplaceAll "%%%domain%%%" With "$(domain)"
 ReplaceAll "%%%netip%%%" With "$(netip)"
 ReplaceAll "%%%netip_arpa%%%" With "$(netip_arpa)"
 ReplaceAll "%%%listen_on%%%" With "10.0.$(ipnr).0/24"
 ReplaceAll "%%%tsig%%%" With "$(tsig)"
 DefineClasses "configchanges_bind9"
}
shellcommands:
late::
  late.configchanges_bind9:: "/etc/init.d/bind9 reload"


Und die dazugehörige named.conf unter $files/DNS/ file
mit den Variablen:

 listen-on {%%%listen_on%%%; 127.0.0.1;};
key %%%domain%%% {
        secret "%%%tsig%%%";
// %%%domain%%%
zone "%%%domain%%%" IN {
 file "db.%%%domain%%%";
 allow-update { key %%%domain%%%;};
// %%%netip%%%.0
zone "0.%%%netip_arpa%%%.in-addr.arpa" IN {
 file "db.%%%netip%%%.0";
 allow-update { key %%%domain%%%;};

Über die cf.preconf kopieren wir per rsync die cfengine
Konfiguration auf die Server. Somit werden die Änderungen,
die wir am Tag ins cvs einchecken und auf dem rsync Server
auschecken jeden morgen auf den Servern aktiv.

Das charmante an der Lösung ist, dass es egal ist wieviele
Server da draußen stehen. Wenn du nur 5 zu pflegen hast,
lohnt der Aufwand kaum, aber bei 30 oder mehr ist das Gold
wert.

Wenn du eine einfachere Lösung findest, sag Bescheid :)

HTH
Thorsten



Reply to: