Job Downloader

Version 1.1.3

Job Downloader ist ein Tool um einen Linux-Rechnerpool zentral administrieren zu können.

Voraussetzung dafür ist ein kleiner Server, der die auszuführenden Jobs für jeden Rechner des Rechnerpools zentral verwaltet (im Folgenden Job-Server genannt). Es muss kein Extragerät sein; dies wird jedoch empfohlen. Der Zugriff erfolgt über SSH; deshalb muss auf dem Server ein SSH-Server (Paket openssh-server) installiert sein. Weiterhin werden die Pakete sqlite3 und zip benötigt. Die technischen Anforderungen an dieses Gerät sind gering; es genügt beispielsweise ein Raspberrypi.

Nach dem Booten wird für jeden Rechner (via anacron) täglich ein Job gestartet, der auf dem Job-Server nachsieht, ob für den Client noch unerledigte Jobs vorliegen. Wenn ja, werden diese im Hintergrund gestartet. Die einzelnen Rechner können in verschiedene Gruppen eingeteilt und jede Gruppe kann mit einer spezifischen Softwareausstattung betrieben werden. Ein Rechner kann dabei auch mehreren Gruppen angehören.

Installation

Die Installation erfolgt in 2 Schritten:

Bedienungsanleitung

Der Job-Downloader kann sowohl zur Grundinstallation der Arbeitsplatzrechner, als auch zur Wartung derselben eingesetzt werden.

Vorüberlegungen

Wenn Sie einen Linux-Rechnerpool zu verwalten haben, lohnt es sich, im Vorfeld einige grundlegende Überlegungen anzustellen:

  • Wird nur eine Distribution eingesetzt oder kommen unterschiedliche Distributionen zum Einsatz ?
  • Müssen auf verschiedenen Rechnern (z.B. die Rechner unterschiedlicher Abteilungen) unterschiedliche Softwaretools installiert werden ?
  • Wie werden die Benutzer administriert (zentral über LDAP oder Kerberos) ?
  • Werden Gastzugänge benötigt ?

Werden unterschiedliche Distributionen eingesetzt oder sollen in den Abteilungen unterschiedliche Softwaretools installiert und gewartet werden, lohnt es ich, Rechnergruppen zu definieren. Dabei kann ein Arbeitsplatzrechner mehreren Rechnergruppen angehören.

Grundsätzlich gilt: Die Basisinstallation (zumindest ein Minimalsystem) muss vorhanden sein, um darauf aufbauend den Job-Downloader zu installieren. Alles andere kann dann vom JobServer nachinstalliert werden.

Weiterhin sollten Sie folgende Entscheidungen treffen:

  • Wird – um Zeit zu sparen – anfänglich nur ein Minimalsystem installiert oder
  • soll die Basisinstallation umfangreicher sein (z.B. eine Ubuntu-Standardinstallation) ?

Beispielkonfiguration

In einer Firma werden die Distributionen LinuxMint und Ubuntu eingesetzt. Die Basisinstallation soll als Minimalsystem möglich sein, es soll aber auch die Standardvariante benutzt werden können. In der Buchhaltung wird zusätzliche Software benötigt, die auf den anderen Geräten nicht zur Verfügung stehen soll. Für diese Konstellation werden folgende Rechnergruppen benötigt:

  • Mint
  • Ubuntu
  • minimal
  • Buchhaltung

Wird ein Rechner neu angelegt, so werden ihm automatisch folgende Jobs zugewiesen:

  1. Alle Jobs vom Typ “install”
  2. Alle Jobs dessen Typ den Gruppennamen entspricht, denen der Rechner zugeordnet ist.

Gehört beispielsweise ein Rechner den Gruppen “Ubuntu” und “minimal” an, werden ihm beim Anlegen automatisch alle Jobs des Typs “install”, “Ubuntu” und “minimal” zugewiesen und ausgeführt.

Jobs anlegen

Um einen Job anzulegen, schreiben Sie einfach ein Skript, testen dieses aus und laden es dann mit jd-addjob auf den JobServer hoch.

Beispiel 1:

Um Updates durchzuführen schreiben Sie ein Skript sysupd:

#!/bin/bash
# Skript sysupd (ver. 1.0)
# Systemupdate zu Wartungszwecken.

apt-get -y update
apt-get -y upgrade
apt-get -y autoremove

… und speichern sie dies ab. Nachdem Sie sich davon überzeugt haben, dass das Skript ordnungsgemäß funktioniert, laden Sie es auf den JobServer hoch:

