cdomingos.multipath
Rôle Ansible : Multipath (DM Multipath)
Un excellent rôle Ansible qui déploie et configure correctement le logiciel de multipathing natif de Linux (DM Multipath) pour les scénarios de Démarrage depuis SAN ou de Démarrage local.
Ce rôle Ansible multipath est capable de :
- configurer DM Multipath selon la documentation produit et les meilleures pratiques du secteur
- configurer les paramètres des pilotes
Avertissement
Ce rôle remplace la configuration DM Multipath
Les paramètres précédents seront écrasés, vérifiez multipath_backup_permanent
dans la section des variables du rôle.
Cette configuration affecte les fichiers de répertoire suivants :
/etc/multipath/
/etc/multipath.conf
Si quelque chose ne va pas après le redémarrage de l'hôte géré, certaines erreurs dans initramfs peuvent conduire à un Kernel panic lors du démarrage suivant "dracut Warning: LVM rootvg/rootlv not found"
Dans ce cas, je recommande :
- de redémarrer le système à l'aide d'une image ISO de secours
- de restaurer les fichiers principaux :
- /boot/<original-initramfs>.img.ansible_multipath
- /etc/fstab.ansible_multipath
- /etc/lvm/lvm.conf.ansible_multipath
REMARQUE : il existe plusieurs façons de remettre votre système en état opérationnel, les paramètres de démarrage du noyau tels que rdshell
ou rd.shell
, en plus de supprimer rhgb
et quiet
, peuvent vous aider à résoudre votre problème d'initramfs.
Fonctionnement
Il y a deux étapes principales : pré-configuration et configuration.
Dans l'étape de pré-configuration, ce rôle fait (pas de modifications système, sauf installation de paquets si déclaré) :
- vérifier si le paquet device-mapper-multipath est installé (vous pouvez l'installer ou le mettre à jour. Voir les variables)
- obtenir les propriétés du périphérique pour le système de fichiers monté /boot, ainsi que pour /boot/efi
- obtenir les propriétés et découvrir le vrai périphérique disque pour le système de fichiers monté /boot
- charger les pilotes modprobe selon le fournisseur et le modèle du vrai périphérique disque de démarrage découvert
- sélectionner automatiquement le type de configuration (Démarrage depuis SAN ?) en fonction du pilote du périphérique disque de démarrage
- obtenir le noyau par défaut de GRUB et initramfs
- charger les vérifications pour les scénarios de Démarrage depuis SAN ou de Démarrage local
- définir un nom pseudo pour le vrai périphérique disque
- définir le filtre LVM
Dans l'étape de configuration, ce rôle fait (modifications système) :
- sauvegarder certains fichiers système, tels que /etc/fstab, l'initramfs actuel et /etc/lvm/lvm.conf
- supprimer les fichiers de configuration DM Multipath actuels
- créer un fichier initial /etc/multipath.conf
- configurer le fichier /etc/multipath.conf et vérifier la syntaxe ou les erreurs
- configurer /etc/fstab
- configurer le filtre LVM et vérifier la syntaxe ou les erreurs
- configurer les fichiers modprobe et vérifier la syntaxe ou les erreurs
- configurer initramfs et vérifier les erreurs
- en cas d'erreurs, il supprime les fichiers supplémentaires et restaure les fichiers système à l'aide de la sauvegarde précédente
- redémarrer le système
- supprimer les fichiers système de sauvegarde précédents
Exigences
Le playbook doit être exécuté avec become: yes
ou des privilèges root équivalents et gather_facts: yes
également.
- Ansible Engine 2.7.1+
Variables du Rôle
Le rôle multipath est configuré à l'aide de variables commençant par multipath_
comme préfixe de nom.
Liste des variables :
Variable | Type | Description |
---|---|---|
multipath_setup_pseudodevname |
string (m) * | Définir le nom de périphérique pseudo (alias) pour le disque de démarrage géré par DM Multipath |
multipath_package_install |
boolean (o) | Installer le paquet device-mapper-multipath s'il n'est pas présent |
multipath_package_upgrade |
boolean (r) | Mettre à jour (également installer) le paquet device-mapper-multipath |
multipath_preserve_currentfiles |
boolean (r) | Avant l'étape de configuration, faire une copie permanente des fichiers de configuration DM Multipath actuels |
multipath_reboot_allow |
boolean (r) | Permettre à ce rôle de redémarrer le nœud géré |
multipath_reboot_timeoutguest |
integer (o) | Temps max (secs) pour 'redémarrer' en attendant qu'un système invité géré soit à nouveau en ligne |
multipath_reboot_timeoutbaremetal |
integer (o) | Temps max (secs) pour 'redémarrer' en attendant qu'un système Bare Metal géré soit à nouveau en ligne |
multipath_modprobe_custom |
list (o) | Charger et définir les paramètres des pilotes liés au fournisseur ou modèle du disque de démarrage |
multipath_configfile_commentlines |
boolean (o) * | Commenter toutes les lignes dans /etc/multipath.conf |
multipath_configfile_bybasic |
boolean (o) * | Écraser le fichier /etc/multipath.conf en utilisant une configuration basique et fonctionnelle |
multipath_configfile_bytemplate |
boolean (o) | Écraser le fichier /etc/multipath.conf en utilisant des modèles prédéfinis du rôle |
multipath_configfile_byusertemplate |
string (o) | Écraser le fichier /etc/multipath.conf en utilisant un fichier modèle utilisateur personnalisé |
multipath_configfile_bysections |
string (o) | Inclure des sections personnalisées dans le fichier /etc/multipath.conf |
multipath_configfile_defaults |
list (o) | Inclure des paramètres supplémentaires dans la section "defaults {" pour /etc/multipath.conf |
multipath_debug_sysfilecontent |
boolean (o) | Avant les tâches après configuration (e.g. redémarrer), montrer le contenu des fichiers système modifiés |
multipath_debug_showvariables |
boolean (r) | Afficher les variables du rôle et leurs valeurs |
(m) - obligatoire
(r) - recommandé
(o) - optionnel
* - valeur par défaut appliquée (voir defaults/main.yml
)
Liste détaillée des variables :
multipath_setup_pseudodevname
: définir le nom de périphérique pseudo (alias) pour le disque de démarrage géré par DM Multipath (ex. : /dev/mapper/bootLUN)type : string
fichiers affectés :
- /etc/fstab
- /etc/multipath.conf
exemple :
multipath_setup_pseudodevname: bootLUN
REMARQUE : ne pas utiliser de "p" ou de caractères numériques
multipath_package_install
: installer le paquet device-mapper-multipath s'il n'est pas présenttype : boolean
fichiers affectés : n/a
exemple :
multipath_package_install: yes
multipath_package_upgrade
: mettre à jour (également installer) le paquet device-mapper-multipathtype : boolean
fichiers affectés : n/a
exemple :
multipath_package_upgrade: yes
multipath_preserve_currentfiles
: avant l'étape de configuration, faire une copie permanente des fichiers de configuration DM Multipath actuels, tels que /etc/multipath.conf et /etc/multipath/type : boolean
fichiers affectés : n/a
exemple :
multipath_preserve_currentfiles: yes
REMARQUE : les fichiers préservés seront stockés comme /etc/multipath.conf.ansible_multipath et /etc/multipath.ansible_multipath/, une fois ces fichiers copiés, le rôle ne les touchera plus, pour le répertoire, il fonctionne en mode ajout.
multipath_reboot_allow
: autoriser ce rôle à redémarrer le nœud gérétype : boolean
fichiers affectés : n/a
exemple :
multipath_reboot_allow: yes
multipath_reboot_timeoutguest
: temps max (secs) pour 'redémarrer' en attendant qu'un système invité géré soit à nouveau en lignetype : integer
fichiers affectés : n/a
exemple :
multipath_reboot_timeoutguest: 300
multipath_reboot_timeoutbaremetal
: temps max (secs) pour 'redémarrer' en attendant qu'un système Bare Metal géré soit à nouveau en lignetype : integer
fichiers affectés : n/a
exemple :
multipath_reboot_timeoutbaremetal: 1800
multipath_modprobe_custom
: charger et définir les paramètres des pilotes liés au fournisseur ou modèle du disque de démarrage, générant un fichier modprobe selon le nom du module. - veuillez vous référer à votre guide de connectivité sur le fournisseur de stockage d'entreprisetype : list
fichiers affectés :
- /etc/modprobe.d/<module-name>.conf
exemple :
multipath_modprobe_custom: - module: lpfc params: lpfc_max_luns=65535 lpfc_devloss_tmo=10 vendor: EMC model: any - module: lpfc params: lpfc_max_luns=65535 lpfc_devloss_tmo=14 lpfc_lun_queue_depth=16 lpfc_discovery_threads=32 vendor: 3PARdata model: VV - module: qla2xxx params: ql2xmaxlun=65535 qlport_down_retry=14 ql2xmaxqdepth=16 vendor: 3PARdata model: VV - module: scsi_transport_fc params: dev_loss_tmo=10 vendor: any model: any
REMARQUE : l'utilisation de la valeur "any" ajustera les paramètres du pilote sans correspondre/valider le pilote du disque de démarrage, vous pouvez obtenir une liste complète des appareils via
multipath -t
multipath_configfile_commentlines
: commenter toutes les lignes dans /etc/multipath.conf après que l'outil mpathconf ait créé un fichier de configuration initialtype : boolean
fichiers affectés :
- /etc/multipath.conf
exemple :
multipath_configfile_commentlines: yes
multipath_configfile_bybasic
: écraser le fichier /etc/multipath.conf en utilisant une configuration basique et fonctionnelle (les commentaires du fichier d'origine ne sont pas préservés)type : boolean
fichiers affectés :
- /etc/multipath.conf
dépendances :
multipath_configfile_commentlines: yes
exemple :
multipath_configfile_bybasic: yes
multipath_configfile_bytemplate
: écraser le fichier /etc/multipath.conf en utilisant des modèles prédéfinis du rôle (ex. : templates/bootfromsan_multipath.conf.j2) avec une configuration basique fonctionnelle (les commentaires du fichier d'origine sont préservés)type : boolean
fichiers affectés :
- /etc/multipath.conf
exemple :
multipath_configfile_bytemplate: yes
multipath_configfile_byusertemplate
: écraser le fichier /etc/multipath.conf en utilisant un fichier modèle utilisateur personnalisé, celui-ci doit être au niveau du répertoire du playbook ou dans 'templates', de même vous pouvez utiliser des faits du rôle, voir le fichier 'templates/bootfromsan_multipath.conf.j2'type : string (chemin du fichier)
fichiers affectés :
- /etc/multipath.conf
exemple :
multipath_configfile_byusertemplate: mymultipath.conf.j2
multipath_configfile_bysections
: inclure des sections personnalisées dans le fichier /etc/multipath.conftype : string (multi-lignes)
fichiers affectés :
- /etc/multipath.conf
exemple :
multipath_configfile_bysections: | devices { device { vendor "COMPAQ " product "HSV110 (C)COMPAQ" path_grouping_policy multibus path_checker readsector0 path_selector "round-robin 0" hardware_handler "0" failback 15 rr_weight priorities no_path_retry queue } }
REMARQUE : optionnel combiné avec
multipath_configfile_commentlines: yes
multipath_configfile_defaults
: inclure des paramètres supplémentaires dans la section "defaults {" pour /etc/multipath.conftype : list
fichiers affectés :
- /etc/multipath.conf
exemple :
multipath_configfile_defaults: - detect_prio no - failback "manual" - max_fds 1048576 - max_polling_interval 20
multipath_debug_sysfilecontent
: avant les tâches après configuration (e.g. redémarrer), montrer le contenu des fichiers système modifiés dans le flux du playbook comme une tâche, fichiers : /etc/fstab, /etc/lvm/lvm.conf et /etc/multipath.conftype : boolean
fichiers affectés : n/a
exemple :
multipath_debug_sysfilecontent: yes
multipath_debug_showvariables
: afficher les variables du rôle et leurs valeurstype : boolean
fichiers affectés : n/a
exemple :
multipath_debug_showvariables: yes
Dépendances
N/A
Tags
Il y a deux tags disponibles :
role:multipath:prereqs
: prérequis du rôle, vérifie les variables du rôle, sans modifications systèmeansible-playbook multipathing.yml --tags role:multipath:prereqs
role:multipath:presetup
: validations de pré-configuration, sans modifications système (sauf demande d'installer ou de mettre à jour le paquet DM Multipath en utilisant les variables multipath_package_install ou multipath_package_upgrade)ansible-playbook multipathing.yml --tags role:multipath:presetup
Exemple de Playbook
Un playbook basique devrait ressembler à ceci :
- hosts: servers
become: yes
gather_facts: yes
roles:
- cdomingos.multipath
Une liste d'exemples de playbooks peut être trouvée dans tests/
dans la structure du répertoire du rôle.
Licence
MIT
Informations sur l'Auteur
Ce rôle a été créé en 2019 par Cláudio Domingos
Informations Supplémentaires
Testé sur :
- HP ProLiant BL460c Gen9 (UEFI)
- 3PAR Storage Array
- HP ProLiant BL460c G7
- VMAX Storage Array
- RHEL 8
- RHEL 7
- RHEL 6
- Fedora 31
Il est très approprié d'utiliser ce rôle pour des machines Bare Metal, car des invités n'ont pas de sens puisque le logiciel de multipathing à haute disponibilité doit être au niveau de l'hyperviseur.
Voulez-vous appliquer la configuration des meilleures pratiques DM Multipath pour un array de stockage spécifique ? Contactez votre fournisseur de stockage, vous pouvez également rechercher le Guide de Connectivité pour Linux et consulter ce que votre fournisseur de stockage recommande.
Ce rôle est inspiré de :
- Red Hat Enterprise Linux 8 Configurer Device Mapper Multipath
- Red Hat Enterprise Linux 7 Configurer Device Mapper Multipath
- Red Hat Enterprise Linux 6 Configurer Device Mapper Multipath
À faire
Résoudre des problèmes critiques tels que dracut Warning: LVM rootvg/rootlv not found
a. Implémenter un script pour revenir à l'étape de démarrage initramfs/dracut lorsque le système plante lors du cycle de redémarrage
b. Activer le réseau et le service sshd au stade de démarrage initramfs/dracut et effectuer les tâches de secours nécessaires pour le réparer à l'aide d'Ansible
Configure native linux multipathing (DM Multipath) for Boot from SAN or Local Boot
ansible-galaxy install cdomingos.multipath