cdomingos.multipath

Ansible Rolle: Multipath (DM Multipath)

Eine gute Ansible-Rolle, die die Linux-eigene Multipathing-Software (DM Multipath) richtig für Boot von SAN oder Lokales Boot einrichtet.

Diese Multipath-Ansible-Rolle kann:

  • DM Multipath gemäß Produktdokumentation und den besten Praktiken der Branche konfigurieren
  • Treiberparameter konfigurieren

Warnung

Diese Rolle ersetzt die DM Multipath-Konfiguration
Frühere Einstellungen werden überschrieben, überprüfen Sie multipath_backup_permanent im Abschnitt Rollenvariablen.

Diese Konfiguration betrifft die folgenden Verzeichnisse und Konfigurationsdateien:

  • /etc/multipath/
  • /etc/multipath.conf

Wenn nach dem Neustart des verwalteten Hosts etwas falsch ist, können Fehler im Initramfs zu einem Kernel panic beim Booten nach "dracut Warning: LVM rootvg/rootlv nicht gefunden" führen.

In diesem Fall empfehle ich:

  1. Booten Sie das System mit einem Rescue ISO-Image.
  2. Stellen Sie die Hauptdateien wieder her:
    • /boot/<original-initramfs>.img.ansible_multipath
    • /etc/fstab.ansible_multipath
    • /etc/lvm/lvm.conf.ansible_multipath

HINWEIS: Es gibt viele Möglichkeiten, um Ihr System wieder in einen betriebsbereiten Zustand zu versetzen. Kernel-Boot-Parameter wie rdshell oder rd.shell, sowie das Entfernen von rhgb und quiet, können Ihnen helfen, Ihr beschädigtes Initramfs zu beheben.

Wie funktioniert es?

Es gibt zwei Hauptphasen: Vorbereitung und Einrichtung.

In der Vorbereitungsphase führt diese Rolle Folgendes aus (keine Systemänderungen, außer der Paketinstallation, wenn angegeben):

  • Überprüfen, ob das Paket device-mapper-multipath installiert ist (Sie können es installieren oder aktualisieren. Siehe Variablen)
  • Eigenschaften des Geräts für das /boot gemountete Dateisystem abrufen, auch für /boot/efi
  • Eigenschaften abrufen und das echte Festplattengerät für das /boot gemountete Dateisystem entdecken
  • Modprobe-Treiber gemäß dem Anbieter und Modell des entdeckten echten Bootlaufwerks laden
  • Den Typ der Konfiguration (Boot von SAN?) basierend auf dem Treiber des Bootlaufwerks automatisch auswählen
  • Den Standard-Kernel und das Initramfs von GRUB abrufen
  • Überprüfungen für Boot von SAN oder lokale Boot-Szenarien laden
  • Einen Pseudonamen für das echte Festplattengerät festlegen
  • Den LVM-Filter definieren

In der Einrichtungphase nimmt diese Rolle (Systemänderungen) vor:

  • Sichern einiger Systemdateien, wie /etc/fstab, aktuelles Initramfs und /etc/lvm/lvm.conf
  • Entfernen der aktuellen DM Multipath-Konfigurationsdateien
  • Erstellen einer initialen /etc/multipath.conf-Datei
  • Einrichten der /etc/multipath.conf-Datei und Überprüfung auf Syntax oder Fehler
  • Einrichten der /etc/fstab
  • Einrichten des LVM-Filters und Überprüfung auf Syntax oder Fehler
  • Einrichten der Modprobe-Dateien und Überprüfung auf Syntax oder Fehler
  • Einrichten des Initramfs und Überprüfung auf Fehler
  • Im Falle von Fehlern werden zusätzliche Dateien entfernt und Systemdateien anhand des vorherigen Backups zurückgesetzt
  • System neu starten
  • Vorherige Sicherungsdateien entfernen

Anforderungen

Das Playbook muss mit become: yes oder entsprechender Root-Berechtigung und gather_facts: yes ausgeführt werden.

  • Ansible Engine 2.7.1+

Rollenvariablen

Die Multipath-Rolle wird über Variablen konfiguriert, die mit multipath_ als Namenspräfix beginnen.

