Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Bereitstellen von SLE Micro mit Raw-Disk-Images auf IBM Z DASD-Datenträgern

Bereitstellen von SLE Micro mit Raw-Disk-Images auf IBM Z DASD-Datenträgern

Veröffentlicht: 12.12.2024
WAS?

SLE Micro stellt Raw-Images (auch als vordefinierte Images bezeichnet) zur Verfügung, die direkt auf Ihrem Gerätespeicher bereitgestellt werden können.

WARUM?

In diesem Artikel erhalten Sie eine schrittweise Anleitung zum Bereitstellen von SLE Micro auf einem IBM Z-Rechner.

AUFWAND

Es dauert etwa 20 Minuten, den Artikel zu lesen.

ZIEL

SLE Micro ist erfolgreich auf Ihrem System installiert.

ANFORDERUNGEN
  • Ein Datenträger mit laufendem Linux.

  • Ein Datenträger, auf dem Sie das Raw-Disk-Image bereitstellen und auf dem SLE Micro ausgeführt wird.

  • Ein Datenträger, der als Konfigurationsmedium fungiert.

1 Informationen über vordefinierte Images

Vordefinierte Images sind gebrauchsfertige Abbildungen eines laufenden Betriebssystems. Sie werden nicht auf herkömmliche Weise mit einem Installationsprogramm installiert, sondern auf die Festplatte des Zielhosts kopiert. Dieses Thema enthält grundlegende Informationen über diese vordefinierten Images.

Die vorbereiteten Images müssen beim ersten Booten mit den in den Images enthaltenen Tools konfiguriert werden. Der Bootloader erkennt den ersten Bootvorgang wie in Abschnitt 1.2, „Erkennung des ersten Startvorgangs“ beschrieben. Jedes Image wird mit standardmäßig gemounteten Subvolumes geliefert, die während der ersten Boot-Konfiguration geändert werden können. Einzelheiten zu den Subvolumes finden Sie in Abschnitt 1.1, „Standardpartitionierung“.

1.1 Standardpartitionierung

Die vordefinierten Images werden mit einem standardmäßigen Partitionierungsschema geliefert. Dies können Sie beim ersten Starten mit Ignition oder Combustion ändern.

Wichtig
Wichtig: Btrfs ist für das Root-Dateisystem obligatorisch

Wenn Sie Änderungen am standardmäßigen Partitionierungsschema vornehmen möchten, muss das Root-Dateisystem Btrfs verwendet werden.

Jedes Image enthält die folgenden Subvolumes:

/home
/root
/opt
/srv
/usr/local
/var

Das Verzeichnis /etc wird als overlayFS eingehängt, wobei das übergeordnete Verzeichnis /var/lib/overlay/1/etc/ lautet.

Sie können die standardmäßig eingehängten Subvolumes mit der Option x-initrd.mount in /etc/fstab ermitteln. Andere Subvolumes oder Partitionen müssen entweder mit Ignition oder mit Combustion konfiguriert werden.

1.2 Erkennung des ersten Startvorgangs

Die Bereitstellungskonfiguration wird nur beim ersten Starten ausgeführt. Zur Unterscheidung zwischen dem ersten und den nachfolgenden Booten wird die Flag-Datei /boot/writable/firstboot_happened nach Beendigung des ersten Boots erstellt. Wenn die Datei nicht im Dateisystem vorhanden ist, wird das Attribut ignition.firstboot an die Kernel- Kommandozeile weitergegeben und damit die Ausführung von Ignition und Combustion (in der initrd) ausgelöst. Nach Abschluss des ersten Startvorgangs wird die Flag-Datei /boot/writable/firstboot_happened erstellt.

Anmerkung
Anmerkung: Die Flag-Datei wird immer erstellt

Die Flag-Datei /boot/writable/firstboot_happened wird selbst dann erstellt, wenn die Konfiguration nicht erfolgreich ist, beispielsweise weil Konfigurationsdateien fehlerhaft sind oder ganz fehlen.

1.2.1 Neukonfiguration des Systems bei einem späteren Start erzwingen

Wenn Sie das System nach dem ersten Startvorgang neu konfigurieren müssen, können Sie die Neukonfiguration beim nächsten Startvorgang erzwingen. Hier haben Sie zwei Möglichkeiten.

  • Sie können das Attribut ignition.firstboot=1 an die Kernel- Kommandozeile übergeben.

  • Sie können die Flag-Datei /boot/writable/firstboot_happened löschen .

2 Bereitstellung von SLE Micro

Das Verfahren zur Bereitstellung von SLE Micro umfasst drei Phasen. Überspringen Sie keine der Phasen und befolgen Sie die unten angegebene Reihenfolge.

  1. Aktivieren eines DASD-Datenträgers: Bevor Sie mit dem Bereitstellen beginnen, müssen Sie sicherstellen, dass alle zu verwendenden Datenträger verfügbar und aktiv sind. Detaillierte Informationen finden Sie in Abschnitt 3, „Vorbereiten des Rechners“.

  2. Vorbereiten eines Konfigurationsgeräts: Zur Konfiguration des Netzwerks, zum Hinzufügen von Benutzern und zur Registrierung des Systems bereiten Sie die Konfiguration gemäß den Anweisungen in Abschnitt 4, „Vorbereiten des Konfigurationsdatenträgers“ vor.

  3. Herunterladen des SLE Micro-Image und Bereitstellen auf dem Datenträger. Detaillierte Informationen finden Sie in Abschnitt 5, „Bereitstellen des Raw-Disk-Image auf der DASD-Festplatte“.

