Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / SUSE Linux Enterprise Micro Documentation / Bereitstellungshandbuch / Bereitstellung von vordefinierten Images / Konfiguration mit Ignition
Gilt für SUSE Linux Enterprise Micro 5.4

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.

8.2 config.ign

config.ign ist eine JSON-Konfigurationsdatei, die Anweisungen für Ignition enthält. Sie können die Datei entweder manuell in JSON erstellen oder das Tool Fuel Ignition (https://ignite.opensuse.org/) verwenden, um einen einfachen Satz von Anweisungen zu generieren. Beachten Sie, dass das Tool Fuel Ignition keinen vollständigen Satz von Optionen bietet, sodass Sie die Datei möglicherweise manuell ändern müssen.

Zur besseren Lesbarkeit für Menschen können Sie die Datei config.fcc auch in YAML erstellen und in JSON transpilieren. Detaillierte Informationen finden Sie in Abschnitt 8.2.2, „Konvertieren einer YAML fcc-Datei in JSON 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 Konfigurationsbeispiele

In diesem Abschnitt finden Sie einige gängige Beispiele für die Ignition-Konfiguration sowohl im JSON- als auch im YAML-Format. Wenn Sie die Konfiguration im YAML-Format erstellen, müssen Sie die Konfiguration in JSON transpilieren, wie in Abschnitt 8.2.2, „Konvertieren einer YAML fcc-Datei in JSON ign beschrieben.

Wichtig
Wichtig: Deklarieren von Inhalt außerhalb der standardmäßigen Subvolumes

Falls Sie Dateien außerhalb von default mounted directories erstellen möchten, müssen Sie die Verzeichnisse mit dem Attribut filesystem definieren.

Anmerkung
Anmerkung: Das Attribut version ist obligatorisch

Schließen Sie die Versionsspezifikation in config.ign (Version 3.3.0 oder niedriger) bzw. in config.fcc (Version 1.4.0 oder niedriger) ein.

8.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. 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.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. Im folgenden Beispiel wird ein einzelnes virtuelles Gerät verwendet und die Festplatte wird in vier Partitionen aufgeteilt:

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

Das gleiche Beispiel im YAML-Format:

variant: fcos
version: 1.4.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.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)

geeignet sind

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

Name

Name für das md-Gerät

      {
    "variant": "fcos",
    "version": "3.3.0",
    "storage": {
        "raid": [
            {
                "name": "system",
                "level": "raid1",
                "devices": [
                    "/dev/sda",
                    "/dev/sdb"
                ]
            }
        ]
    }
}

Das gleiche Beispiel im YAML-Format:

variant: fcos
version: 1.4.0
storage:
  - raid: data
    name: system
    level: raid1
    devices: "/dev/sda", "/dev/sdb"
8.2.1.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)

Anmerkung
Anmerkung

Fü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": "3.3.0",
    "storage": {
        "filesystems": [
            {
                "path": "/opt",
                "device": "/dev/sda1",
                "format": "btrfs",
                "wipe_filesystem": false
            }
        ]
    }
}

Das gleiche Beispiel im YAML-Format:

variant: fcos
version: 1.4.0
storage:
  filesystems:
    - path: /opt
      device: "/dev/sda1"
      format: btrfs
      wipe_filesystem: false
8.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 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.

Anmerkung
Anmerkung: Unterschiedliche Zahlensysteme in JSON und YAML

Beachten Sie, dass JSON das dezimale Zahlensystem verwendet, sodass der mode-Wert der dezimalen Schreibweise der Zugriffsrechte entspricht. Für die oktale Schreibweise sollten Sie in diesem Fall YAML verwenden.

{
    "variant": "fcos",
    "version": "3.3.0",
    "storage": {
        "files": [
            {
                "path": "/etc/hostname",
                "mode": 420,
                "overwrite": true,
                "contents": {
                    "inline": "slemicro-1"
                }
            }
        ]
    }
}

Das gleiche Beispiel in YAML:

variant: fcos
version: 1.4.0
storage:
  files:
    - path: /etc/hostname
      mode: 0644
      overwrite: true
      contents:
        inline: "slemicro-1"
8.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.

{
    "variant": "fcos",
    "version": "3.3.0",
    "storage": {
        "directories": [
            {
                "path": "/mnt/backup",
                "user": {
                    "name": "tux"
                }
            }
        ]
    }
}

Das gleiche Beispiel in YAML:

variant: fcos
version: 1.4.0
storage:
  directories:
    - path: /mnt/backup
      user: 
       - name: tux

8.2.1.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.

Anmerkung
Anmerkung: Erstellen anderer Benutzer als root

Wenn Sie andere Benutzer als root erstellen, müssen Sie /home-Verzeichnisse für die Benutzer definieren, da diese Verzeichnisse (in der Regel /home/USER_NAME) nicht standardmäßig eingehängt werden. Deklarieren Sie daher diese Verzeichnisse mit dem Attribut storage/filesystem. Für „tux“ sieht das Beispiel folgendermaßen aus:

        {
  "ignition": {
    "version": "3.2.0"
  },
  "passwd": {
    "users": [
      {
        "name": "tux",
        "passwordHash": "$2a$10$US9XSqLOqMmGq/OnhlVjPOwuZREh2.iEtlwD5LI7DKgV24NJU.wO6"
      }
    ]
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/disk/by-label/ROOT",
        "format": "btrfs",
        "mountOptions": [
          "subvol=/@/home"
        ],
        "path": "/home",
        "wipeFilesystem": false
      }
    ]
  }
}

Das gleiche Beispiel in YAML:

version: 1.2.0
passwd:
  users:
    - name: tux
      passwordHash: $2a$10$US9XSqLOqMmGq/OnhlVjPOwuZREh2.iEtlwD5LI7DKgV24NJU.wO6
storage:
  filesystems:
    - device: /dev/disk/by-label/ROOT
      format: btrfs
      mountOptions:
        - subvol=/@/home
      path: /home
      wipeFilesystem: false

8.2.1.3 Aktivieren von systemd-Diensten

Sollen systemd-Dienste aktiviert werden, geben Sie diese Dienste im Attribut systemd an. name muss den genauen Namen des zu aktivierenden Dienstes enthalten (mit Suffix).

variant: fcos
version: 1.0.0
systemd:
  units:
  - name: sshd.service
    enabled: true
  {
  "ignition": {
    "version": "3.0.0"
  },
  "systemd": {
    "units": [
      {
        "enabled": true,
        "name": "sshd.service"
      }
    ]
  }
}

Das gleiche Beispiel in YAML:

variant: fcos
version: 1.0.0
systemd:
  units:
  - name: sshd.service
    enabled: true

8.2.2 Konvertieren einer YAML fcc-Datei in JSON ign

Soll die Ignition-Konfiguration leichter für Menschen lesbar sein, können Sie eine zweiphasige Konfiguration verwenden. 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.a

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-Konfigurationsdatei

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

  • Mit der Befehlsoption -p können Sie Zeilenumbrüche in die Ausgabedatei einfügen und damit die Lesbarkeit der Datei erhöhen.