linux-system-roles.storage

Linux Speicherrolle

ansible-lint.yml ansible-test.yml codeql.yml markdownlint.yml python-unit-test.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml

Diese Rolle ermöglicht es Benutzern, lokalen Speicher mit minimalem Aufwand zu konfigurieren.

Aktuell unterstützt die Rolle das Verwalten von Dateisystemen und Einhängepunkten auf

  • Festplatten
  • LVM-Volume-Gruppen
  • Stratis-Pools

Verschlüsselung (mit LUKS) und RAID (mit MD) werden ebenfalls unterstützt. Die Unterstützung für die Verwaltung vorhandener Geräte ist begrenzt, aber neue LVM-Volumes und Stratis-Dateisysteme können zu bestehenden Setups und Einhängepunkten hinzugefügt werden, und einige andere Funktionen können zu bestehenden Geräten hinzugefügt oder von ihnen entfernt werden.

Anforderungen

Siehe unten

Sammlungsvoraussetzungen

Die Rolle benötigt externe Sammlungen. Verwenden Sie den folgenden Befehl, um sie zu installieren:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Rollenvariablen

HINWEIS: Ab Version 1.3.0 werden nicht angegebene Parameter unterschiedlich für bestehende und nicht bestehende Pools/Volumes interpretiert. Für neue/nicht vorhandene Pools und Volumes verwenden alle ausgelassenen Parameter den Standardwert, wie in defaults/main.yml beschrieben. Für bestehende Pools und Volumes erben ausgelassene Parameter die bereits vorhandene Einstellung des Pools oder Volumes. Das bedeutet, dass Sie, um die Standardwerte der Rolle in einem bestehenden Pool oder Volume zu ändern/zu überschreiben, die neuen Werte/Einstellungen in den Rollenvariablen ausdrücklich angeben müssen.

storage_pools

Die Variable storage_pools ist eine Liste von Pools, die verwaltet werden sollen. Jeder Pool enthält eine verschachtelte Liste von volume-Dictionaries, wie unten beschrieben, sowie die folgenden Schlüssel:

  • name

    Dies gibt den Namen des zu verwaltenden bzw. zu erstellenden Pools als Zeichenfolge an. (Ein Beispiel für einen Pool ist eine LVM-Volume-Gruppe.)

  • type

    Dies gibt den Typ des zu verwaltenden Pools an. Gültige Werte für type: lvm, stratis.

  • state

    Gültige Werte sind present (Standardverhalten) oder absent. Pools, die als absent markiert sind, werden von der Rolle entfernt. Pools, die als present markiert sind, werden entweder erstellt (wenn ein Pool mit dem angegebenen name noch nicht existiert) oder erhalten.

  • grow_to_fill

    Wenn gesetzt, werden die physischen Volumes des Pools auf die jeweiligen Gerätgrößen angepasst. (z.B. nach einer Erhöhung der Festplattengröße einer virtuellen Maschine)

    Standard: false

    HINWEIS: Dieses Argument ist nur für LVM-Pools gültig.

  • shared

    Wenn auf true gesetzt, erstellt oder verwaltet die Rolle eine gemeinsame Volume-Gruppe. Erfordert, dass die Dienste lvmlockd und dlm konfiguriert und aktiv sind.

    Standard: false

    WARNUNG: Das Ändern des Werts shared für einen bestehenden Pool ist eine destruktive Operation. Der Pool selbst wird im Rahmen des Prozesses entfernt.

    HINWEIS: Dieses Argument ist nur für LVM-Pools gültig.

  • disks

    Eine Liste, die die Menge an Festplatten angibt, die als unterstützender Speicher für den Pool verwendet werden sollen. Unterstützte Bezeichner sind: Gerätenamen (wie /dev/sda oder /dev/mapper/mpathb), Gerätename ohne Präfix (wie sda oder mpathb), /dev/disk/ Symlink (wie /dev/disk/by-id/wwn-0x5000c5005bc37f3f).

    Für LVM-Pools kann dies auch zum Hinzufügen und Entfernen von Festplatten zu/von einem vorhandenen Pool verwendet werden. Festplatten in der Liste, die nicht vom Pool verwendet werden, werden zum Pool hinzugefügt. Festplatten, die aktuell vom Pool verwendet werden, aber nicht in der Liste enthalten sind, werden nur entfernt, wenn storage_safe_mode auf false gesetzt ist.

  • raid_level

    Wenn mit type: lvm verwendet, verwaltet es eine Volume-Gruppe mit einem mdraid-Array des angegebenen Levels. Die eingegebenen disks werden in diesem Fall als RAID-Elemente verwendet. Akzeptierte Werte sind: linear, raid0, raid1, raid4, raid5, raid6, raid10

  • volumes

    Dies ist eine Liste von Volumes, die zum aktuellen Pool gehören. Sie folgt dem gleichen Muster wie die Variable storage_volumes, die weiter unten erklärt wird.

  • encryption

    Dies gibt an, ob der Pool mit LUKS verschlüsselt wird. WARNUNG: Das Umschalten der Verschlüsselung für einen Pool ist eine destruktive Operation, was bedeutet, dass der Pool im Rahmen des Prozesses der Hinzufügung/Entfernung der Verschlüsselungsschicht entfernt wird.

  • encryption_password

    Diese Zeichenfolge gibt ein Passwort oder einen Passphrase an, das verwendet wird, um das LUKS-Volume(s) zu entsperren/öffnen.

  • encryption_key

    Diese Zeichenfolge gibt den vollständigen Pfad zur Schlüsseldatei auf den verwalteten Knoten an, die verwendet wird, um die LUKS-Volume(s) zu entsperren. Es liegt in der Verantwortung des Benutzers dieser Rolle, diese Datei sicher auf die verwalteten Knoten zu kopieren oder anderweitig sicherzustellen, dass die Datei auf den verwalteten Knoten vorhanden ist.

  • encryption_cipher

    Diese Zeichenfolge gibt einen nicht-standardmäßigen Chiffrieralgorithmus an, der von LUKS verwendet werden soll.

  • encryption_key_size

    Diese Ganzzahl gibt die Größe des LUKS-Schlüssels (in Bytes) an.

  • encryption_luks_version

    Diese Ganzzahl gibt die zu verwendende LUKS-Version an.

  • encryption_clevis_pin

    Für Stratis-Pools gibt dies die clevis-Methode an, die zur Verschlüsselung des erstellten Pools verwendet werden sollte. Akzeptierte Werte sind: tang und tpm2

  • encryption_tang_url

    Beim Erstellen eines Stratis-Pools, der über NBDE mit einem Tang-Server verschlüsselt ist, gibt dies die URL des Servers an.

  • encryption_tang_thumbprint

    Beim Erstellen eines Stratis-Pools, der über NBDE mit einem Tang-Server verschlüsselt ist, gibt dies den Fingerabdruck des Servers an.