3 Vorbereiten des Rechners

Bevor Sie mit dem Bereitstellen von SLE Micro beginnen, müssen Sie überprüfen, ob alle drei benötigten DASD-Datenträger aktiv sind. Führen Sie zur Überprüfung des Zustands der Datenträger das folgende Kommando aus:

# lsdasd

Bus-ID    Status    Name      Device  Type         BlkSz  Size      Blocks 
================================================================================ 
0.0.0100  active    dasda     94:0    ECKD         4096   30720MB   7864380 
0.0.0101  active    dasdc     94:8    ECKD         4096   20480MB   5243040
0.0.0102  active    dasdb     94:4    ECKD         4096   5120MB    1310760

Der 5-GB-Datenträger wird als Konfigurationsgerät verwendet, und der 20-GB-Datenträger ist der Datenträger, auf dem SLE Micro bereitgestellt wird.

Wenn Sie die Datenträger in der Ausgabe des Kommandos nicht sehen, müssen Sie die Datenträger aktivieren. Gehen Sie hierfür wie folgt vor:

  1. Führen Sie lszdev dasd aus, um eine vollständige Liste der Geräte anzuzeigen:

    # lszdev dasd
    
    TYPE       ID        ON   PERS  NAMES 
    dasd-eckd  0.0.0100  yes  no    dasda 
    dasd-eckd  0.0.0101  no   no    
    dasd-eckd  0.0.0102  no   no   
    dasd-eckd  0.0.0190  no   no     
    dasd-eckd  0.0.019d  no   no     
    dasd-eckd  0.0.019e  no   no     
    dasd-eckd  0.0.0592  no   no
  2. Aktivieren Sie die Datenträger mit dem Kommando:

    # chzdev -e DISK_ID

    Zum Beispiel zum Aktivieren des Datenträgers 0.0.0101:

    # chzdev -e 0.0.0101
  3. Vergewissern Sie sich, dass die Datenträger in der Ausgabe des Kommandos lsdasd aktiv sind.

4 Vorbereiten des Konfigurationsdatenträgers

Tipp
Tipp: Virtueller versus physischer Datenträger

Ein virtueller Datenträger eignet sich möglicherweise besser für die Bereitstellung in der Produktion, während ein physischer Datenträger besser für die Entwicklung geeignet ist.

Während des Installationsvorgangs können Sie eine komplexe Konfiguration übergeben, um Benutzer und Verzeichnisse zu definieren oder SSH-Schlüssel bereitzustellen. Erstellen Sie dazu ein Konfigurationsgerät, das eine vollständige Konfiguration speichert. Die folgende beispielhafte Vorgehensweise beschreibt, wie Sie ein solches Gerät erstellen:

  1. Identifizieren Sie den 5 GB-Datenträger:

    # lsdasd
    
    Bus-ID    Status    Name      Device  Type         BlkSz  Size      Blocks 
    ================================================================================ 
    0.0.0100  active    dasda     94:0    ECKD         4096   30720MB   7864380 
    0.0.0101  active    dasdc     94:8    ECKD         4096   20480MB   5243040
    0.0.0102  active    dasdb     94:4    ECKD         4096   5120MB    1310760

    In der obigen Ausgabe lautet der Bus-ID-Wert des Datenträgers, der als Konfigurationsgerät verwendet werden soll, 0.0.0102. Verwenden Sie zur Identifizierung des Datenträgers den Wert von Bus-ID oder die Größe des Datenträgers, da sich der Gerätename (/dev/dasdX) nach jedem Neustart ändern kann.

  2. Formatieren Sie den Datenträger. Denken Sie daran, dass beim Formatieren alle Daten auf dem Datenträger gelöscht werden.

    # dasdfmt -b 4096 -y -p /dev/dasdb
  3. Erstellen Sie eine Partition:

    # parted /dev/dasdb mkpart ext2 0% 100%
  4. Formatieren Sie die Partition:

    # mkfs.ext4 /dev/dasdb1
  5. Bezeichnen Sie die Partition als ignition:

    # e2label /dev/dasdb1 ignition
  6. Überprüfen Sie das Dateisystem:

    # blkid
  7. Hängen Sie die Partition ein:

    # mount /dev/dasdb1 /mnt
  8. Bereiten Sie die Verzeichnisstruktur für Ignition und/oder Combustion vor. Für Ignition:

    # mkdir -p  /mnt/ignition

    Für Combustion:

    # mkdir -p /mnt/combustion
  9. Kopieren Sie Ihren öffentlichen SSH-Schlüssel in /mnt/combustion als ssh_key.pub.

  10. Bereiten Sie die Konfiguration wie im Folgenden beschrieben vor.

