linux-system-roles.storage
Rôle de stockage Linux
Ce rôle permet aux utilisateurs de configurer le stockage local avec un minimum d'interactions.
À l'heure actuelle, le rôle prend en charge la gestion des systèmes de fichiers et des points de montage sur
- disques
- groupes de volumes LVM
- pools Stratis
Le chiffrement (avec LUKS) et le RAID (avec MD) sont également pris en charge. Le support de la gestion des dispositifs existants est limité, mais de nouveaux volumes LVM et des systèmes de fichiers Stratis peuvent être ajoutés à des configurations existantes et des points de montage, et certaines autres fonctionnalités peuvent être ajoutées à (ou supprimées de) des dispositifs existants.
Exigences
Voir ci-dessous
Exigences de collection
Le rôle nécessite des collections externes. Utilisez la commande suivante pour les installer :
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Variables de rôle
REMARQUE : À partir de la version 1.3.0, les paramètres non spécifiés sont interprétés différemment pour les pools/volumes existants et non existants. Pour les pools et volumes nouveaux/non existants, tout paramètre omis utilisera la valeur par défaut comme décrit dans defaults/main.yml
. Pour les pools et volumes existants, les paramètres omis hériteront des paramètres que le pool ou le volume a déjà. Cela signifie que pour modifier/remplacer les valeurs par défaut du rôle dans un pool ou un volume existant, vous devez spécifier explicitement les nouvelles valeurs/réglages dans les variables du rôle.
storage_pools
La variable storage_pools
est une liste de pools à gérer. Chaque pool contient une liste imbriquée de dictionnaires volume
comme décrit ci-dessous, ainsi que les clés suivantes :
name
Cela spécifie le nom du pool à gérer/créer sous forme de chaîne. (Un exemple de pool est un groupe de volume LVM.)
type
Cela spécifie le type de pool à gérer. Valeurs valides pour
type
:lvm
,stratis
.state
Les valeurs valides sont
present
(comportement par défaut) ouabsent
. Les pools marqués commeabsent
seront supprimés par le rôle. Les pools marqués commepresent
seront soit créés (si le pool avec le nom spécifié n'existe pas déjà), soit préservés.grow_to_fill
Lorsqu'il est activé, les volumes physiques du pool seront redimensionnés pour correspondre aux tailles de leurs dispositifs respectifs. (par exemple, après l'augmentation de la taille du disque de la machine virtuelle)
Par défaut :
false
REMARQUE : Cet argument n'est valide que pour les pools LVM.
shared
Si défini sur
true
, le rôle crée ou gère un groupe de volumes partagé. Nécessite que les services lvmlockd et dlm soient configurés et en cours d'exécution.Par défaut :
false
AVERTISSEMENT : Modifier la valeur
shared
d'un pool existant est une opération destructive. Le pool lui-même sera supprimé dans le cadre du processus.REMARQUE : Cet argument n'est valide que pour les pools LVM.
disks
Une liste qui spécifie l'ensemble de disques à utiliser comme stockage de soutien pour le pool. Les identifiants pris en charge incluent : le nœud du dispositif (comme
/dev/sda
ou/dev/mapper/mpathb
), le nom de base du nœud du dispositif (commesda
oumpathb
), le lien symbolique /dev/disk (comme/dev/disk/by-id/wwn-0x5000c5005bc37f3f
).Pour les pools LVM, cela peut également être utilisé pour ajouter et retirer des disques à/from d'un pool existant. Les disques dans la liste qui ne sont pas utilisés par le pool seront ajoutés au pool. Les disques actuellement utilisés par le pool mais non présents dans la liste seront supprimés du pool seulement si
storage_safe_mode
est défini surfalse
.raid_level
Lorsqu'il est utilisé avec
type : lvm
, il gère un groupe de volume avec un tableau mdraid du niveau donné. Les disques d'entrée sont, dans ce cas, utilisés comme membres RAID. Valeurs acceptées :linear
,raid0
,raid1
,raid4
,raid5
,raid6
,raid10
volumes
Il s'agit d'une liste de volumes appartenant au pool actuel. Elle suit le même modèle que la variable
storage_volumes
, expliquée ci-dessous.encryption
Ceci spécifie si le pool sera chiffré à l'aide de LUKS. AVERTISSEMENT : Basculer le chiffrement d'un pool est une opération destructive, ce qui signifie que le pool lui-même sera supprimé dans le cadre du processus d'ajout/suppression de la couche de chiffrement.
encryption_password
Cette chaîne spécifie un mot de passe ou une phrase secrète utilisée pour déverrouiller/ouvrir le(s) volume(s) LUKS.
encryption_key
Cette chaîne spécifie le chemin complet du fichier clé sur les nœuds gérés utilisé pour déverrouiller le(s) volume(s) LUKS. Il est de la responsabilité de l'utilisateur de ce rôle de copier ce fichier en toute sécurité sur les nœuds gérés, ou de s'assurer que le fichier est présent sur les nœuds gérés.
encryption_cipher
Cette chaîne spécifie un chiffre non par défaut à utiliser par LUKS.
encryption_key_size
Cet entier spécifie la taille de clé LUKS (en octets).
encryption_luks_version
Cet entier spécifie la version de LUKS à utiliser.
encryption_clevis_pin
Pour les pools Stratis, la méthode clevis qui doit être utilisée pour chiffrer le pool créé. Valeurs acceptées :
tang
ettpm2
encryption_tang_url
Lors de la création d'un pool Stratis chiffré via NBDE à l'aide d'un serveur tang, spécifie l'URL du serveur.
encryption_tang_thumbprint
Lors de la création d'un pool Stratis chiffré via NBDE à l'aide d'un serveur tang, spécifie l'empreinte du serveur.
storage_volumes
La variable storage_volumes
est une liste de volumes à gérer. Chaque volume a les variables suivantes :
name
Cela spécifie le nom du volume.
type
Cela spécifie le type de volume sur lequel le système de fichiers résidera. Valeurs valides pour
type
:lvm
,disk
,partition
ouraid
. La valeur par défaut est déterminée selon le système d'exploitation et la version (actuellementlvm
).REMARQUE : Le support pour la gestion des volumes de partition est actuellement très limité, le rôle permet de créer uniquement une seule partition s'étendant sur l'ensemble du disque.
state
Les valeurs valides sont
present
(comportement par défaut) ouabsent
. Les volumes marqués commeabsent
seront supprimés par le rôle. Les volumes marqués commepresent
seront soit créés (si un volume avec le nom spécifié n'existe pas), soit préservés et éventuellement changés pour correspondre à d'autres valeurs (par exemple, si un volume avec le nom spécifié existe mais n'a pas la taille requise, il sera redimensionné si possible).disks
Cela spécifie l'ensemble de disques à utiliser comme stockage de soutien pour le système de fichiers. Cela est actuellement seulement pertinent pour les volumes de type
disk
, où la liste doit contenir un seul élément.size
La taille spécifie la taille du système de fichiers. Le format pour cela est destiné à être lisible par l'homme, par exemple : "10g", "50 GiB". La taille des volumes LVM peut être spécifiée en pourcentage de la taille du pool/VG, par exemple : "50 %" à partir de la version 1.4.2.
Lors de l'utilisation de
compression
oudeduplication
,size
peut être défini plus haut que l'espace disponible réel, par exemple : 3 fois la taille du volume, en fonction de la duplicité et/ou de la compressibilité des données stockées.REMARQUE : La taille demandée du volume peut être réduite si nécessaire pour que le volume puisse tenir dans l'espace disponible du pool, mais seulement si la réduction requise n'est pas supérieure à 2 % de la taille demandée du volume.
fs_type
Cela indique le type de système de fichiers souhaité à utiliser, par exemple : "xfs", "ext4", "swap". La valeur par défaut est déterminée par le système d'exploitation et la version (actuellement
xfs
pour tous les systèmes pris en charge). Utilisez "non formaté" si vous ne voulez pas que le système de fichiers soit présent. AVERTISSEMENT : Utiliser "non formaté" comme type de système de fichiers sur un système de fichiers existant est une opération destructive et détruira toutes les données sur le volume.fs_label
Le
fs_label
est une chaîne à utiliser pour un label de système de fichiers.fs_create_options
Les
fs_create_options
spécifient des arguments personnalisés àmkfs
sous forme de chaîne.mount_point
Le
mount_point
spécifie le répertoire sur lequel le système de fichiers sera monté.mount_options
Les
mount_options
spécifient des options de montage personnalisées sous forme de chaîne, par exemple : 'ro'.mount_user
Le
mount_user
spécifie le propriétaire souhaité du répertoire de montage.mount_group
Le
mount_group
spécifie le groupe souhaité du répertoire de montage.mount_mode
Le
mount_mode
spécifie les autorisations désirées du répertoire de montage.raid_level
Spécifie le niveau RAID. Un RAID LVM peut également être créé. Un volume RAID "régulier" nécessite que le type soit
raid
. Un RAID LVM nécessite que le volume ait un parentstorage_pools
de typelvm
,raid_disks
doivent également être spécifiées. Valeurs acceptées :- pour un volume RAID LVM :
raid0
,raid1
,raid4
,raid5
,raid6
,raid10
,striped
,mirror
- pour un volume RAID :
linear
,raid0
,raid1
,raid4
,raid5
,raid6
,raid10
AVERTISSEMENT : Changer le
raid_level
d'un volume est une opération destructive, ce qui signifie que toutes les données sur ce volume seront perdues lors du processus de retrait de l'ancien et d'ajout du nouveau RAID. La modification du RAID n'est actuellement pas prise en charge.- pour un volume RAID LVM :
raid_device_count
Lorsque le type est
raid
, spécifie le nombre de dispositifs RAID actifs.raid_spare_count
Lorsque le type est
raid
, spécifie le nombre de dispositifs RAID de secours.raid_metadata_version
Lorsque le type est
raid
, spécifie la version des métadonnées RAID sous forme de chaîne, par exemple : '1.0'.raid_chunk_size
Lorsque le type est
raid
, spécifie la taille des chunks RAID sous forme de chaîne, par exemple : '512 KiB'. La taille des chunks doit être un multiple de 4 Ko.raid_stripe_size
Lorsque le type est
lvm
, spécifie la taille des bandes RAID LVM sous forme de chaîne, par exemple : '512 KiB'.raid_disks
Spécifie quels disques doivent être utilisés pour un volume RAID LVM.
raid_level
doit être spécifié et le volume doit avoir un parentstorage_pools
de typelvm
. Accepte une sous-liste desdisks
du parentstorage_pools
. En cas de plusieurs volumes RAID LVM au sein du même pool de stockage, le même disque peut être utilisé dans plusieursraid_disks
.encryption
Ceci spécifie si le volume sera chiffré à l'aide de LUKS. AVERTISSEMENT : Basculer le chiffrement d'un volume est une opération destructive, ce qui signifie que toutes les données sur ce volume seront supprimées lors du processus d'ajout/suppression de la couche de chiffrement.
encryption_password
Cette chaîne spécifie un mot de passe ou une phrase secrète utilisée pour déverrouiller/ouvrir le volume LUKS.
encryption_key
Cette chaîne spécifie le chemin complet du fichier clé sur les nœuds gérés utilisé pour déverrouiller le(s) volume(s) LUKS. Il est de la responsabilité de l'utilisateur de ce rôle de copier ce fichier en toute sécurité sur les nœuds gérés, ou de s'assurer que le fichier est présent sur les nœuds gérés.
encryption_cipher
Cette chaîne spécifie un chiffre non par défaut à utiliser par LUKS.
encryption_key_size
Cet entier spécifie la taille de clé LUKS (en bits).
encryption_luks_version
Cet entier spécifie la version de LUKS à utiliser.
deduplication
Ceci spécifie si l'Optimiseur de données virtuelles (VDO) sera utilisé. Lorsqu'il est défini, les données dupliquées stockées sur le volume de stockage seront dédupliquées, ce qui accroît la capacité de stockage. Peut être utilisé avec
compression
etvdo_pool_size
. Le volume doit faire partie dustorage_pool
LVM. Limite un VDOstorage_volume
parstorage_pool
. Le volume sous-jacent doit avoir au moins 9 Go (la bare minimale est d'environ 5 GiB).compression
Cela spécifie si l'Optimiseur de données virtuelles (VDO) sera utilisé. Lorsque cela est activé, les données stockées sur le volume de stockage seront compressées, ce qui accroît la capacité de stockage. Le volume doit faire partie du
storage_pool
LVM. Peut être utilisé avecdeduplication
etvdo_pool_size
. Limite un VDOstorage_volume
parstorage_pool
.vdo_pool_size
Lorsque l'Optimiseur de données virtuelles (VDO) est utilisé, cela spécifie la taille réelle que le volume prendra sur le dispositif. La taille virtuelle du volume VDO est définie par le paramètre
size
. Le format devdo_pool_size
est destiné à être lisible par l'homme, par exemple : "30g", "50GiB". La valeur par défaut est égale à la taille du volume.cached
Cela spécifie si le volume doit être mis en cache ou non. Cela est actuellement pris en charge uniquement pour les volumes LVM où dm-cache est utilisé.
cache_size
Taille du cache. Le format de
cache_size
est destiné à être lisible par l'homme, par exemple : "30g", "50GiB".cache_mode
Mode pour le cache. Les valeurs prises en charge incluent
writethrough
(par défaut) etwriteback
.cache_devices
Liste des dispositifs qui seront utilisés pour le cache. Ce doivent être soit des volumes physiques soit des disques sur lesquels ces volumes physiques sont alloués. En général, vous voulez sélectionner des dispositifs rapides comme des disques SSD ou NVMe pour le cache.
thin
Indique si le volume doit être provisionné de manière fine ou non. Cela n'est pris en charge que pour les volumes LVM.
thin_pool_name
Pour les volumes
thin
, cela peut être utilisé pour spécifier le nom du pool mince LVM qui sera utilisé pour le volume. Si le pool avec le nom fourni existe déjà, le volume sera ajouté à ce pool. S'il n'existe pas, un nouveau pool nomméthin_pool_name
sera créé. Si non spécifié :- s'il n'y a pas de pools minces existants, un nouveau pool mince sera créé avec un nom généré automatiquement,
- s'il y a exactement un pool mince existant, le volume mince y sera ajouté et
- s'il y a plusieurs pools minces présents, une exception sera levée.
thin_pool_size
Taille du pool mince. Le format de
thin_pool_size
est destiné à être lisible par l'homme, par exemple : "30g", "50GiB".
storage_safe_mode
Lorsque vrai (par défaut), une erreur se produira au lieu de supprimer automatiquement les dispositifs existants et/ou de formater.
storage_udevadm_trigger
Lorsqu'il est vrai (par défaut est faux), le rôle utilisera udevadm trigger pour faire en sorte que les modifications udev prennent effet immédiatement. Cela peut aider sur certaines plateformes avec un udev "défectueux".
Exemple de Playbook
- name: Gérer le stockage
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
Voir README-ostree.md
Licence
MIT
Configure volumes and filesystems
ansible-galaxy install linux-system-roles.storage