# Network Installation Management

Network Installation Management (NIM) ist ein Client-Server-basiertes Framework zur Softwareverwaltung bzw. -provisionierung für das IBM-Betriebssystem AIX.

## Funktion

Das System besteht aus einem zentralen NIM-Server, der eine Reihe installierbarer Softwarepakete und zu deren Installation notwendige Einrichtungen vorhält. Sämtliche Ressourcen (Clients, Netze, Pakete, …) werden in einer eigenen Datenbank verwaltet. Von diesem Server aus werden andere Systeme, NIM-Clients genannt, über Netzwerk-Verbindungen bedient.
Mit NIM können folgende Operationen durchgeführt werden:
   * Installation des Basis-Betriebssystems (AIX oder Linux) unter Verwendung von bootp und TFTP
   * System-Backups und -Restores zur Wiederherstellung oder zum Klonen von vorhandenen Systemen
   * Installation optionaler Software
   * Updates bereits installierter Software
Die letzten drei Punkte setzen auf NFS auf.
NIM ist kompatibel mit Techniken wie alt_disk_install bzw. alt_disk_migration sowie auch mit deren Nachfolger Multibos. Auch Nodes in HACMP- bzw. PowerHA-Clustern können mittels NIM provisioniert werden. Das System gestattet die parallele Durchführung der jeweiligen Operation auf mehreren Clients, was das Provisioning ganzer Umgebungen erlaubt.

## Architektur

Der NIM-Server verwaltet in einer Datenbank im ODM-Format alle zu seiner Funktion notwendigen Daten. Dies sind insbesondere:
   * installierbare Software (siehe unten)
   * vom jeweiligen Server abhängige Client-Systeme und deren Eigenschaften
   * Netzwerke, über die die Clients angesprochen werden können

### Clients

Das System kann dazu verwendet werden, Systeme wie X-Terms zu versorgen, aber die übliche Verwendung ist die Provisionierung von in der NIM-Nomenklatur standalone genannten Systemen: gewöhnlichen Maschinen (LPARs oder physische Maschinen), die sich lediglich durch ihre Beziehung zum NIM-Server auszeichnen. Um seine Arbeit verrichten zu können, muss der NIM-Server in der Lage sein, entweder per Remote Shell oder über ein NIM-eigenes Äquivalent, nimsh, auf dem Client Kommandos (als root) auszuführen.

### Software-Ressourcen

Die drei für den Administrator wichtigsten Arten von Software-Ressourcen sind: LPP-Source, SPOT und mksysb. Daneben gibt es noch einige weitere Arten (z. B. die Boot-ROMs für verschiedene Maschinentypen, um Systeme extern booten zu können), um die sich das System selbst kümmert.

#### LPP-Source

Ist eine Sammlung von installierbaren Paketen (bff-Format oder rpm) mit einem Namen, um die Sammlung als Entität handhaben zu können. Sie entspricht in Funktion und Leistungsumfang ungefähr einem Repository für YUM oder dergleichen. Von einer solchen Sammlung weg können Softwarepakete installiert oder auch auf einen anderen Versionsstand gebracht werden. Es ist mit NIM-Mitteln möglich, in ein LPP-Source wie in ein virtuelles System zu „installieren“, sodass die Ressource selbst auch mit den Mitteln der Softwarepflege bearbeitet werden kann.

#### SPOT

SPOT steht für shared product object tree und bezeichnet einen freigegebenen /usr-tree. Es wird z. B. bei XTerms oder diskless workstations über NFS anstelle einer lokalen Platte gemountet. Bei standalone Systemen dient er bei der Erst-Installation zur Erzeugung eines Ursystems, ähnlich dem initramfs bei einer Linux-Installation. Auch der SPOT kann – mit einer LPP-Source als Quelle – wie ein tatsächliches System installiert und aktualisiert werden.

#### mksysb

Das mksysb ist ein bootfähiges Image eines vollständig installierten Betriebssystems (neben einigen Zusatzinformationen im Wesentlichen ein savevg rootvg) und wird vom gleichnamigen Befehl erzeugt. Es gibt zwei grundlegende Möglichkeiten, mksysbs zu verwenden: Man erstellt ein minimales Golden Image und verwendet dies, um alle weiteren Systeme mit einer Basisinstallation zu versorgen, die man dann durch weiteres Customizing je nach Verwendungszweck des Systems individualisiert. Oder man erzeugt von einem laufenden System mit NIM-Mitteln ein solches mksysb-Image und speichert es auf dem NIM-Server, sodass im Fehlerfalle ein vollständig gesichertes und konfiguriertes System sehr schnell zur Verfügung steht und nur auf neue Hardware aufgebracht werden muss. Das auf dem NIM-Server vorgehaltene mksysb kann dazu benutzt werden, das Zielsystem remote zu starten wie auch zu installieren.

#### Bundles

Daneben gibt es noch die Möglichkeit, einzelne installierbare Pakete zu sogenannten Bundles zusammenzufassen, die dann gemeinsam auf einen oder mehrere Client(s) aufgebracht werden können. Die Definition geschieht über einfache ASCII-Dateien, in denen die Pakete aufgelistet sind. Zum Unterschied von LPP-Sources, die meist eine gesamte Betriebssystem-Version oder -Revision (z. B. einen Maintenance Level oder Technical Level, ein Service Pack oder dergleichen) beinhalten, werden Bundles häufig für einen bestimmten Zweck angelegt, etwa eine Version eines bestimmten Treiberpakets. Zum Unterschied von LPP-Sources stehen bei Bundles die Methoden der Softwarepflege (etwa das Einspielen von Updates wie in ein Pseudo-System) nicht zur Verfügung.

### Ablauf einer System-Installation

Zunächst werden die zu verwendenden Ressourcen (typischerweise ein mksysb) freigeschaltet und vom System auf dem NIM-Server unter /tftpboot abgelegt. Danach wird die Zielmaschine gestartet, und die Boot-PROMs sorgen für die Initiierung einer bootp-Sequenz, die der Maschine ihre IP-Adresse zuweist. Sodann wird ein rudimentäres initiales System per tftp übertragen. Dieses System wird gestartet und übernimmt die weitere Installation des im mksysb abgelegten System-Images.

### Ablauf einer Software-Installation bzw. einer Aktualisierung

Zunächst werden die zu verwendenden Ressourcen (typischerweise ein LPP-Source) freigeschaltet. Die NIM-Befehle sorgen automatisch für die entsprechenden NFS-Freigaben in /etc/exports. Die danach folgenden Vorgänge können sowohl von der Maschine wie auch vom NIM-Server aus durchgeführt werden: die freigegebene Ressource wird über NFS gemountet, danach die Software mit den normalen Mitteln der Paketverwaltung (installp oder RPM Package Manager) installiert, bzw. aktualisiert, danach der NFS-share wieder abgehängt. Zu beachten ist, dass die NFS-Freigaben von den NIM-Mechanismen sowohl durchgeführt wie auch (nach einem einmaligen Installationsversuch) wieder zurückgenommen werden. Sollte dieser Versuch scheitern, so muss die Zielmaschine für die entsprechenden Ressourcen erneut freigeschaltet werden. Eine häufig auftretende Fehlerquelle ist die manuelle Bearbeitung der /etc/exports-Datei (insbesondere Freigaben von den NIM-Ressourcen übergeordneten Teilen des Filesystems), womit die NIM-Software nicht immer gut zurechtkommt.