4.1 Konfigurieren der Bereitstellung von SLE Micro mit Combustion

Mit dem dracut-Modul Combustion können Sie Ihr System beim ersten Starten konfigurieren. Mit Combustion können Sie beispielsweise die Standardpartitionen ändern, die Passwörter der Benutzer festlegen, Dateien erstellen oder Pakete installieren.

4.1.1 Wie funktioniert Combustion?

Combustion wird aufgerufen, sobald das Argument ignition.firstboot an die Kernel-Kommandozeile übergeben wird. Combustion liest eine bereitgestellte Datei mit dem Namen script, führt die darin enthaltenen Kommandos aus und nimmt so Änderungen am Dateisystem vor. Wenn script das Netzwerk-Flag enthält, versucht Combustion, das Netzwerk zu konfigurieren. Nach dem Einhängen von /sysroot versucht Combustion, alle Einhängepunkte in /etc/fstab zu aktivieren und ruft dann transactional-update auf, um andere Änderungen vorzunehmen, wie das root-Passwort festzulegen oder Pakete zu installieren.

Die Konfigurationsdatei script muss sich in dem combustion-Unterverzeichnis auf dem Konfigurationsmedium mit der Bezeichnung combustion befinden. Die Verzeichnisstruktur muss wie folgt aussehen:

<root directory>
└── combustion
    └── script
    └── other files
Tipp
Tipp: Gemeinsame Verwendung von Combustion und Ignition

Combustion kann zusammen mit Ignition genutzt werden. Wenn Sie dies tun möchten, bezeichnen Sie Ihr Konfigurationsmedium ignition und fügen Sie das Verzeichnis ignition mit dem config.ign in Ihre Verzeichnisstruktur ein, wie unten gezeigt:

<root directory>
└── combustion
    └── script
    └── other files
└── ignition
    └── config.ign

In diesem Szenario wird Ignition vor Combustion ausgeführt.

4.1.2 Combustion-Konfigurationsbeispiele

4.1.2.1 Die Konfigurationsdatei script

Die Konfigurationsdatei script besteht aus einer Reihe von Kommandos, die von Combustion analysiert und in einer transactional-update-Shell ausgeführt werden. In diesem Artikel finden Sie Beispiele für Konfigurationsaufgaben, die mit Combustion durchgeführt werden.

Wichtig
Wichtig: Interpreter-Deklaration

Da die Datei script von der Shell interpretiert wird, beginnen Sie die Datei immer mit der Interpreter-Deklaration in der ersten Zeile. Zum Beispiel im Fall von Bash:

#!/bin/bash

Zum Anmelden bei Ihrem System geben Sie mindestens das root-Passwort an. Es wird allerdings empfohlen, die Authentifizierung mithilfe von SSH-Schlüsseln einzurichten. Wenn Sie ein root-Passwort benötigen, müssen Sie ein sicheres Passwort konfigurieren. Für ein zufällig generiertes Passwort sollten Sie mindestens 10 Zeichen verwenden. Wenn Sie Ihr Passwort manuell erstellen, sollten Sie sogar mehr als 10 Zeichen verwenden und Groß- und Kleinbuchstaben sowie Zahlen kombinieren.

4.1.2.1.1 Netzwerkkonfiguration

Um die Netzwerkverbindung während des ersten Bootens zu konfigurieren und zu verwenden, fügen Sie die folgende Anweisung zu script hinzu:

# combustion: network

Diese Anweisung übergibt das Argument rd.neednet=1 an dracut. Die Netzwerkkonfiguration ist standardmäßig auf DHCP eingestellt. Wenn eine andere Netzwerkkonfiguration erforderlich ist, gehen Sie vor wie in Abschnitt 4.1.2.1.2, „Durchführen von Änderungen in initramfs“ beschrieben.

Wenn Sie die Anweisung nicht angeben, bleibt das System ohne Netzwerkverbindung konfiguriert.

4.1.2.1.2 Durchführen von Änderungen in initramfs

Möglicherweise müssen Sie Änderungen an der initramfs-Umgebung vornehmen, zum Beispiel um eine benutzerdefinierte Netzwerkkonfiguration für NetworkManager in /etc/NetworkManager/system-connections/ zu schreiben. Verwenden Sie dazu die Anweisung prepare.

Zum Beispiel, um eine Verbindung mit einer statischen IP-Adresse zu erstellen und DNS zu konfigurieren:

#!/bin/bash
# combustion: network prepare
set -euxo pipefail
          
nm_config() {
  umask 077 # Required for NM config
  mkdir -p /etc/NetworkManager/system-connections/
  cat >/etc/NetworkManager/system-connections/static.nmconnection <<-EOF
  [connection]
  id=static
  type=ethernet
  autoconnect=true
          
  [ipv4]
  method=manual
  dns=192.168.100.1
  address1=192.168.100.42/24,192.168.100.1
EOF
}
          
if [ "${1-}" = "--prepare" ]; then
  nm_config # Configure NM in the initrd
  exit 0
fi
          
