Automatisierung von (open)SUSE Installationen

27.07.2023 | Christian Schneemann in howto

Für diese Anwendungsfälle wird die Übergabe einer “Antwort-”, bzw. Kontrolldatei unterstützt. Diese in XML verfasste Datei steuert den AutoYast Mechanismus. Hier werden die sonst abgefragten Konfigurationsparameter vordefiniert übergeben und somit die Installation automatisiert. Es können aber auch gezielt Abfragen einzelner Parameter realisiert werden, etwa die Netzwerkkonfiguration, wenn kein DHCP-Server genutzt werden kann/soll. Oder auch das (initiale) root-Passwort.

An verschiedenen Stellen der Installation werden Scriptaufrufe unterstützt. Diese können genutzt werden, um das System über die von YaST zur Verfügung gestellten Möglichkeiten hinaus anzupassen. Sie können aber auch für die Interaktion mit anderen Diensten genutzt werden, z.B. um den Status der Installation zu melden.

Scripte können zu folgenen Zeitpunkten aufgerufen werden:
  • pre-scripts (direkt nach dem Start, bevor irgendwas am System passiert)
  • postpartitioning-scripts (Nach der Partitionierung und mounten der Dateisysteme nach /mnt)
  • chroot-scripts (nach der Paketinstallation, vor dem ersten Neustart)
  • post-scripts (während des Neustarts, bevor Dienste gestartet werden)
  • init-scripts (während des Neustarts, nachdem alle Dienste gestartet sind)

Ablauf der Installation

Eine Installation mit Hilfe eines AutoYaST-Profils durchläuft die folgenden Schritte:
  • YaST startet und lädt das angegebene Profil
  • Aufruf der definierten pre-scripte
  • Partitionierung und mounten unterhalb von /mnt
  • Aufruf der definierten postpartitioning-scripte
  • Anlegen von Benutzern und Gruppen
  • Installation der definierten Pakete und Pattern
  • Aufruf der definierten chroot-scripte
  • Neustart in die Second-Stage
  • Aufruf der definierten post-scripte
  • Start aller Dienste
  • Aufruf der definierten init-scripte

Erstellung der Kontrolldatei

Es gibt verschiedene Möglichkeiten, sich eine für die eigenen Anwendungsfälle passende Kontrolldatei zu erstellen. Diese Datei komplett von 0 an von Hand zu erstellen ist möglich, allerdings eher unüblich. Verbreiteter ist, sich die Datei von YaST erstellen zu lassen. Nach der Installation stellt YaST auch ein Modul bereit, mit welchem ein bereits installiertes und konfiguriertes System ausgelesen und in eine Kontrolldatei geschrieben werden kann.

Dieses Modul ist verfügbar, wenn das Paket autoyast2 installiert ist und es kann mit dem Kommando yast2 autoyast gestartet werden.

Eine erstellte Kontrolldatei lässt sich anschließend mit einem beliebigen Editor bearbeiten und nach Bedarf kürzen. Abschnitte/Sektionen, die in der Kontrolldatei nicht behandelt werden, werden mit den SUSE Standards konfiguriert.

Nutzung

Damit eine Installation automatisiert startet und eine Kontrolldatei geladen wird, wird diese mit Hilfe eines Bootparameters zu Beginn der Installation mitgegeben.

autoyast=http://example.de/autoinstallation/control.xml

Die Kontrolldatei kann mit auf dem Bootmedium (CD/DVD, USB-Stick) gespeichert sein oder per Netzwerk von verschiedenen Dateiservern (FTP, HTTP, NFS) geladen werden. Es ist auch möglich, hier nur einen Ordner-Pfad anzugeben. Die Installationsroutine sucht darin dann anhand von Regeln ein zum System passendes Profil. Wird beispielsweise autoyast=http://example.de/autoinstallation/ konfiguriert, wird darin nach verschiedenen Dateien gesucht, bis die passende gefunden wird. Der Mechanismus arbeitet ähnlich wie bei pxelinux: Es wird der Hex-Wert der IP-Adresse des Systems genommen und im Verzeichnis auf dem Server nach einer Datei mit entsprechenden Namen gesucht. Wird diese Datei nicht gefunden, wird eine Hex-Zahl entfernt. So wird vorgegangen, bis kein Hex-Wert mehr vorhanden ist. Abschließend wird nach einer Datei namens default gesucht. Die Dateien dürfen bei Nutzung dieses Verfahrens keine Dateiendung besitzen! Diese Variante ist besonders geeignet, wenn je nach Netzwerksegment verschiedene Installationsprofile für die Grundinstallation genutzt werden sollen.

