9 Konfiguration mit Combustion #
In diesem Kapitel wird Combustion beschrieben, das Tool, mit dem Sie Ihr System beim ersten Starten gemäß Ihrer Konfiguration konfigurieren.
9.1 Informationen zu Combustion #
Mit dem dracut-Modul Combustion können Sie Ihr System beim ersten Starten konfigurieren. Combustion liest eine bereitgestellte Datei (script
), führt die Befehle darin aus und nimmt damit Änderungen am Dateisystem vor. Mit Combustion können Sie die Standardpartitionen ändern, die Passwörter der Benutzer festlegen, Dateien erstellen, Pakete installieren usw
Das dracut-Modul Combustion wird aufgerufen, sobald das Argument ignition.firstboot
an die Kernel-Befehlszeile übergeben wird. Combustion liest dann die Konfiguration aus script
. Wenn das Netzwerk-Flag in script
gefunden wird, versucht Combustion, das Netzwerk zu konfigurieren. Sobald /sysroot
eingehängt wurde, versucht Combustion, alle Einhängepunkte in /etc/fstab
zu aktivieren und dann transactional-update
aufzurufen, um weitere Änderungen anzuwenden (z. B. das root
-Passwort festlegen oder Pakete installieren).
Wenn Sie Combustion verwenden, müssen Sie dem Konfigurationsgerät die Kennung combustion
zuweisen, eine bestimmte Verzeichnisstruktur auf diesem Konfigurationsmedium erstellen und die Konfigurationsdatei script
einfügen. Erstellen Sie im Stammverzeichnis des Konfigurationsmediums das Verzeichnis combustion
und platzieren Sie script
zusammen mit anderen Dateien – SSH-Schlüssel, Konfigurationsdateien usw. – in dieses Verzeichnis. Die Verzeichnisstruktur sollte dann wie folgt aussehen:
<root directory> └── combustion └── script └── other files
Mit Combustion können Sie Ihren virtuellen QEMU-/KVM-Computer konfigurieren. In diesem Fall übergeben Sie den Speicherort der Datei script
mithilfe des Parameters fw_cfg
des Befehls qemu
:
-fw_cfg name=opt/org.opensuse.combustion/script,file=/var/combustion-script
Combustion kann zusammen mit Ignition genutzt werden. Wenn Sie dies tun möchten, legen Sie für das Konfigurationsmedium den Namen ignition
fest und nehmen das Verzeichnis ignition
mit der Datei config.ign
wie folgt in die Verzeichnisstruktur auf:
<root directory> └── combustion └── script └── other files └── ignition └── config.ign
In diesem Szenario wird Ignition vor Combustion ausgeführt.
9.2 Die Konfigurationsdatei script
#
Die Konfigurationsdatei script
enthält eine Reihe von Befehlen, die in einer Transaktionsaktualisierungs-Shell auf Ihrem System ausgeführt werden. In diesem Abschnitt finden Sie Beispiele für die Ausführung verschiedener Konfigurationsaufgaben mit Combustion.
Die Datei script
wird mit Bash interpretiert und muss daher die Interpreter-Deklaration in der ersten Zeile enthalten:
#!/bin/bash
Wenn Sie sich bei Ihrem System anmelden möchten, 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. Falls Sie ein zufällig erzeugtes Passwort heranziehen, muss dieses Passwort mindestens 10 Zeichen enthalten. Wenn Sie Ihr Passwort manuell erstellen, verwenden Sie mehr als 10 Zeichen und kombinieren Sie Großbuchstaben, Kleinbuchstaben und Ziffern.
9.2.1 Netzwerkkonfiguration #
Soll die Netzwerkverbindung beim ersten Starten konfiguriert und verwendet werden, fügen Sie die folgende Anweisung in script
ein:
# combustion: network
Diese Anweisung übergibt das Argument rd.neednet=1
an dracut. Wenn Sie die Anweisung nicht angeben, wird das System ohne Netzwerkverbindung konfiguriert.
9.2.2 Partitionierung #
SLE Micro-Raw-Images werden mit einem standardmäßigen Partitionierungsschema geliefert (siehe Abschnitt 5.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 einige Änderungen sichtbar und können nicht rückgängig gemacht werden (z. B. die Änderungen am Gerät /dev/vdb
).
Der folgende Codeausschnitt legt eine GPT 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
Der nachfolgende Codeausschnitt verschiebt 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
9.2.3 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 Folgendes in script
ein:
echo 'root:$5$.wn2BZHlEJ5R3B1C$TAHEchlU.h2tvfOpOki54NaHpGYKwdNhjaBuSpDotD7' | chpasswd -e
9.2.4 Hinzufügen von SSH-Schlüsseln #
Der folgende Codeausschnitt erstellt ein Verzeichnis, in dem der SSH-Schlüssel für root
gespeichert wird, 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 9.2.5, „Aktivieren von Diensten“.
9.2.5 Aktivieren von Diensten #
Sie müssen ggf. bestimmte Dienste aktivieren, z. B. den SSH-Dienst. Zum Aktivieren des SSH-Dienstes fügen Sie die folgende Zeile in script
ein:
systemctl enable sshd.service
9.2.6 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
Sie können zypper
nicht mehr nutzen, sobald Sie die Konfiguration abgeschlossen haben und das konfigurierte System starten. Sollen nachträgliche Änderungen vorgenommen werden, müssen Sie mit dem Befehl transactional-update
einen geänderten Snapshot erstellen. Detaillierte Informationen finden Sie im Chapter 3, Administration using transactional updates.