Liste der Variablen:

Variable Typ Beschreibung
multipath_setup_pseudodevname Zeichenfolge (m) * Definieren Sie den Pseudogerätenamen (Alias) für das Bootlaufwerk, das von DM Multipath verwaltet wird
multipath_package_install boolean (o) Installieren Sie das Paket device-mapper-multipath, wenn es nicht vorhanden ist
multipath_package_upgrade boolean (r) Upgrade (auch installieren) des Pakets device-mapper-multipath
multipath_preserve_currentfiles boolean (r) Vor der Einrichtung eine permanente Kopie der aktuellen DM Multipath-Konfigurationsdateien erstellen
multipath_reboot_allow boolean (r) Erlauben Sie dieser Rolle, den verwalteten Knoten neu zu starten
multipath_reboot_timeoutguest ganze Zahl (o) Maximale Zeit (Sek.) für 'Neustart', während auf das Online-Werden eines verwalteten Gastsystems gewartet wird
multipath_reboot_timeoutbaremetal ganze Zahl (o) Maximale Zeit (Sek.) für 'Neustart', während auf das Online-Werden eines verwalteten Bare-Metal-Systems gewartet wird
multipath_modprobe_custom Liste (o) Laden und Definieren von Treiberparametern in Bezug auf den Hersteller oder das Modell des Bootlaufwerks
multipath_configfile_commentlines boolean (o) * Kommentieren Sie alle Zeilen in /etc/multipath.conf
multipath_configfile_bybasic boolean (o) * Überschreibt die Datei /etc/multipath.conf mit einer grundlegenden und funktionalen Konfiguration
multipath_configfile_bytemplate boolean (o) Überschreibt die Datei /etc/multipath.conf mit vordefinierten Rollenvorlagen
multipath_configfile_byusertemplate Zeichenfolge (o) Überschreibt die Datei /etc/multipath.conf mit einer benutzerdefinierten Vorlage
multipath_configfile_bysections Zeichenfolge (o) Beinhaltet benutzerdefinierte Abschnitte in der Datei /etc/multipath.conf
multipath_configfile_defaults Liste (o) Beinhaltet zusätzliche Parameter im "defaults {"-Abschnitt der Datei /etc/multipath.conf
multipath_debug_sysfilecontent boolean (o) Zeige vor Post-Setup-Aufgaben (z.B. Neustart) den Inhalt der modifizierten Systemdateien an
multipath_debug_showvariables boolean (r) Zeige Rollenvariablen und deren Werte

(m) - obligatorisch
(r) - empfohlen
(o) - optional
* - Standardwert wird angewendet (siehe defaults/main.yml)