# Redirect output to the console
exec > >(exec tee -a /dev/tty0) 2>&1
          
  nm_config # Configure NM in the system
  curl example.com
# Leave a marker
echo "Configured with combustion" > /etc/issue.d/combustion
4.1.2.1.3 Partitionierung

SLE Micro-Raw-Images werden mit einem standardmäßigen Partitionierungsschema geliefert (siehe Abschnitt 1.1, „Standardpartitionierung“). Bei Bedarf können Sie eine andere Partitionierung verwenden. Mit den folgenden Beispiel-Codeausschnitten wird /home in eine andere Partition verschoben.

Anmerkung
Anmerkung: Änderungen außerhalb der in Snapshots enthaltenen Verzeichnisse

Das folgende Skript nimmt Änderungen vor, die sich nicht in Snapshots befinden. Wenn das Skript fehlschlägt und der Snapshot verworfen wird, bleiben bestimmte Änderungen sichtbar und können nicht rückgängig gemacht werden, zum Beispiel die Änderungen am /dev/vdb-Gerät.

Der folgende Codeausschnitt legt ein GPT-Partitionierungsschema mit einer einzelnen Partition auf dem Gerät /dev/vdb an:

sfdisk /dev/vdb <<EOF
label: gpt
type=linux
EOF

partition=/dev/vdb1

Diese Partition wird für Btrfs formatiert:

wipefs --all ${partition}
mkfs.btrfs ${partition}

Der Inhalt von /home (falls vorhanden) wird mit dem folgenden Codeausschnitt in den neuen Speicherort des Ordners /home verschoben:

mount /home
mount ${partition} /mnt
rsync -aAXP /home/ /mnt/
umount /home /mnt

Das folgende Snippet entfernt einen alten Eintrag in /etc/fstab und erstellt einen neuen Eintrag:

awk -i inplace '$2 != "/home"' /etc/fstab
echo "$(blkid -o export ${partition} | grep ^UUID=) /home btrfs defaults 0 0" >>/etc/fstab
4.1.2.1.4 Erstellen neuer Benutzer

Da einige Dienste, wie z.B. Cockpit, eine Anmeldung mit einem Nicht-Root-Benutzer erfordern, definieren Sie hier mindestens einen Benutzer ohne Rechte. Alternativ können Sie einen solchen Benutzer auch von einem laufenden System aus erstellen, wie in Abschnitt 6.2, „Hinzufügen von Benutzern“ beschrieben.

Zum Hinzufügen eines neuen Benutzerkontos erstellen Sie zunächst eine Hash-Zeichenkette, die das Passwort des Benutzers darstellt. Verwenden Sie dazu das Kommando openssl passwd -6.

Wenn Sie den Passwort-Hash erhalten haben, fügen Sie die folgenden Zeilen der Datei script hinzu:

mount /home
useradd -m EXAMPLE_USER
echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
4.1.2.1.5 Festlegen eines Passworts für root

Bevor Sie das root-Passwort festlegen, generieren Sie einen Hash des Passworts, z. B. mit openssl passwd -6. Zum Festlegen des Passworts fügen Sie die folgende Zeile in script ein:

echo 'root:PASSWORD_HASH' | chpasswd -e
4.1.2.1.6 Hinzufügen von SSH-Schlüsseln

Das folgende Snippet erstellt ein Verzeichnis zum Speichern des SSH-Schlüssels von root und kopiert dann den öffentlichen SSH-Schlüssel, der sich auf dem Konfigurationsgerät befindet, in die Datei authorized_keys.

mkdir -pm700 /root/.ssh/
cat id_rsa_new.pub >> /root/.ssh/authorized_keys
Anmerkung
Anmerkung

Falls Sie die Fernanmeldung über SSH nutzen, muss der SSH-Dienst aktiviert sein. Detaillierte Informationen finden Sie in Abschnitt 4.1.2.1.7, „Aktivieren von Diensten“.

4.1.2.1.7 Aktivieren von Diensten

Zum Aktivieren von Systemdiensten, z. B. des SSH-Dienstes, fügen Sie die folgende Zeile in script ein:

systemctl enable sshd.service
4.1.2.1.8 Installieren von Paketen
Wichtig
Wichtig: Eine Netzwerkverbindung und die Registrierung Ihres Systems können erforderlich sein

Einige Pakete erfordern möglicherweise ein zusätzliches Abonnement. In diesem Fall müssen Sie Ihr System zuvor registrieren. Bei der Installation von zusätzlichen Paketen wird eventuell auch eine verfügbare Netzwerkverbindung benötigt.

Im Rahmen der Konfiguration beim ersten Starten können Sie zusätzliche Pakete auf Ihrem System installieren. Zur Installation des vim-Editors fügen Sie beispielsweise Folgendes ein:

zypper --non-interactive install vim-small
Anmerkung
Anmerkung

Denken Sie daran, dass Sie zypper nicht mehr verwenden können, wenn die Konfiguration abgeschlossen ist und Sie in das konfigurierte System booten. Sollen nachträgliche Änderungen vorgenommen werden, müssen Sie mit dem Befehl transactional-update einen geänderten Snapshot erstellen.

