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 :

  1. de redémarrer le système à l'aide d'une image ISO de secours
  2. 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ésent

    type : boolean

    fichiers affectés : n/a

    exemple :

    multipath_package_install: yes
    

  • multipath_package_upgrade: mettre à jour (également installer) le paquet device-mapper-multipath

    type : 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 ligne

    type : 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 ligne

    type : 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'entreprise

    type : 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 initial

    type : 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.conf

    type : 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.conf

    type : 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.conf

    type : boolean

    fichiers affectés : n/a

    exemple :

    multipath_debug_sysfilecontent: yes
    

  • multipath_debug_showvariables: afficher les variables du rôle et leurs valeurs

    type : 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ème

    ansible-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 :

À 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

À propos du projet

Configure native linux multipathing (DM Multipath) for Boot from SAN or Local Boot

Installer
ansible-galaxy install cdomingos.multipath
Licence
mit
Téléchargements
1.7k
Propriétaire