storage_volumes

Die Variable storage_volumes ist eine Liste von Volumes, die verwaltet werden sollen. Jedes Volume hat die folgenden Variablen:

  • name

    Dies gibt den Namen des Volumes an.

  • type

    Dies gibt den Typ des Volumes an, auf dem das Dateisystem reside. Gültige Werte für type: lvm, disk, partition oder raid. Der Standardwert wird anhand des Betriebssystems und der Version bestimmt (aktuell lvm).

    HINWEIS: Die Unterstützung für die Verwaltung von Partition-Volumes ist derzeit sehr begrenzt; die Rolle erlaubt nur die Erstellung einer einzelnen Partition, die die gesamte Festplatte umspannt.

  • state

    Gültige Werte sind present (Standardverhalten) oder absent. Volumes, die als absent markiert sind, werden von der Rolle entfernt. Volumes, die als present markiert sind, werden entweder erstellt (wenn ein Volume mit dem angegebenen Namen noch nicht existiert) oder erhalten und möglicherweise angepasst, um den anderen Werten zu entsprechen (zum Beispiel, wenn ein Volume mit dem angegebenen Namen existiert, aber nicht die erforderliche Größe hat, wird es, wenn möglich, angepasst).

  • disks

    Dies gibt die Menge an Festplatten an, die als unterstützender Speicher für das Dateisystem verwendet werden sollen. Dies ist derzeit nur für Volumes vom Typ disk relevant, wo die Liste nur einen einzelnen Eintrag enthalten muss.

  • size

    Die size gibt die Größe des Dateisystems an. Das Format ist darauf ausgelegt, menschenlesbar zu sein, z.B.: "10g", "50 GiB". Die Größe von LVM-Volumes kann als Prozentsatz der Pool/VG-Größe angegeben werden, z.B.: "50%" ab Version 1.4.2.

    Bei Verwendung von compression oder deduplication kann size höher eingestellt werden als tatsächlich verfügbaren Speicherplatz, z.B.: 3 Mal die Größe des Volumes, basierend auf Redundanz und/oder Komprimierbarkeit der gespeicherten Daten.

    HINWEIS: Die angeforderte Volumengröße kann nach Bedarf reduziert werden, damit das Volume in den verfügbaren Poolplatz passt, jedoch nur, wenn die erforderliche Reduzierung nicht mehr als 2 % der angeforderten Volumengröße beträgt.

  • fs_type

    Dies gibt den gewünschten Dateisystemtyp an, z. B.: "xfs", "ext4", "swap". Der Standardwert wird anhand des Betriebssystems und der Version bestimmt (aktuell xfs für alle unterstützten Systeme). Verwenden Sie "unformatted", wenn Sie kein Dateisystem wünschen. WARNUNG: Die Verwendung des Typs "unformatted" auf einem vorhandenen Dateisystem ist eine destruktive Operation und zerstört alle Daten auf dem Volume.

  • fs_label

    Die fs_label ist eine Zeichenfolge, die als Dateisystembezeichnung verwendet werden soll.

  • fs_create_options

    Die fs_create_options gibt benutzerdefinierte Argumente für mkfs als Zeichenfolge an.

  • mount_point

    Der mount_point gibt das Verzeichnis an, auf dem das Dateisystem eingehängt wird.

  • mount_options

    Die mount_options gibt benutzerdefinierte Einhängeoptionen als Zeichenfolge an, z.B.: 'ro'.

  • mount_user

    Der mount_user gibt den gewünschten Eigentümer des Einhängeverzeichnisses an.

  • mount_group

    Der mount_group gibt die gewünschte Gruppe des Einhängeverzeichnisses an.

  • mount_mode

    Der mount_mode gibt die gewünschten Berechtigungen des Einhängeverzeichnisses an.

  • raid_level

    Gibt den RAID-Level an. LVM RAID kann ebenfalls erstellt werden. "Reguläres" RAID-Volume erfordert den Typ raid. LVM RAID benötigt, dass das Volume einen Elternteil mit storage_pools vom Typ lvm hat, raid_disks müssen ebenfalls angegeben werden. Akzeptierte Werte sind:

    • für LVM RAID-Volume: raid0, raid1, raid4, raid5, raid6, raid10, striped, mirror
    • für RAID-Volume: linear, raid0, raid1, raid4, raid5, raid6, raid10

    WARNUNG: Das Ändern des raid_level für ein Volume ist eine destruktive Operation, was bedeutet, dass alle Daten auf diesem Volume im Rahmen des Prozesses entfernt werden.

  • raid_device_count

    Wenn der Typ raid angegeben ist, gibt dies die Anzahl der aktiven RAID-Geräte an.

  • raid_spare_count

    Wenn der Typ raid angegeben ist, gibt dies die Anzahl der Ersatz-RAID-Geräte an.

  • raid_metadata_version

    Wenn der Typ raid angegeben ist, gibt dies die RAID-Metadatenversion als Zeichenfolge an, z.B.: '1.0'.

  • raid_chunk_size

    Wenn der Typ raid angegeben ist, bestimmt dies die RAID-Chunksgröße als Zeichenfolge, z.B.: '512 KiB'. Die Chunkgröße muss ein Vielfaches von 4 KiB sein.

  • raid_stripe_size

    Wenn der Typ lvm angegeben ist, gibt dies die LVM-RAID-Streifenbreite als Zeichenfolge an, z.B.: '512 KiB'.

  • raid_disks

    Gibt an, welche Festplatten für das LVM-RAID-Volume verwendet werden sollen. raid_level muss angegeben werden, und das Volume muss einen Elternteil mit storage_pools vom Typ lvm haben. Akzeptiert eine Unterliste von disks des übergeordneten storage_pools. Im Falle mehrerer LVM-RAID-Volumes innerhalb desselben Speicherspools kann dieselbe Festplatte in mehreren raid_disks verwendet werden.

  • encryption

    Dies gibt an, ob das Volume mit LUKS verschlüsselt wird. WARNUNG: Das Umschalten der Verschlüsselung für ein Volume ist eine destruktive Operation, das bedeutet, dass alle Daten auf diesem Volume im Rahmen des Prozesses der Hinzufügung/Entfernung der Verschlüsselungsschicht entfernt werden.

  • encryption_password

    Diese Zeichenfolge gibt ein Passwort oder eine Passphrase an, die verwendet wird, um das LUKS-Volume zu entsperren/öffnen.

  • encryption_key

    Diese Zeichenfolge gibt den vollständigen Pfad zur Schlüsseldatei auf den verwalteten Knoten an, die verwendet wird, um die LUKS-Volumes zu entsperren. Es liegt in der Verantwortung des Benutzers dieser Rolle, diese Datei sicher auf die verwalteten Knoten zu kopieren oder anderweitig sicherzustellen, dass die Datei auf den verwalteten Knoten vorhanden ist.

  • encryption_cipher

    Diese Zeichenfolge gibt einen nicht-standardmäßigen Chiffrieralgorithmus an, der von LUKS verwendet werden soll.

  • encryption_key_size

    Diese Ganzzahl gibt die Größe des LUKS-Schlüssels (in Bits) an.

  • encryption_luks_version

    Diese Ganzzahl gibt die LUKS-Version an, die verwendet werden soll.

  • deduplication

    Dies gibt an, ob der Virtual Data Optimizer (VDO) verwendet wird. Wenn gesetzt, wird redundant gespeicherte Daten auf dem Speichervolumen dedupliziert, was zu mehr Speicherkapazität führt. Kann zusammen mit compression und vdo_pool_size verwendet werden. Das Volume muss Teil des LVM storage_pool sein. Es ist ein VDO storage_volume pro storage_pool erlaubt. Das zugrunde liegende Volume muss mindestens 9 GB groß sein (das Minimum liegt bei etwa 5 GiB).

  • compression

    Dies gibt an, ob der Virtual Data Optimizer (VDO) verwendet wird. Wenn gesetzt, werden die Daten, die auf dem Speichervolumen gespeichert sind, komprimiert, was zu mehr Speicherkapazität führt. Das Volume muss Teil des LVM storage_pool sein. Kann zusammen mit deduplication und vdo_pool_size verwendet werden. Es ist ein VDO storage_volume pro storage_pool erlaubt.

  • vdo_pool_size

    Wenn der Virtual Data Optimizer (VDO) verwendet wird, gibt dies die tatsächliche Größe an, die das Volume auf dem Gerät belegen wird. Die virtuelle Größe des VDO-Volumes wird durch den size-Parameter festgelegt. Das Format von vdo_pool_size ist so gestaltet, dass es menschenlesbar ist, z.B.: "30g", "50GiB". Der Standardwert entspricht der Größe des Volumes.

  • cached

    Dies gibt an, ob das Volume zwischengespeichert werden soll oder nicht. Dies wird derzeit nur für LVM-Volumes unterstützt, bei denen dm-cache verwendet wird.

  • cache_size

    Größe des Caches. Das Format von cache_size ist so gestaltet, dass es menschenlesbar ist, z.B.: "30g", "50GiB".

  • cache_mode

    Modus für den Cache. Unterstützte Werte sind writethrough (Standard) und writeback.

  • cache_devices

    Liste von Geräten, die für den Cache verwendet werden sollen. Dies sollten entweder physische Volumes oder Laufwerke sein, auf denen diese physischen Volumes zugewiesen sind. Im Allgemeinen sollten Sie schnelle Geräte wie SSDs oder NVMe-Laufwerke für den Cache auswählen.

  • thin

    Ob das Volume dünn bereitgestellt werden soll oder nicht. Dies wird nur für LVM-Volumes unterstützt.

  • thin_pool_name

    Für thin-Volumes kann dies verwendet werden, um den Namen des LVM-Thin-Pools anzugeben, der für das Volume verwendet wird. Wenn der Pool mit dem angegebenen Namen bereits existiert, wird das Volume diesem Pool hinzugefügt. Wenn er nicht existiert, wird ein neuer Pool mit dem Namen thin_pool_name erstellt. Wenn nicht angegeben:

    • wenn keine vorhandenen Thin-Pools vorhanden sind, wird ein neuer Thin-Pool mit einem automatisch generierten Namen erstellt,
    • wenn genau ein vorhandener Thin-Pool vorhanden ist, wird das Thin-Volume hinzugefügt, und
    • wenn mehrere Thin-Pools vorhanden sind, wird eine Ausnahme ausgelöst.
  • thin_pool_size

    Größe für den Thin-Pool. Das Format von thin_pool_size ist so gestaltet, dass es menschenlesbar ist, z.B.: "30g", "50GiB".

storage_safe_mode

Wenn wahr (Standard), tritt ein Fehler auf, anstatt vorhandene Geräte und/oder Formatierungen automatisch zu entfernen.

storage_udevadm_trigger

Wenn wahr (Standard ist falsch), verwendet die Rolle udevadm trigger, um zu bewirken, dass udev-Änderungen sofort wirksam werden. Dies kann auf einigen Plattformen mit „fehlerhaftem“ udev helfen.

Beispiel-Playbook

- name: Speicher verwalten
  hosts: all
  roles:
    - name: linux-system-roles.storage
      storage_pools:
        - name: app
          disks:
            - sdb
            - sdc
          volumes:
            - name: shared
              size: "100 GiB"
              mount_point: "/mnt/app/shared"
              #fs_type: xfs
              state: present
            - name: users
              size: "400g"
              fs_type: ext4
              mount_point: "/mnt/app/users"
      storage_volumes:
        - name: images
          type: disk
          disks: ["mpathc"]
          mount_point: /opt/images
          fs_label: images

rpm-ostree

Siehe README-ostree.md

Lizenz

MIT

Installieren
ansible-galaxy install linux-system-roles.storage
Lizenz
mit
Downloads
96.2k