4.1.2.2 Ein vollständiges Beispiel für die Datei script

Im folgenden script finden Sie die vollständigen Einstellungen, die Ihnen als Anleitung für die Erstellung Ihrer eigenen Combustion-Konfiguration dienen können. Das Beispiel erfordert keine weitere Konfiguration von Ignition.

#!/bin/bash
# combustion: network prepare
    
    
set -euxo pipefail
    
## The OSA subchannels to enable
ZNET_SUBCHANNELS=0.0.1000,0.0.1001,0.0.1002
    
## Network information to configure
IPADDRESS="10.144.64.155/24" ## Formet is ipaddress/cidr
GATEWAY="10.144.64.254"
NAMESERVERS="10.144.53.53;10.144.53.54" ## A semicolon-separated list of name servers
    
## Hostname information
NODE_HOSTNAME="micro6"
    
## Add password for root user
## Use either 'openssl passwd -6' or 'mkpasswd --method=sha-512' to encrypt the password.
ROOT_USER_PASSWORD='PASSWORD_HASH'
SSH_ROOT_PUBLIC_KEY=ssh_key.pub
    
## Add a regular user, because root login may be disallowed in some services.
CREATE_NORMAL_USER=user ## Replace the "user" with a desired username here.
NORMAL_USER_PASSWORD='PASSWORD_HASH'
SSH_USER_PUBLIC_KEY=ssh_key.pub
    
## Register to SUSE Customer Center and install additional packages
REG_EMAIL='tux@suse.com' ## Email address for product registration
SLMICRO_REGCODE='REGISTRATIONCODE' ## A registration code required to install additional packages
ADDITIONAL_PACKAGES='' ## A space separated list of additional packages to install
    
    
nm_config() {
  umask 077 # Required for Network Manager configuration
  mkdir -p /etc/NetworkManager/system-connections/
  cat >'/etc/NetworkManager/system-connections/Wired connection 1.nmconnection' <<EOF
  [connection]
    id=static
    type=ethernet
    autoconnect=true
    
    [ipv4]
    method=manual
    address1=$IPADDRESS
    gateway=$GATEWAY
    dns=$NAMESERVERS
  EOF
}
    
if [ "${1-}" = "--prepare" ]; then
    # Configure Network Manager in the initrd
    nm_config
    # Enable OSA network devices
    chzdev qeth $ZNET_SUBCHANNELS -ep
    chzdev qeth $ZNET_SUBCHANNELS -e    
    exit 0
fi
    
    
    
## Post output on stdout
exec > >(exec tee -a /dev/ttyS0) 2>&1
    
## Set hostname
echo $NODE_HOSTNAME > /etc/hostname
    
## Set root password
echo root:$ROOT_USER_PASSWORD | chpasswd -e
## Add ssh public key as authorized key for the root user
mkdir -pm700 /root/.ssh/
cat $SSH_ROOT_PUBLIC_KEY >> /root/.ssh/authorized_keys
    
## Mount /var and /home so user can be created smoothly
if [ "$CREATE_NORMAL_USER" ]
then
  mount /var && mount /home
fi
## User creation
if [ "$CREATE_NORMAL_USER" ]
then
  echo "User creation is requested, creating user."
  useradd -m $CREATE_NORMAL_USER -s /bin/bash -g users
  echo $CREATE_NORMAL_USER:$NORMAL_USER_PASSWORD | chpasswd -e
  echo $CREATE_NORMAL_USER "ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/adminusers
  mkdir -pm700 /home/$CREATE_NORMAL_USER/.ssh/
  chown -R $CREATE_NORMAL_USER:users /home/$CREATE_NORMAL_USER/.ssh/
  cat $SSH_USER_PUBLIC_KEY >> /home/$CREATE_NORMAL_USER/.ssh/authorized_keys
  echo "Requested user has been created, requested password has been set."
else
  echo "No user will be created"
fi
    
# Configure NM in the system
nm_config
# Enable OSA network device
chzdev qeth $ZNET_SUBCHANNELS -ep
chzdev qeth $ZNET_SUBCHANNELS -e
    
## Enable services
echo "Enabling services."
systemctl enable cockpit.socket
systemctl enable sshd
    
## Unmount var and home
if [ "$CREATE_NORMAL_USER" ]
then
  umount /var && umount /home
fi  
    
    
echo "Configured with Combustion at $(date)" > /etc/issue.d/combustion

4.2 Konfigurieren der Bereitstellung von SLE Micro mit Ignition

Mit dem Bereitstellungstool Ignition können Sie ein System beim ersten Starten gemäß Ihrer Spezifikation konfigurieren.

4.2.1 Wie funktioniert Ignition?

Wenn das System zum ersten Mal gebootet wird, wird Ignition als Teil einer initramfs geladen und sucht nach einer Konfigurationsdatei in einem bestimmten Verzeichnis (auf einem USB-Flash- Disk, oder Sie können eine URL angeben). Alle Änderungen werden vorgenommen, bevor der Kernel vom temporären Dateisystem zum echten Root-Dateisystem wechselt (bevor der Befehl switch_root ausgeführt wird).