IP: 192.168.5.23
HEX-Wert: c0a80517

| Durchgang | gesuchter Dateiname |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|     1     |      c0a80517       |
|     2     |      c0a805         |
|     3     |      c0a8           |
|     4     |      c0             |
|     5     |      default        |

Beispiel einer Minimal-Installation

Ein minimales und dennoch benutzbares Profil enthält nur die folgenden Angaben:
  • Deaktivierung der Installationsbestätigung (Installation startet automatisch)
  • Passwort für den Benutzer root

Wenn das Profil über das Netzwerk, wie in diesem Fall über einen Webserver, geladen wird und keine weitere Konfiguration bzgl. des Netzwerks vorliegt, wird die Konfiguration zur Zeit der Installation übernommen. In unserem Fall DHCP, da wir keine Konfiguration per Bootparameter mitgegeben haben.

<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
  <general t="map">
    <mode t="map">
      <confirm t="boolean">false</confirm>
    </mode>
  </general>
  <users t="list">
    <user t="map">
      <encrypted t="boolean">false</encrypted>
      <username>root</username>
      <user_password>linux</user_password>
    </user>
  </users>
</profile>

Der große Block user kann auch weggelassen werden, wenn das Passwort für den Benutzer root per Bootparameter übergeben wird: rootpassword=linux

Das Profil verkürzt sich dann auf das folgende Beispiel:

<?xml version="1.0"?>
<!DOCTYPE profile>
<profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
  <general t="map">
    <mode t="map">
      <confirm t="boolean">false</confirm>
    </mode>
  </general>
</profile>
Diese beiden Beispiele für minimalste Profile sind in der Praxis eher nicht anzutreffen. Hier werden in der Regel mindestens die folgenden Sektionen mit übergeben:
  • Partitionierung
  • Benutzer
  • Pakete/Patterns
  • zusätzliche Repositories
  • Netzwerkkonfiguration (Fest/DHCP)
  • Firewall
  • zu startende Dienste

Beispielinstallation

Bei unserem Beispiel booten wir ein System/VM mit der ISO-Datei der DVD openSUSE-Leap-15.5-DVD-x86_64-Media.iso; hier sind alle für unsere Installation benötigten Pakete enthalten. Somit müssen wir nicht per weiteren Bootparameter (install=) auf ein Repository verweisen.

Wir starten die Installation mit folgenden Parametern:

  • autoyast=http://192.168.5.10/autoinstall/default.xml
  • textmode

Nach Eingabe der Parameter und Bestätigung durch die Enter-Taste können wir uns zurücklehnen/andere Arbeiten erledigen und auf die Fertigstellung der Installation warten.

Integration in anderen Tools

Viele System Management oder Installationstools untersützen die automatische Installation von (open)SUSE Systemen mit Hilfe von AutoYaST-Profilen. Zu diesen gehören u.a.:
  • SUSEMAnager/uyuni
  • cobbler
  • the foreman

Linksammlung

Christian Schneemann
Christian Schneemann
Christian Schneemann ist bei der B1 Systems GmbH als Linux Consultant und Developer mit Schwerpunkt System Management und Deployment tätig. Er ist an der Entwicklung von kundenspezifischen Linux Appliances beteiligt und betreut diese im Kundenauftrag.

 


Haben Sie Anmerkungen oder Nachfragen? Melden Sie sich unter blog%b1-systems.de
Col 2