8 Konfiguration mit Ignition #
In diesem Abschnitt finden Sie Informationen zum Bereitstellungstool Ignition, mit dem ein Computer eingerichtet wird. Hier erfahren Sie, wie Sie die erforderlichen Konfigurationsdateien für die Computerdefinition bereitstellen.
8.1 Informationen zu Ignition #
Mit dem Bereitstellungstool Ignition können Sie ein System beim ersten Starten gemäß Ihrer Spezifikation konfigurieren. Wenn das System erstmalig gestartet wird, wird Ignition als Teil von initramfs
geladen und sucht eine Konfigurationsdatei in einem bestimmten Verzeichnis (auf einem USB-Speicherstick; alternativ können Sie 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. Die Datei trägt den Namen config.ign
. Zur besseren Lesbarkeit für Menschen können Sie eine YAML-Datei erstellen und diese Datei in JSON konvertieren. Detaillierte Informationen finden Sie in Abschnitt 8.2.1, „Konvertieren einer YAML fcc
-Datei in JSON ign
“.
8.2 config.ign
#
Bei der Installation auf einem Bare-Metal-System muss sich die Konfigurationsdatei config.ign
im Unterverzeichnis ignition
auf dem Konfigurationsmedium mit der Bezeichnung ignition
befinden. Die Verzeichnisstruktur muss wie folgt aussehen:
<root directory> └── ignition └── config.ign
Falls Sie einen virtuellen QEMU-/KVM-Computer konfigurieren möchten, geben Sie den Pfad zur Datei config.ign
als Attribut des Befehls qemu
an. Beispiel:
-fw_cfg name=opt/com.coreos/config,file=PATH_TO_config.ign
Die Datei config.ign
enthält verschiedene Datentypen – Objekte, Zeichenketten, Ganzzahlen, boolesche Werte und Objektlisten. Eine vollständige Spezifikation finden Sie unter Ignition
specification v3.3.0.
Das Attribut version
ist obligatorisch und muss bei SLE Micro entweder auf 3.3.0
oder auf eine beliebige niedrigere Version eingestellt 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, verwenden Sie mehr als 10 Zeichen und kombinieren Sie Großbuchstaben, Kleinbuchstaben und Ziffern.
8.2.1 Konvertieren einer YAML fcc
-Datei in JSON ign
#
Soll die Ignition-Konfiguration leichter für Menschen lesbar sein, können Sie eine zweiphasige Konfiguration verfolgen. Bereiten Sie zunächst die Konfiguration in YAML als fcc
-Datei vor und transpilieren Sie diese Konfiguration dann nach JSON. Die Transpilation kann mit dem butane
-Tool vorgenommen werden.
Während der Transpilation überprüft butane
außerdem die Syntax der YAML-Datei, sodass eventuelle Fehler in der Struktur erkannt werden. Fügen Sie ein Repository für die neueste Version des butane
-Tools hinzu:
>
sudo
zypper ar -f \ https://download.opensuse.org/repositories/devel:/kubic:/ignition/DISTRIBUTION/ \ devel_kubic_ignition
DISTRIBUTION entspricht dabei einer der folgenden Bezeichnungen (je nach Ihrer Distribution):
openSUSE_Tumbleweed
openSUSE_Leap_$release_number
15.3
Nun können Sie das butane
-Tool installieren:
>
sudo
zypper in butane
Nun können Sie butane
mit folgendem Befehl aufrufen:
>
butane -p -o config.ign config.fcc
mit folgenden Bedeutungen
config.fcc
ist der Pfad der YAML-Konfigurationsdateiconfig.ign
ist der Pfad der ausgegebenen JSON-KonfigurationsdateiMit der Befehlsoption
-p
können Sie Zeilenumbrüche in die Ausgabedatei einfügen und damit die Lesbarkeit der Datei erhöhen.
8.2.2 YAML-Konfigurationsbeispiele #
In diesem Abschnitt finden Sie einige gängige Beispiele für die Ignition-Konfiguration im YAML-Format.
version
ist obligatorisch
Jede config.fcc
muss die Version angeben (1.4.0 oder niedriger), die dann in die entsprechende Ignition-Spezifikation konvertiert wird.
8.2.2.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
. Mit dem Attribut filesystem
können Sie Partitionen formatieren und Einhängepunkte bestimmter Partitionen definieren. Mit dem Attribut files
können Sie Dateien im Dateisystem erstellen. Die genannten Attribute werden in den nachfolgenden Abschnitten beschrieben.
8.2.2.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. Im folgenden Beispiel wird ein einzelnes virtuelles Gerät verwendet und die Festplatte wird in vier Partitionen aufgeteilt:
variant: fcos version: 1.0.0 storage: disks: - device: "/dev/vda" wipeTable: true 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
8.2.2.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)
- geeignet sind
Liste mit Geräten im Array (anhand ihrer absoluten Pfade referenziert)
- Name
Name für das md-Gerät
variant: fcos version: 1.0.0 storage: - raid: data name: system level: raid1 devices: "/dev/sda", "/dev/sdb"
8.2.2.1.3 Das Attribut filesystem
#
filesystem
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 filesystem
. Das Verzeichnis /opt
wird in die Partition /dev/sda1
eingehängt, die mit btrfs formatiert ist. Die Partitionstabelle wird nicht gelöscht.
variant: fcos version: 1.0.0 storage: filesystems: - path: /opt device: "/dev/sda1" format: btrfs wipe_filesystem: false
8.2.2.1.4 Das Attribut files
#
Mit dem Attribut files
können Sie beliebige Dateien auf Ihrem Computer erstellen. Falls Sie Dateien außerhalb von default mounted directories erstellen möchten, müssen Sie die Verzeichnisse mit dem Attribut filesystem
definieren.
Im folgenden Beispiel wird ein Hostname mit dem Attribut files
erstellt. Die Datei /etc/hostname
wird mit dem Hostnamen slemicro-1 erstellt:
variant: fcos version: 1.0.0 storage: files: - path: /etc/hostname mode: 0644 overwrite: true contents: inline: "slemicro-1"
8.2.2.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.
variant: fcos version: 1.0.0 storage: directories: - path: /home/tux/ user: - name: tux
8.2.2.2 Benutzerverwaltung #
Mit dem Attribut passwd
können Sie Benutzer hinzufügen. Wenn Sie sich bei Ihrem System anmelden möchten, erstellen Sie root
und legen Sie das root
-Passwort fest und/oder fügen Sie den SSH-Schlüssel in die Ignition-Konfiguration ein. Sie müssen einen Hash für das root
-Passwort generieren, z. B. mit dem Befehl 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.
variant: fcos version: 1.0.0 passwd: users: - name: root password_hash: "$6$PfKm6Fv5WbqOvZ0C$g4kByYM.D2B5GCsgluuqDNL87oeXiHqctr6INNNmF75WPGgkLn9O9uVx4iEe3UdbbhaHbTJ1vpZymKWuDIrWI1" ssh_authorized_keys: - ssh-rsa long...key 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.
8.2.2.3 Aktivieren von systemd
-Diensten #
Sollen systemd
-Dienste aktiviert werden, geben Sie diese Dienste im Attribut systemd
an.
variant: fcos version: 1.0.0 systemd: units: - name: sshd.service enabled: true
name
muss den genauen Namen des zu aktivierenden Dienstes enthalten (mit Suffix).