Ignition nutzt eine Konfigurationsdatei im JSON-Format mit dem Namen config.ign. Sie können die Kombination entweder manuell schreiben oder mit der Anwendung Fuel Ignition Web unter https://ignite.opensuse.org generieren lassen.

Wichtig
Wichtig

Fuel Ignition deckt noch nicht das gesamte Vokabular von Ignition ab, und die resultierende JSON-Datei muss möglicherweise noch manuell angepasst werden.

4.2.1.1 config.ign

Die Konfigurationsdatei config.ign muss sich im ignition-Unterverzeichnis auf dem Konfigurationsmedium befinden, zum Beispiel auf einem USB-Stick mit der Bezeichnung ignition. Die Verzeichnisstruktur muss wie folgt aussehen:

<root directory>
└── ignition
    └── config.ign
Tipp
Tipp

Ein Disk-Image mit der Ignition-Konfiguration können Sie mit der Anwendung Fuel Ignition Web application unter https://ignite.opensuse.org erstellen.

Die Datei config.ign enthält mehrere Datentypen: Objekte, Zeichenketten, Ganzzahlen, Boolesche Werte und Listen von Objekten. Eine vollständige Spezifikation finden Sie unter Ignition specification v3.3.0.

Das Attribut version ist obligatorisch und im Falle von SLE Micro muss sein Wert entweder auf 3.3.0 oder auf eine niedrigere Version festgelegt werden. Ansonsten funktioniert Ignition nicht.

Wenn Sie sich als root bei Ihrem System anmelden möchten, müssen Sie mindestens ein Passwort für root angeben. Es wird allerdings empfohlen, den Zugriff mithilfe von SSH-Schlüsseln einzurichten. Wenn Sie ein Passwort konfigurieren möchten, müssen Sie ein sicheres Passwort verwenden. Falls Sie ein zufällig erzeugtes Passwort heranziehen, muss dieses Passwort mindestens 10 Zeichen enthalten. Wenn Sie Ihr Passwort manuell erstellen, sollten Sie sogar mehr als 10 Zeichen verwenden und Groß- und Kleinbuchstaben sowie Zahlen kombinieren.

4.2.2 Ignition-Konfigurationsbeispiele

4.2.2.1 Konfigurationsbeispiele

In diesem Abschnitt finden Sie einige Beispiele für die Ignition-Konfiguration im integrierten JSON-Format.

Wichtig
Wichtig

Abschnitt 1.1, „Standardpartitionierung“ enthält eine Liste der Subvolumes, die beim Ausführen des vordefinierten Image standardmäßig eingehängt werden. Möchten Sie einen neuen Benutzer hinzufügen oder eine Datei in einem Subvolume ändern, das nicht standardmäßig eingehängt wird, müssen Sie das betreffende Subvolume zunächst deklarieren, sodass es ebenfalls eingehängt wird. Weitere Informationen zum Einhängen von Dateisystemen finden Sie in Abschnitt 4.2.2.1.1.3, „Das Attribut filesystems.

Anmerkung
Anmerkung: Das Attribut version ist obligatorisch

Jede config.fcc muss die Version angeben (1.4.0 oder niedriger), die dann in die entsprechende Ignition-Spezifikation konvertiert wird.

4.2.2.1.1 Speicherkonfiguration

Mit dem Attribut storage können Sie Partitionen und RAID konfigurieren, Dateisysteme definieren, Dateien erstellen usw. Zum Definieren von Partitionen verwenden Sie das Attribut disks. Das Attribut filesystems wird verwendet, um Partitionen zu formatieren und Einhängepunkte für bestimmte Partitionen zu definieren. Mit dem Attribut files können Sie Dateien im Dateisystem erstellen. Die genannten Attribute werden in den nachfolgenden Abschnitten beschrieben.

4.2.2.1.1.1 Das Attribut disks

Das Attribut disks ist eine Liste mit Geräten, sodass Sie Partitionen auf diesen Geräten definieren können. Das Attribut disks muss mindestens ein Gerät (device) enthalten, andere Attribute sind optional. Das folgende Beispiel verwendet ein einzelnes virtuelles Gerät und unterteilt den Datenträger in vier Partitionen:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "disks": [
      {
        "device": "/dev/vda",
        "partitions": [
          {
            "label": "root",
            "number": 1,
            "typeGuid": "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709"
          },
          {
            "label": "boot",
            "number": 2,
            "typeGuid": "BC13C2FF-59E6-4262-A352-B275FD6F7172"
          },
          {
            "label": "swap",
            "number": 3,
            "typeGuid": "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F"
          },
          {
            "label": "home",
            "number": 4,
            "typeGuid": "933AC7E1-2EB4-4F13-B844-0E14E2AEF915"
          }
        ],
        "wipeTable": true
      }
    ]
  }
}
4.2.2.1.1.2 Das Attribut raid

raid ist eine Liste mit RAID-Arrays. Die folgenden Attribute für raid sind obligatorisch:

level