Erklärte Liste der Variablen:

  • multipath_setup_pseudodevname: definiert den Pseudogerätenamen (Alias) für das Bootlaufwerk, das von DM Multipath verwaltet wird (z.B. /dev/mapper/bootLUN)

    Typ: Zeichenfolge

    Betroffene Dateien:

    • /etc/fstab
    • /etc/multipath.conf

    Beispiel:

    multipath_setup_pseudodevname: bootLUN
    

    HINWEIS: Verwenden Sie keine "p" oder numerischen Zeichen


  • multipath_package_install: installiert das Paket device-mapper-multipath, wenn es nicht vorhanden ist

    Typ: boolean

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_package_install: ja
    

  • multipath_package_upgrade: aktualisiert (auch installiert) das Paket device-mapper-multipath

    Typ: boolean

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_package_upgrade: ja
    

  • multipath_preserve_currentfiles: macht vor der Einrichtung eine permanente Kopie der aktuellen DM Multipath-Konfigurationsdateien, wie z.B. /etc/multipath.conf und /etc/multipath/

    Typ: boolean

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_preserve_currentfiles: ja
    

    HINWEIS: Bewahrte Dateien werden als /etc/multipath.conf.ansible_multipath und /etc/multipath.ansible_multipath/ gespeichert. Sobald diese Dateien kopiert sind, wird die Rolle sie nie wieder berühren; für das Verzeichnis wird im Anhangsmodus gearbeitet.


  • multipath_reboot_allow: erlaubt dieser Rolle, den verwalteten Knoten neu zu starten

    Typ: boolean

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_reboot_allow: ja
    

  • multipath_reboot_timeoutguest: maximale Zeit (Sek.) für 'Neustart', während auf das Wieder-online-werden eines verwalteten Gastsystems gewartet wird

    Typ: ganze Zahl

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_reboot_timeoutguest: 300
    

  • multipath_reboot_timeoutbaremetal: maximale Zeit (Sek.) für 'Neustart', während auf das Wieder-online-werden eines verwalteten Bare-Metal-Systems gewartet wird

    Typ: ganze Zahl

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_reboot_timeoutbaremetal: 1800
    

  • multipath_modprobe_custom: lädt und definiert Treiberparameter in Bezug auf den Hersteller oder das Modell des Bootlaufwerks, erstellt eine Modprobe-Datei gemäß dem Modulnamen. - bitte beachten Sie Ihren Leitfaden zur Verbindung bezüglich des Anbieters des Enterprise Storage Arrays

    Typ: Liste

    Betroffene Dateien:

    • /etc/modprobe.d/<module-name>.conf

    Beispiel:

    multipath_modprobe_custom:
      - modul: lpfc
        params: lpfc_max_luns=65535 lpfc_devloss_tmo=10
        hersteller: EMC
        modell: any
      - modul: lpfc
        params: lpfc_max_luns=65535 lpfc_devloss_tmo=14 lpfc_lun_queue_depth=16 lpfc_discovery_threads=32
        hersteller: 3PARdata
        modell: VV
      - modul: qla2xxx
        params: ql2xmaxlun=65535 qlport_down_retry=14 ql2xmaxqdepth=16
        hersteller: 3PARdata
        modell: VV
      - modul: scsi_transport_fc
        params: dev_loss_tmo=10
        hersteller: any
        modell: any
    

    HINWEIS: die Verwendung des Wertes "any" passt die Treiberparameter an, ohne dass das Bootlaufwerksgerät validiert wird. Sie können eine vollständige Gerätesliste über multipath -t erhalten.


  • multipath_configfile_commentlines: kommentiert alle Zeilen in /etc/multipath.conf, nachdem das mpathconf-Tool eine initiale Konfigurationsdatei erstellt hat

    Typ: boolean

    Betroffene Dateien:

    • /etc/multipath.conf

    Beispiel:

    multipath_configfile_commentlines: ja
    

  • multipath_configfile_bybasic: überschreibt die Datei /etc/multipath.conf mit einer grundlegenden und funktionalen Konfiguration (ursprüngliche Dateikommentare werden nicht beibehalten)

    Typ: boolean

    Betroffene Dateien:

    • /etc/multipath.conf

    Abhängigkeiten:

    • multipath_configfile_commentlines: ja

    Beispiel:

    multipath_configfile_bybasic: ja
    

  • multipath_configfile_bytemplate: überschreibt die Datei /etc/multipath.conf mit vordefinierten Rollenvorlagen (z.B. templates/bootfromsan_multipath.conf.j2) mit grundlegender funktionaler Konfiguration (ursprüngliche Dateikommentare werden beibehalten)

    Typ: boolean

    Betroffene Dateien:

    • /etc/multipath.conf

    Beispiel:

    multipath_configfile_bytemplate: ja
    

  • multipath_configfile_byusertemplate: überschreibt die Datei /etc/multipath.conf mit einer benutzerdefinierten Vorlage, die Datei muss auf derselben Ebene wie das Playbook oder in 'templates' liegen; ebenso können Sie Rollendaten verwenden, siehe 'templates/bootfromsan_multipath.conf.j2'

    Typ: Zeichenfolge (Dateipfad)

    Betroffene Dateien:

    • /etc/multipath.conf

    Beispiel:

    multipath_configfile_byusertemplate: mymultipath.conf.j2
    

  • multipath_configfile_bysections: schließt benutzerdefinierte Abschnitte in die Datei /etc/multipath.conf ein

    Typ: Zeichenfolge (mehrzeilig)

    Betroffene Dateien:

    • /etc/multipath.conf

    Beispiel:

    multipath_configfile_bysections: |
    
      geräte {
              gerät {
                      hersteller                   "COMPAQ  "
                      produkt                     "HSV110 (C)COMPAQ"
                      pfad_gruppierungspolitik     multibus
                      pfad_prüfer                  readsector0
                      pfad_wähler                 "round-robin 0"
                      hardware_handler             "0"
                      failback                   15
                      rr_weight                  priorities
                      kein_pfad_wiederholung      warteschlange
              }
      }
    

    HINWEIS: optional in Kombination mit multipath_configfile_commentlines: ja


  • multipath_configfile_defaults: schließt zusätzliche Parameter im "defaults {"-Abschnitt für die Datei /etc/multipath.conf ein

    Typ: Liste

    Betroffene Dateien:

    • /etc/multipath.conf

    Beispiel:

    multipath_configfile_defaults:
      - detect_prio no
      - failback "manual"
      - max_fds 1048576
      - max_polling_interval 20
    

  • multipath_debug_sysfilecontent: zeigt vor den Post-Setup-Aufgaben (z.B. Neustart) den Inhalt der modifizierten Systemdateien im Playbook-Stream an, wie eine Aufgabe; Dateien: /etc/fstab, /etc/lvm/lvm.conf und /etc/multipath.conf

    Typ: boolean

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_debug_sysfilecontent: ja
    

  • multipath_debug_showvariables: zeigt Rollenvariablen und deren Werte

    Typ: boolean

    Betroffene Dateien: k.A.

    Beispiel:

    multipath_debug_showvariables: ja
    

