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:
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) oderabsent
. Pools, die alsabsent
markiert sind, werden von der Rolle entfernt. Pools, die alspresent
markiert sind, werden entweder erstellt (wenn ein Pool mit dem angegebenenname
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 (wiesda
odermpathb
), /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
auffalse
gesetzt ist.raid_level
Wenn mit
type: lvm
verwendet, verwaltet es eine Volume-Gruppe mit einem mdraid-Array des angegebenen Levels. Die eingegebenendisks
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
undtpm2
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
oderraid
. 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.
state
Gültige Werte sind
present
(Standardverhalten) oderabsent
. Volumes, die alsabsent
markiert sind, werden von der Rolle entfernt. Volumes, die alspresent
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
oderdeduplication
kannsize
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ürmkfs
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 mitstorage_pools
vom Typlvm
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.- für LVM RAID-Volume:
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 mitstorage_pools
vom Typlvm
haben. Akzeptiert eine Unterliste vondisks
des übergeordnetenstorage_pools
. Im Falle mehrerer LVM-RAID-Volumes innerhalb desselben Speicherspools kann dieselbe Festplatte in mehrerenraid_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
undvdo_pool_size
verwendet werden. Das Volume muss Teil des LVMstorage_pool
sein. Es ist ein VDOstorage_volume
prostorage_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 mitdeduplication
undvdo_pool_size
verwendet werden. Es ist ein VDOstorage_volume
prostorage_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 vonvdo_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) undwriteback
.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 Namenthin_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