> sudo jd-addjob -n -s 10 -t wartung Systemupdate sysupd

Dabei bedeutet:

-nDer Job wird nur angelegt und an die bekannten Hosts noch nicht verteilt
-s 10Der Job erhält die Sequence-Nummer 10; werden gleichzeitig mehrere Jobs ausgeführt, werden diese in der Reihenfolge der Sequence-Nummern ausgeführt.
-t wartungder Job erhält den Jobtyp “wartung”
SystemupdateIst der Name des Jobs
sysupdIst der Dateiname des Skriptfiles
Erklärung der verwendeten Parameter für jd-addjob

Beispiel 2

Ein Firmenfont, der bereits in der Datei firmenfonts.deb vorliegt soll auf allen Rechnern installiert werden. Das Skriptfile fontinst dazu sieht so aus:

#!/bin/bash

# Skript: fontinst (ver. 1.0)
# Installiere unsere Firmenfonts

progdir=$(dirname "$0")
cd $progdir/Files

echo "
Firmenfonts werden installiert
"
apt -y install ./firmenfonts.deb

echo "done"

Für die Ausführung des Skriptes wird also zusätzlich die Datei firmenfonts.deb benötigt. Laden Sie nun zuerst das Skript hoch:

> sudo jd-addjob -n -s 50 -t install Firmenfonts fontinst

Das Skript gehört zum Jobtyp “install” und wird demnach auf allen Rechnern installiert. Jetzt muss noch das Paket firmenfont.deb hochgeladen und dem Job zugewiesen werden.

Notieren Sie zuerst die vom System zugewiesene JobID mit:

> sudo jd-listjobs Firmenfonts
ID,Jobname,Jobtype,Sequence,Command
2,Firmenfonts,install,50,Firmenfonts-1691093699

Notieren Sie die 2 und laden Sie jetzt die zusätzliche Debiandatei hoch:

> sudo jd-uploadfiles 2 firmenfonts.deb

Rechnerpool anzeigen

Mit dem folgenden Befehl können Sie alle registrierten Rechner auflisten

> sudo jd-listhosts

Wollen Sie nur die Anzahl der registrierten Hosts erfahren, so geben Sie …

> sudo jd-listhosts -c

ein.

Mit …

> sudo jd-listhosts mint

… werden nur die Rechner angezeigt, welche der angegebenen Gruppe (im Beispiel “Mint”) angehören.

Jobs anzeigen

> sudo jd-listjobs

… gibt alle gespeicherten Jobs aus. Mit …

> sudo jd-listjobs -n draco

… erfahren Sie, welche (noch nicht ausgeführten) Jobs zu dem angegebenen Rechner (im Beispiel draco) gehören.

Einen Job zuweisen

In den bisherigen Beispielen wurden die Jobs nur angelegt, aber keinem Rechner zugewiesen. Dies kann man umgehen, wenn man beim Anlegen der Jobs den Parameter -n weglässt. In diesem Fall ist zu beachten, dass der Job allen Rechnern zugeteilt wird.

Will man gezielter vorgehen, legt man die Jobs an, wie beschrieben und weist anschließend die Ausführung gezielt zu. Dies geschieht mit dem Befehl jd-assignjob. Ich zeige dies hier am Beispiel des Jobs “Systemuodate” (erstes Beispiel).

Dazu ist es nötig, dass man – wie oben schon einmal beschrieben – sich die JobID beschafft:

> sudo jd-listjobs Systemupdate
ID,Jobname,Jobtype,Sequence,Command
1,Systemupdate,wartung,10,Systemupdate-169108421

Ich merke mir die 1 und weise den Job nun allen beteiligten Rechnern zu:

> sudo jd-assignjob -a 1

Dabei steht -a für “alle Rechner”. Sie können den Job auch nur einem einzelnen Rechner zuweisen, dann lassen Sie -a weg und geben danach den Rechnernamen an:

> sudo jd-assignjob 1 beryll

Dies weist den o.a. Job nur dem Rechner “beryll” zu. Es können Jobs auch nur den Rechnern einer bestimmten Gruppe zugewiesen werden:

> sudo jd-assignjob -g 1 mint

Näheres dazu entnehmen Sie bitte dem Manpages.

man-pages

Eine genauere Beschreibung zu allen Befehlen finden Sie HIER.

Schreibe einen Kommentar