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

http://www.tauceti.blog

À propos du projet

Manage Linux Logical Volume Manager resources

Installer
ansible-galaxy install githubixx.lvm
Licence
gpl-3.0
Téléchargements
1.8k
Propriétaire
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)