Sobald als man Admin mehrere Server zu administrieren hat, kommt man in den Genuss ein- und das dasselbe auf viele Servern immer wieder machen zu muessen. Heute moechte ich mich dem Thema widmen auf vielen Servern z.B. eine neue Version des Backupskriptes einzuspielen. Dafuer brauche ich zwei Dinge
- ein Debian Paket mit meinem Skript
- ein Debian Repository ueber das das Paket verteilt wird
Der hier im folgenden vorgestellte Weg ist sehr simpel und rudimentaer gehalten und behandelt explizit Dinge wie SecureApt nicht.
Erstellen eines eigenen Debian-Paketes
Zum Erstellen des eigenen Debian Paketes benoetige ich nun zwei Dinge. Einmal mein Backupskript pregoBackup.sh und einmal eine control-Datei, die Informationen ueber das Debian Paket enthaelt. Die control Datei koennte z.B. wie folgt aussehen:
Package: pregoBackup
Version: 0.5
Section: server
Priority: optional
Architecture: all
Essential: no
Installed-size: 1024
Maintainer: prego presto
Description: pregos Backup Skript zum Sichern des Servers |
Package: pregoBackup
Version: 0.5
Section: server
Priority: optional
Architecture: all
Essential: no
Installed-size: 1024
Maintainer: prego presto
Description: pregos Backup Skript zum Sichern des Servers
Das ganze vorgehen jetzt in Worte zu fassen waere sehr umstaendlich. Deswegen in kurz: die control Datei liegt in dem Unterordner ./DEBIAN und neben das DEBIAN Verzeichnis packe ich das Skript an die Stelle, wo ich es im Dateisystem liegen haben moechte:
cd /tmp
mkdir pregoBackup
cd pregoBackup
mkdir ./DEBIAN
mkdir -p ./root/skripte
cp control ./DEBIAN
cp pregoBackup.sh ./root/skripte |
cd /tmp
mkdir pregoBackup
cd pregoBackup
mkdir ./DEBIAN
mkdir -p ./root/skripte
cp control ./DEBIAN
cp pregoBackup.sh ./root/skripte
Als naechstes wird das Debian-Paket erstellt:
cd /tmp
dpkg-deb --build pregoBackup |
cd /tmp
dpkg-deb --build pregoBackup
Danach sollten wir die Datei /tmp/pregoBackup.deb haben. Was darin enthalten ist koennen wir uns mit:
dpkg-deb --contents pregoBackup.deb |
dpkg-deb --contents pregoBackup.deb
anzeigen lassen, und wer moechte kann es auch spasseshalber mal mit
dpkg -i pregoBackup.deb
aptitude show pregoBackup
aptitude purge pregoBackup |
dpkg -i pregoBackup.deb
aptitude show pregoBackup
aptitude purge pregoBackup
installieren, angucken und deinstallieren.
Anlegen eines Debian Repositories
An zweiter Stelle lege ich nun ein Repository an. Dafuer erstelle ich zuerst eine Verzeichnisstruktur dafuer:
mkdir -p /srv/myrepository/{binary,source} |
mkdir -p /srv/myrepository/{binary,source}
Anschliessend lege ich einen simplen Apache vhost an mit einer Zugangsbeschraenkung fuer das Repository auf mein lokales Netz:
ServerAdmin webmaster@example.net
ServerName myrepository.example.net
DocumentRoot /srv/myrepository/
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order Deny,Allow
Deny from all
Allow from 192.168.0.0/255.255.0.0 |
ServerAdmin webmaster@example.net
ServerName myrepository.example.net
DocumentRoot /srv/myrepository/
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order Deny,Allow
Deny from all
Allow from 192.168.0.0/255.255.0.0
Nun kann ich mein frisch erstelltes Debian-Paket in die Repository Dateisystemstruktur kopieren:
cp /tmp/pregoBackup.deb /srv/myrepository/binary/ |
cp /tmp/pregoBackup.deb /srv/myrepository/binary/
Zu guter letzt muss noch der Repository Index erstellt werden. Dafuer muss das Paket dpkg-dev vorhanden sein:
aptitude install dpkg-dev
cd /srv/myrepository
dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz |
aptitude install dpkg-dev
cd /srv/myrepository
dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz
Wenn das alles fertig ist, brauche ich nur noch auf meinem Server die entsprechenden Zeilen in die /etc/apt/sources.conf eintragen, die Liste der verfuegbaren Pakete von den apt-Quellen erneuern und dann kann das Paket installiert werden.
## my personal repository
deb http://myrepository.example.net binary/
deb-src http://myrepository.example.net source/ |
## my personal repository
deb http://myrepository.example.net binary/
deb-src http://myrepository.example.net source/
aptitude update
aptitude install pregoBackup |
aptitude update
aptitude install pregoBackup