Abhängigkeiten

k.A.

Tags

Es gibt zwei verfügbare Tags:

  • role:multipath:prereqs: Rollenvoraussetzungen, Überprüfung der Rollenvariablen, keine Systemänderungen

    ansible-playbook multipathing.yml --tags role:multipath:prereqs
    
  • role:multipath:presetup: Vorbereitungsvalidierungen, keine Systemänderungen (außer wenn die Installation oder das Upgrade des DM Multipath-Pakets mit den Variablen multipath_package_install oder multipath_package_upgrade angefordert wird)

    ansible-playbook multipathing.yml --tags role:multipath:presetup
    

Beispiel-Playbook

Ein einfaches Playbook sollte wie folgt aussehen:

- hosts: servers
  become: ja
  gather_facts: ja

  roles:
    - cdomingos.multipath

Eine Liste der Beispiel-Playbooks finden Sie im Verzeichnis tests/ in der Rollendateistruktur.

Lizenz

MIT

Autoreninformation

Diese Rolle wurde 2019 von Cláudio Domingos erstellt.

Zusätzliche Informationen

Getestet auf:

  • HP ProLiant BL460c Gen9 (UEFI)
  • 3PAR Speicherarray
  • HP ProLiant BL460c G7
  • VMAX Speicherarray
  • RHEL 8
  • RHEL 7
  • RHEL 6
  • Fedora 31

Es ist sehr geeignet, diese Rolle für Bare-Metal-Maschinen zu verwenden; Gäste machen keinen Sinn, da hochverfügbare Multipathing-Software auf Hypervisorebene vorhanden sein muss.

Wollen Sie eine Konfiguration der besten Praktiken für DM Multipath mit einem bestimmten Storage Array anwenden? Wenden Sie sich an Ihren Storage Array-Anbieter, oder suchen Sie nach dem Host Connectivity Guide for Linux und überprüfen Sie, was Ihr Storage Array-Anbieter empfiehlt.

Diese Rolle ist inspiriert von:

TODO

Lösen Sie kritische Probleme wie dracut Warning: LVM rootvg/rootlv not found

a. Implementierung eines Skripts, um beim Initramfs/dracut-Bootprozess während des Neustarts bei einem Systemabsturz zurückgerollt zu werden
b. Aktivieren Sie das Netzwerk und den sshd-Dienst im Initramfs/dracut-Bootprozess und führen Sie erforderliche Rettungsaufgaben durch, um dies mit Ansible zu beheben.

Über das Projekt

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

Installieren
ansible-galaxy install cdomingos.multipath
GitHub Repository
Lizenz
mit
Downloads
1.7k
Besitzer