linux-system-roles.storage
Linux Speicherrolle
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:
nameDies gibt den Namen des zu verwaltenden bzw. zu erstellenden Pools als Zeichenfolge an. (Ein Beispiel für einen Pool ist eine LVM-Volume-Gruppe.)
typeDies gibt den Typ des zu verwaltenden Pools an. Gültige Werte für
type:lvm,stratis.stateGültige Werte sind
present(Standardverhalten) oderabsent. Pools, die alsabsentmarkiert sind, werden von der Rolle entfernt. Pools, die alspresentmarkiert sind, werden entweder erstellt (wenn ein Pool mit dem angegebenennamenoch nicht existiert) oder erhalten.grow_to_fillWenn 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:
falseHINWEIS: Dieses Argument ist nur für LVM-Pools gültig.
sharedWenn auf
truegesetzt, erstellt oder verwaltet die Rolle eine gemeinsame Volume-Gruppe. Erfordert, dass die Dienste lvmlockd und dlm konfiguriert und aktiv sind.Standard:
falseWARNUNG: Das Ändern des Werts
sharedfü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.
disksEine 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/sdaoder/dev/mapper/mpathb), Gerätename ohne Präfix (wiesdaodermpathb), /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_modeauffalsegesetzt ist.raid_levelWenn mit
type: lvmverwendet, verwaltet es eine Volume-Gruppe mit einem mdraid-Array des angegebenen Levels. Die eingegebenendiskswerden in diesem Fall als RAID-Elemente verwendet. Akzeptierte Werte sind:linear,raid0,raid1,raid4,raid5,raid6,raid10volumesDies 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.encryptionDies 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_passwordDiese Zeichenfolge gibt ein Passwort oder einen Passphrase an, das verwendet wird, um das LUKS-Volume(s) zu entsperren/öffnen.
encryption_keyDiese 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_cipherDiese Zeichenfolge gibt einen nicht-standardmäßigen Chiffrieralgorithmus an, der von LUKS verwendet werden soll.
encryption_key_sizeDiese Ganzzahl gibt die Größe des LUKS-Schlüssels (in Bytes) an.
encryption_luks_versionDiese Ganzzahl gibt die zu verwendende LUKS-Version an.
encryption_clevis_pinFür Stratis-Pools gibt dies die clevis-Methode an, die zur Verschlüsselung des erstellten Pools verwendet werden sollte. Akzeptierte Werte sind:
tangundtpm2encryption_tang_urlBeim Erstellen eines Stratis-Pools, der über NBDE mit einem Tang-Server verschlüsselt ist, gibt dies die URL des Servers an.
encryption_tang_thumbprintBeim 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:
nameDies gibt den Namen des Volumes an.
typeDies gibt den Typ des Volumes an, auf dem das Dateisystem reside. Gültige Werte für
type:lvm,disk,partitionoderraid. Der Standardwert wird anhand des Betriebssystems und der Version bestimmt (aktuelllvm).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.
stateGültige Werte sind
present(Standardverhalten) oderabsent. Volumes, die alsabsentmarkiert sind, werden von der Rolle entfernt. Volumes, die alspresentmarkiert 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).disksDies 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
diskrelevant, wo die Liste nur einen einzelnen Eintrag enthalten muss.sizeDie
sizegibt 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
compressionoderdeduplicationkannsizehö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_typeDies gibt den gewünschten Dateisystemtyp an, z. B.: "xfs", "ext4", "swap". Der Standardwert wird anhand des Betriebssystems und der Version bestimmt (aktuell
xfsfü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_labelDie
fs_labelist eine Zeichenfolge, die als Dateisystembezeichnung verwendet werden soll.fs_create_optionsDie
fs_create_optionsgibt benutzerdefinierte Argumente fürmkfsals Zeichenfolge an.mount_pointDer
mount_pointgibt das Verzeichnis an, auf dem das Dateisystem eingehängt wird.mount_optionsDie
mount_optionsgibt benutzerdefinierte Einhängeoptionen als Zeichenfolge an, z.B.: 'ro'.mount_userDer
mount_usergibt den gewünschten Eigentümer des Einhängeverzeichnisses an.mount_groupDer
mount_groupgibt die gewünschte Gruppe des Einhängeverzeichnisses an.mount_modeDer
mount_modegibt die gewünschten Berechtigungen des Einhängeverzeichnisses an.raid_levelGibt 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 mitstorage_poolsvom Typlvmhat,raid_disksmü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_levelfür ein Volume ist eine destruktive Operation, was bedeutet, dass alle Daten auf diesem Volume im Rahmen des Prozesses entfernt werden.- für LVM RAID-Volume:
raid_device_countWenn der Typ
raidangegeben ist, gibt dies die Anzahl der aktiven RAID-Geräte an.raid_spare_countWenn der Typ
raidangegeben ist, gibt dies die Anzahl der Ersatz-RAID-Geräte an.raid_metadata_versionWenn der Typ
raidangegeben ist, gibt dies die RAID-Metadatenversion als Zeichenfolge an, z.B.: '1.0'.raid_chunk_sizeWenn der Typ
raidangegeben 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_sizeWenn der Typ
lvmangegeben ist, gibt dies die LVM-RAID-Streifenbreite als Zeichenfolge an, z.B.: '512 KiB'.raid_disksGibt an, welche Festplatten für das LVM-RAID-Volume verwendet werden sollen.
raid_levelmuss angegeben werden, und das Volume muss einen Elternteil mitstorage_poolsvom Typlvmhaben. Akzeptiert eine Unterliste vondisksdes übergeordnetenstorage_pools. Im Falle mehrerer LVM-RAID-Volumes innerhalb desselben Speicherspools kann dieselbe Festplatte in mehrerenraid_disksverwendet werden.encryptionDies 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_passwordDiese Zeichenfolge gibt ein Passwort oder eine Passphrase an, die verwendet wird, um das LUKS-Volume zu entsperren/öffnen.
encryption_keyDiese 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_cipherDiese Zeichenfolge gibt einen nicht-standardmäßigen Chiffrieralgorithmus an, der von LUKS verwendet werden soll.
encryption_key_sizeDiese Ganzzahl gibt die Größe des LUKS-Schlüssels (in Bits) an.
encryption_luks_versionDiese Ganzzahl gibt die LUKS-Version an, die verwendet werden soll.
deduplicationDies 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
compressionundvdo_pool_sizeverwendet werden. Das Volume muss Teil des LVMstorage_poolsein. Es ist ein VDOstorage_volumeprostorage_poolerlaubt. Das zugrunde liegende Volume muss mindestens 9 GB groß sein (das Minimum liegt bei etwa 5 GiB).compressionDies 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_poolsein. Kann zusammen mitdeduplicationundvdo_pool_sizeverwendet werden. Es ist ein VDOstorage_volumeprostorage_poolerlaubt.vdo_pool_sizeWenn 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 vonvdo_pool_sizeist so gestaltet, dass es menschenlesbar ist, z.B.: "30g", "50GiB". Der Standardwert entspricht der Größe des Volumes.cachedDies 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_sizeGröße des Caches. Das Format von
cache_sizeist so gestaltet, dass es menschenlesbar ist, z.B.: "30g", "50GiB".cache_modeModus für den Cache. Unterstützte Werte sind
writethrough(Standard) undwriteback.cache_devicesListe 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.
thinOb das Volume dünn bereitgestellt werden soll oder nicht. Dies wird nur für LVM-Volumes unterstützt.
thin_pool_nameFü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 Namenthin_pool_nameerstellt. 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_sizeGröße für den Thin-Pool. Das Format von
thin_pool_sizeist 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
