Ansible est un outil d'automatisation, de configuration et de gestion d'infrastructure. Mes articles précédents présentent Ansible et expliquent les rôles système. Dans cet article, je montre comment configurer le gestionnaire de volumes logiques (LVM) à l'aide d'Ansible. La configuration de LVM avec Ansible aide les administrateurs système à effectuer leurs tâches plus efficacement et à passer moins de temps à travailler manuellement. Vous pouvez créer un playbook Ansible qui crée une partition et initialise LVM.
[ Vous pourriez également apprécier : Introduction au gestionnaire de volumes logiques ]
Présentation de LVM
Comme vous le savez, la partition principale ne peut pas être étendue et réduite. Un tel scénario peut créer des problèmes lorsque vous avez besoin d'espace supplémentaire sur un disque. En utilisant LVM, vous pouvez surmonter ce problème car LVM vous permet d'ajouter et de supprimer un nouveau disque sur un volume logique. LVM fait partie de l'installation par défaut de Red Hat Enterprise Linux (RHEL) depuis RHEL 7.
Voici quelques éléments essentiels que vous devez comprendre avant d'utiliser LVM :
- PV — Volume physique initialisé sur le disque, la partition ou le fichier de bouclage. Lorsque vous initialisez un PV, il crée une étiquette au démarrage de l'appareil.
- VG —Volume Group est une collection de volumes logiques (LV). Vous créez un VG à l'intérieur d'un PV.
- LV —Le volume logique est comme une partition standard sur un disque. Vous pouvez créer plusieurs LV dans un seul VG. Vous pouvez redimensionner un LV en fonction de l'espace requis.
Création d'une partition
Dans RHEL 8, vous créez une partition à l'aide de Parted utilitaire. Séparé vous offre la possibilité de créer une partition à l'aide de MS-DOS ou d'une partition de table de partition GUID (GPT). Dans Ansible, vous pouvez utiliser l'élément Parted module de partitionnement.
Dans cet exemple, considérez /dev/vdb
comme nom de disque. Créez deux partitions de 1 Go. En utilisant simplement le module Parted, vous pouvez créer des partitions de n'importe quelle taille.
Exemple :
---
- name: playbook for simple 1 GB partition
hosts: vm1.example.com
become: true
tasks:
- name: create partition
parted:
device: /dev/vdb
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
Exécutez ce playbook en utilisant :
$ ansible-playbook partition.yml
Vous pouvez utiliser le lsblk
commande pour vérifier que la partition existe maintenant.
Initialisation de LVM et création de LV
Après avoir créé la partition, initialisez le fichier LV. Pour initialiser, vous devez d'abord créer à la fois un PV et un VG. Utiliser le lvg Ansible module pour créer un PV et un VG avec une taille d'étendue physique (PE). Le PE divise le VG en une taille fixe. Par défaut, la taille du PE est de 4 Mo. Vous pouvez modifier la taille par défaut lors de la création du VG. Généralement, une taille de PE plus grande offre de meilleures performances.
Exemple :
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/vdb1
pesize: 16
- name: Install lvm2 dependency
package:
name: lvm2
state: present
La tâche suivante crée le LV. Le lvol module crée des LV. Lors de la création d'un LV, vous donnez des options telles que le nom du VG, la taille et un nom de LV.
Dans cet exemple, un VG de 2 Go crée le premier LV d'une taille de 1 Go.
Exemple :
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
Pour utiliser ce LV créé, vous devez monter cette partition dans le système de fichiers. Vous seul pouvez accéder à ce LV pour stocker des données. Dans Ansible, utilisez le système de fichiers modules pour formater n'importe quel périphérique bloc avec filesystem
. Après le formatage, vous montez la partition dans n'importe quel répertoire. Vous pouvez utiliser le montage module dans Ansible. Assurez-vous que le répertoire (/data1
dans cet exemple) existe avant d'exécuter le playbook.
Exemple :
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
Exemple : Tout le playbook :
---
- name: playbook for simple 1 GB partition
hosts: localhost
become: true
tasks:
- name: create partition
parted:
device: /dev/nvme1n1
number: 1
flags: [ lvm ]
state: present
part_end: 2GB
- name: Install lvm2 dependency
package:
name: lvm2
state: present
- name: task for creating volume group
lvg:
vg: sample-vg
pvs: /dev/nvme1n1p1
pesize: 16
- name: task for creating logical volume
lvol:
vg: sample-vg
lv: sample-lv
size: 1g
force: yes
- name: Create directory data1 if does not exist
file:
path: /data1
state: directory
mode: '0755'
- name: format the xfs filesystem
filesystem:
fstype: xfs
dev: /dev/sample-vg/sample-lv
- name: mount the lv on /data1
mount:
path: /data1
src: /dev/sample-vg/sample-lv
fstype: xfs
state: mounted
Exécutez ce playbook et vérifiez si votre LV est créé ou utilisez le lvs
commande.
N'oubliez pas que l'une des fonctionnalités de LVM est que vous pouvez étendre la taille du LV. Manuellement, vous pouvez utiliser le lvextend
commande. Dans Ansible, vous pouvez utiliser le lvol module pour étendre la taille de sample-lv .
Exemple :
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 2g
resizefs: true
force: yes
Utilisation de lvextend
commande ou le lvol module vous aide à étendre votre LV. Dans ce lvol volume, utilisez le resizefs
paramètre pour agrandir un système de fichiers non monté situé sur le périphérique.
Afin de réduire la taille d'un LV, la syntaxe est la suivante :
- name: Extend the logical volume to take all remaining space of the PVs and resize the underlying filesystem
lvol:
vg: sample-vg
lv: sample-lv
size: 700m
shrink: yes
force: yes
[ Besoin d'en savoir plus sur Ansible ? Suivez un cours de présentation technique gratuit de Red Hat. Ansible Essentials :Présentation technique de la simplicité dans l'automatisation. ]
Conclusion
Cet article vous a montré comment configurer LVM à l'aide d'un simple playbook Ansible. Plutôt que d'utiliser un simple playbook, vous pouvez créer un rôle , en utilisant le même processus et les mêmes modules que ci-dessus. Ansible vous aide à réduire les tâches manuelles et à augmenter l'efficacité de la configuration LVM. L'utilisation des méthodes décrites dans cet article simplifie les opérations sur plusieurs nœuds gérés.