Bereitstellen von SLE Micro mit Raw-Disk-Images auf IBM Z DASD-Datenträgern
- 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.
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.
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.
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“.
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.
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:
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 noAktivieren Sie die Datenträger mit dem Kommando:
#
chzdev -e DISK_IDZum Beispiel zum Aktivieren des Datenträgers
0.0.0101
:#
chzdev -e 0.0.0101Vergewissern Sie sich, dass die Datenträger in der Ausgabe des Kommandos
lsdasd
aktiv sind.
4 Vorbereiten des Konfigurationsdatenträgers #
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:
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 1310760In 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 vonBus-ID
oder die Größe des Datenträgers, da sich der Gerätename (/dev/dasdX
) nach jedem Neustart ändern kann.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/dasdbErstellen Sie eine Partition:
#
parted /dev/dasdb mkpart ext2 0% 100%Formatieren Sie die Partition:
#
mkfs.ext4 /dev/dasdb1Bezeichnen Sie die Partition als
ignition
:#
e2label /dev/dasdb1 ignitionÜberprüfen Sie das Dateisystem:
#
blkidHängen Sie die Partition ein:
#
mount /dev/dasdb1 /mntBereiten Sie die Verzeichnisstruktur für Ignition und/oder Combustion vor. Für Ignition:
#
mkdir -p /mnt/ignitionFür Combustion:
#
mkdir -p /mnt/combustionKopieren Sie Ihren öffentlichen SSH-Schlüssel in
/mnt/combustion
alsssh_key.pub
.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
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.
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.
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
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 #
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
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.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.
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
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.
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
“.
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)
AnmerkungFü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:
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:
Laden Sie das Raw-Disk-Image mit
wget
odercurl
herunter. Beispiel:>
curl -L0kOExtrahieren Sie das Image:
>
unpack xz -d BUILD_IDENTIFICATION.raw.xzExportieren 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)Formatieren Sie den Datenträger:
Wenn der Datenträger zum ersten Mal formatiert wird:
#
dasdfmt -b 4096 -y -p /dev/$SMDASDWenn der Datenträger zuvor formatiert wurde:
#
dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
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
Fahren Sie das laufende Linux-System herunter:
#
init 0Starten 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:
Führen Sie
transactional-update register
wie folgt aus:#
transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESSSoll 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.
Booten Sie Ihr System neu, um zum neuesten Snapshot zu wechseln.
SLE Micro ist nun registriert.
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.
Führen Sie das Kommando
useradd
wie folgt aus:#
useradd -m USER_NAME
Legen Sie ein Passwort für dieses Konto fest:
#
passwd USER_NAMEFügen Sie bei Bedarf den Benutzer zur
wheel
-Gruppe hinzu:#
usermod -aG wheel USER_NAME
7 Rechtliche Hinweise #
Copyright © 2006– 2024 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie in Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.