githubixx.lvm
ansible-role-lvm
Ce rôle Ansible installe les ressources du Gestionnaire de Volumes Logiques de Linux (LVM) comme les Groupes de Volumes
(VG), les Volumes Logiques
(LV) et gère la création des systèmes de fichiers
et des points de montage
.
Journal des modifications
voir le CHANGELOG
Variables du rôle
Par défaut, aucune ressource LVM n'est créée. Voir les exemples ci-dessous. La clé lvm_vgs
est le point d'entrée pour toutes les ressources LVM à créer.
lvm_vgs: []
Voici quelques exemples sur la création de ressources LVM (comment la suppression est gérée, voir plus bas).
Créer un groupe de volumes (VG) appelé test-vg-01
utilisant le périphérique /dev/vdb
comme volume physique :
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
Tous les trois paramètres sont requis ! vgname est le nom du Groupe de Volumes. pvs est une liste de périphériques séparés par des virgules à utiliser comme périphériques physiques dans ce groupe de volumes. state contrôle si le groupe de volumes existe.
Pour supprimer un VG, il faut spécifier state: absent
et aussi force: true
. Contrairement au paramètre force
du module community.general.lvg, force: true
ne supprimera pas les VGs qui contiennent encore (un ou plusieurs) volumes logiques ! Cela permet d'éviter la suppression accidentelle de données.
Créer un groupe de volumes (VG) appelé test-vg-01
utilisant les périphériques /dev/vdb
et /dev/vdc
comme volumes physiques :
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb,/dev/vdc
state: present
Actuellement, les paramètres supplémentaires suivants de community.general.lvg sont pris en charge :
Comme dans l'exemple précédent, mais en créant également un volume logique test-lv-01
et en allouant 10%
de l'espace disponible du VG :
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
Tous les volumes logiques que contient un groupe de volumes sont listés sous la clé lvm_lvs
. Les paramètres lvname
, size
et state
sont requis ! lvname est le nom du volume logique. size spécifie la taille du volume logique, selon lvcreate(8) --size
, par défaut en mégaoctets ou optionnellement avec une unité de [bBsSkKmMgGtTpPeE] ; ou selon lvcreate(8) --extents
en pourcentage de [VG|PVS|FREE] ; Les valeurs décimales doivent commencer par un chiffre. state contrôle si le volume logique existe. Pour supprimer un LV, il faut spécifier state: absent
et aussi force: true
.
Actuellement, les paramètres supplémentaires suivants de community.general.lvol sont également pris en charge :
Comme dans l'exemple précédent, mais en créant également un système de fichiers ext4
utilisant le volume logique test-lv-01
comme périphérique pour le système de fichiers :
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
fs:
type: ext4
state: present
La clé fs
précise que le volume logique doit contenir un système de fichiers. type spécifie le système de fichiers à utiliser. state: present
indique que le système de fichiers est créé s'il n'existe pas déjà. En cas de state: absent
, les signatures de système de fichiers sur le périphérique sont effacées si celui-ci contient un système de fichiers (comme le sait blkid
). En cas de state: absent
, toutes les autres options mais le périphérique sont ignorées, et le module ne renvoie pas d'erreur si le périphérique n'existe pas réellement. En cas de state: absent
, force: true
est également nécessaire, sinon le système de fichiers ne sera pas touché. Contrairement au paramètre force du module community.general.filesystem, force: true
ne remplacera pas un système de fichiers existant. Vous devez vraiment d'abord effacer l'ancien pour pouvoir créer un nouveau système de fichiers ! Encore une fois, cela permet d'éviter les suppressions accidentelles.
Comme dans l'exemple précédent, mais en créant également un répertoire /mnt1
et en montant le système de fichiers ext4
là-bas. Cela crée également une entrée dans /etc/fstab
(par défaut).
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
fs:
type: ext4
state: present
mountpoint:
state: mounted
path:
name: /mnt1
La clé mountpoint
gère les actions liées au point de montage. state a les mêmes options que celles fournies par le module ansible.posix.mount telles que mounted
, absent
, present
, unmounted
et remounted
(voir aussi state). Les paramètres state
et path.name
sont requis. path.name
spécifie le nom du répertoire où le point de montage doit être monté. Si le répertoire n'existe pas encore, il sera créé. Pour d'autres options, voir l'exemple suivant.
Comme dans l'exemple précédent, mais le système de fichiers reçoit maintenant une étiquette mnt1
. De plus, le système de fichiers est monté sur /mnt1
avec l'option de système de fichiers noatime
. Le système de fichiers est également monté en utilisant l'étiquette mnt1
comme mentionné (src: LABEL=mnt1
). Le propriétaire et le groupe du répertoire /mnt1
seront vagrant
, et les permissions du répertoire seront 0750
:
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
lvm_lvs:
- lvname: test-lv-01
size: 10%VG
state: present
fs:
type: ext4
opts: -L mnt1
state: present
mountpoint:
opts: noatime
state: mounted
src: LABEL=mnt1
path:
name: /mnt1
mode: '0750'
owner: vagrant
group: vagrant
Par défaut, mountpoint.src
est /dev/ + vgname + / + lvname
. Dans l'exemple ci-dessus, LABEL=mnt1
a été utilisé. Dans opts: -L mnt
, l'option a été fournie pour créer un système de fichiers avec cette étiquette. Ainsi, elle peut être utilisée plus tard pour mountpoint.src
.
mountpoint
prend en charge les paramètres supplémentaires suivants :
Créer deux groupes de volumes (VG) appelés test-vg-01
et test-vg-02
, utilisant respectivement les périphériques /dev/vdb
et /dev/vdc
comme volumes physiques :
lvm_vgs:
- vgname: test-vg-01
pvs: /dev/vdb
state: present
- vgname: test-vg-02
pvs: /dev/vdc
state: present
Voici un exemple pour démonter un point de montage et supprimer son entrée de /etc/fstab
:
mountpoint:
state: absent
path:
name: /vg01lv01
Cela ne fonctionne bien sûr que si le point de montage n'est pas utilisé par un programme ou un service.
Lors de la suppression de systèmes de fichiers, de volumes logiques (LV) et de groupes de volumes (VG), une attention particulière doit être apportée ! Dans ce cas, spécifier state: absent
pour supprimer une telle ressource n'est pas suffisant. force: true
est également nécessaire. Bien sûr, la suppression d'un groupe de volumes qui contient encore un volume logique échouera. De même, la suppression d'un volume logique avec un système de fichiers avec state: present
échouera.
L'exemple suivant démontera le point de montage spécifié (/vg02lv01
), supprimera son entrée de /etc/fstab
, effacera le système de fichiers ext4
, supprimera le volume logique (vg02lv01
) et enfin supprimera le groupe de volumes (vg02
) (dans cet ordre) :
lvm_vgs:
- vgname: vg02
pvs: /dev/vdc
state: absent
force: true
lvm_lvs:
- lvname: vg02lv01
size: 10%VG
state: absent
force: true
fs:
type: ext4
state: absent
force: true
mountpoint:
state: absent
path:
name: /vg02lv01
Pour pouvoir créer des systèmes de fichiers, des packages supplémentaires sont nécessaires. Pour ext(2|3|4)
, vous devez installer le paquet e2fsprogs
, par exemple. Donc, selon le système de fichiers que vous voulez configurer, vous pourriez avoir besoin d'installer des paquets supplémentaires ou de retirer des paquets non nécessaires de la liste. Bien sûr, vous pouvez ajouter tous les paquets que vous souhaitez installer à la liste.
Par défaut, seuls les outils nécessaires pour ext(2|3|4)
ou xfs
sont installés. Pour d'autres systèmes de fichiers, vous pourriez avoir besoin de btrfsprogs/btrfs-progs
, dosfstools
, f2fs-tools
ou reiserfsprogs
, par exemple :
# Paquets supplémentaires pour les systèmes compatibles avec SuSE
additional_packages_suse:
- e2fsprogs
- xfsprogs
# Paquets supplémentaires pour les systèmes compatibles avec Debian
additional_packages_debian:
- e2fsprogs
- xfsprogs
# Paquets supplémentaires pour les systèmes compatibles avec Redhat
additional_packages_redhat:
- e2fsprogs
- xfsprogs
# Paquets supplémentaires pour les systèmes compatibles avec Archlinux
additional_packages_arch:
- e2fsprogs
- xfsprogs
En général, la plupart des options des modules suivants sont prises en charge :
community.general.lvg
community.general.lvol
community.general.filesystem
ansible.posix.mount
Dépendances
Ce rôle dépend de quelques modules Ansible :
community.general.lvg
community.general.lvol
community.general.filesystem
ansible.posix.mount
À faire
Actuellement, les fonctionnalités suivantes ne sont pas implémentées :
- Redimensionnement du Groupe de Volumes
- Réduction du Volume Logiciel
- Instantané du Volume Logiciel
- Redimensionnement du Volume Logiciel/Système de fichiers
Exemple de Playbook
Exemple 1 (sans étiquette de rôle)
- hosts: your-host
roles:
- githubixx.lvm
Exemple 2 (attribuer une étiquette au rôle)
-
hosts: your-host
roles:
-
role: githubixx.lvm
tags: role-lvm
Plus d'exemples
Il y a quelques exemples supplémentaires utilisés pour tester ce rôle. Voir les répertoires molecule.
Tests
Ce rôle a une petite configuration de test créée à l'aide de Molecule, libvirt (vagrant-libvirt) et QEMU/KVM. Veuillez consulter mon article de blog Tester des rôles Ansible avec Molecule, libvirt (vagrant-libvirt) et QEMU/KVM pour savoir comment configurer. La configuration de test est ici.
Ensuite, molecule peut être exécuté :
molecule converge -s kvm
Cela créera plusieurs machines virtuelles (VM) avec différents systèmes d'exploitation Linux pris en charge et créera diverses ressources LVM.
Pour nettoyer, exécutez
molecule destroy -s kvm
Licence
Licence Publique Générale GNU v3.0 ou ultérieure
Informations sur l'auteur
ansible-galaxy install githubixx.lvm