Ebene des jeweiligen RAID-Arrays (linear, raid0, raid1, raid2, raid3, raid4, raid5, raid6)

devices

Liste mit Geräten im Array (anhand ihrer absoluten Pfade referenziert)

name

Name für das md-Gerät

Beispiel:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "raid": [
      {
        "devices": [
          "/dev/sda",
          "/dev/sdb"
        ],
        "level": "raid1",
        "name": "system"
      }
    ]
  }
}
4.2.2.1.1.3 Das Attribut filesystems

filesystems muss die folgenden Attribute enthalten:

Gerät

Absoluter Pfad zum Gerät, bei physischen Festplatten in der Regel /dev/sda

Format

Dateisystemformat (btrfs, ext4, xfs, vfat oder swap)

Anmerkung
Anmerkung

Für SLE Micro muss das root-Dateisystem mit btrfs formatiert werden.

Das folgende Beispiel zeigt die Verwendung des Attributs filesystems. Das Verzeichnis /opt wird in der Partition /dev/sda1 gemountet, die mit btrfs formatiert ist. Das Gerät wird nicht gelöscht.

Beispiel:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/sda1",
        "format": "btrfs",
        "path": "/opt",
        "wipeFilesystem": false
      }
    ]
  }
}

In der Regel befindet sich das Basisverzeichnis eines normalen Benutzers im Verzeichnis /home/USER_NAME. Da /home nicht standardmäßig in initrd eingehängt wird, muss das Einhängen explizit definiert werden, damit der Benutzer erfolgreich erstellt wird:

{
  "ignition": {
    "version": "3.1.0"
  },
  "passwd": {
    "users": [
      {
        "name": "root",
        "passwordHash": "PASSWORD_HASH",
        "sshAuthorizedKeys": [
          "ssh-rsa SSH_KEY_HASH"
        ]
      }
    ]
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/sda3",
        "format": "btrfs",
        "mountOptions": [
          "subvol=/@/home"
        ],
        "path": "/home",
        "wipeFilesystem": false
      }
    ]
  }
}
4.2.2.1.1.4 Das Attribut files

Mit dem Attribut files können Sie beliebige Dateien auf Ihrem Computer erstellen. Falls Sie Dateien außerhalb des standardmäßigen Partitionierungsschemas erstellen möchten, müssen Sie die Verzeichnisse mit dem Attribut filesystems definieren.

Im folgenden Beispiel wird ein Hostname mit dem Attribut files erstellt. Die Datei /etc/hostname wird mit dem Hostnamen sl-micro1 erstellt:

Wichtig
Wichtig

Denken Sie daran, dass JSON Dateimodi in Dezimalzahlen akzeptiert, zum Beispiel 420.

JSON:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "files": [
      {
        "overwrite": true,
        "path": "/etc/hostname",
        "contents": {
          "source": "data:,sl-micro1"
        },
        "mode": 420
      }
    ]
  }
}
4.2.2.1.1.5 Das Attribut directories

Das Attribut directories ist eine Liste mit Verzeichnissen, die im Dateisystem erstellt werden. Das Attribut directories muss mindestens ein Attribut path enthalten.

Beispiel:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "directories": [
      {
        "path": "/home/tux",
        "user": {
          "name": "tux"
        }
      }
    ]
  }
}
4.2.2.1.2 Benutzerverwaltung

Mit dem Attribut passwd können Sie Benutzer hinzufügen. Da einige Dienste, wie z. B. Cockpit, eine Anmeldung mit einem Nicht-Root-Benutzer erfordern, definieren Sie hier mindestens einen Benutzer ohne Rechte. Alternativ können Sie einen solchen Benutzer auch von einem laufenden System aus erstellen, wie in Abschnitt 6.2, „Hinzufügen von Benutzern“ beschrieben.

Erstellen Sie zum Anmelden in Ihrem System root und einen regulären Benutzer und legen Sie deren Passwörter fest. Sie müssen einen Hash für die Passwörter generieren, z. B. mit dem Kommando openssl:

 openssl passwd -6

Der Befehl erstellt einen Hash für das ausgewählte Passwort. Tragen Sie diesen Hash als Wert für das Attribut password_hash ein.

Beispiel:

{
  "ignition": {
    "version": "3.0.0"
  },
  "passwd": {
    "users": [
      {
        "name": "root",
        "passwordHash": "PASSWORD_HASH",
        "sshAuthorizedKeys": [
          "ssh-rsa SSH_KEY_HASH USER@HOST"
        ]
      }
    ]
  }
}

Das Attribut users muss mindestens ein Attribut name enthalten. ssh_authorized_keys ist eine Liste von SSH-Schlüsseln für den Benutzer.

4.2.2.1.3 Aktivieren von systemd-Diensten

Sollen systemd-Dienste aktiviert werden, geben Sie diese Dienste im Attribut systemd an.

Beispiel:

{
  "ignition": {
    "version": "3.0.0"
  },
  "systemd": {
    "units": [
      {
        "enabled": true,
        "name": "sshd.service"
      }
    ]
  }
}
4.2.2.2 Konvertieren von YAML-Dateien in JSON

JSON ist ein universelles Dateiformat zum Speichern strukturierter Daten. Anwendungen, wie z. B. Ignition, verwenden es, um ihre Konfiguration zu speichern und abzurufen. Da die Syntax von JSON komplex und für Menschen schwer zu lesen ist, können Sie die Konfiguration in einem freundlicheren Format namens YAML schreiben und dann in JSON konvertieren.

4.2.2.2.1 Konvertieren von YAML-Dateien in das JSON-Format

Das Werkzeug, mit dem Sie Ignition-spezifische Vokabulare in YAML-Dateien in das JSON-Format konvertieren, heißt butane. Damit wird außerdem die Syntax der YAML-Datei überprüft, sodass eventuelle Fehler in der Struktur erkannt werden. Fügen Sie ein Repository für die neueste Version von butane hinzu:

> sudo  zypper ar -f \
  https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Tumbleweed/ \
  devel_kubic_ignition

Ersetzen Sie openSUSE_Tumbleweed dabei durch eine der folgenden Bezeichnungen (je nach Ihrer Distribution):

  • 'openSUSE_Leap_$releasever'

  • 15.5

Nun können Sie das butane-Tool installieren:

> sudo  zypper ref && zypper in butane

Nach Abschluss der Installation können Sie butane wie folgt aufrufen:

>  butane -p -o config.ign config.fcc
  • config.fcc ist der Pfad der YAML-Konfigurationsdatei.

  • config.ign ist der Pfad der ausgegebenen JSON-Konfigurationsdatei.

  • Die Kommandooption -p fügt der Ausgabedatei Zeilenumbrüche hinzu und macht sie so besser lesbar.

5 Bereitstellen des Raw-Disk-Image auf der DASD-Festplatte

Gehen Sie wie folgt vor, um SLE Micro auf der 20 GB DASD-Festplatte bereitzustellen:

  1. Laden Sie das Raw-Disk-Image mit wget oder curl herunter. Beispiel:

    > curl -L0kO
  2. Extrahieren Sie das Image:

    > unpack xz -d BUILD_IDENTIFICATION.raw.xz
  3. Exportieren Sie eine Variable, die den Namen des 20-GB-Geräts findet und speichert.

    # export SMDASD=$(lsdasd -s | grep 20480MB | tr -s [:blank:] | cut -d' ' -f3)
  4. Formatieren Sie den Datenträger:

    • Wenn der Datenträger zum ersten Mal formatiert wird:

      # dasdfmt -b 4096 -y -p /dev/$SMDASD
    • Wenn der Datenträger zuvor formatiert wurde:

      # dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
  5. Kopieren Sie das Raw-Disk-Image auf die Festplatte (der Gerätename lautet in unserem Fall /dev/dasdc):

    dd if=IMAGE_NAME.raw status=progress  of=/dev/dasdc bs=4k
  6. Fahren Sie das laufende Linux-System herunter:

    # init 0
  7. Starten Sie SLE Micro durch Booten der zweiten DASD-Minidisk in einem x3270-Terminal:

    # ipl 101

6 Schritte nach der Bereitstellung

6.1 Registrieren von SLE Micro über CLI

Wenn Ihr System nicht während des Bereitstellens mit dem Combustion-script registriert wurde, können Sie es vom laufenden System aus registrieren.

Gehen Sie wie folgt vor, um SLE Micro beim SUSE Customer Center zu registrieren:

  1. Führen Sie transactional-update register wie folgt aus:

    # transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESS

    Soll die Registrierung über einen lokalen Registrierungsserver erfolgen, geben Sie zusätzlich die URL des Servers an:

    # transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESS \
     --url "https://suse_register.example.com/"

    Ersetzen Sie REGISTRATION_CODE durch den Registrierungscode, den Sie mit der Version von SLE Micro erhalten haben. Ersetzen Sie EMAIL_ADDRESS durch die E-Mail-Adresse für das SUSE-Konto, mit dem Sie oder Ihr Unternehmen die Abonnements verwalten.

  2. Booten Sie Ihr System neu, um zum neuesten Snapshot zu wechseln.

  3. SLE Micro ist nun registriert.

Anmerkung
Anmerkung: Weitere Möglichkeiten der Registrierung

Informationen, die über den Umfang dieses Abschnitts hinausgehen, finden Sie in der Inline-Dokumentation zu SUSEConnect --help.

6.2 Hinzufügen von Benutzern

Da sich bei SLE Micro ein Benutzer ohne Rechte über SSH anmelden oder auf Cockpit zugreifen muss, müssen Sie ein solches Konto erstellen.

Dieser Schritt ist optional, wenn Sie einen Benutzer ohne Rechte in Combustion definiert haben.

  1. Führen Sie das Kommando useradd wie folgt aus:

    # useradd -m USER_NAME
  2. Legen Sie ein Passwort für dieses Konto fest:

    # passwd USER_NAME
  3. Fügen Sie bei Bedarf den Benutzer zur wheel-Gruppe hinzu:

    # usermod -aG wheel USER_NAME