cdomingos.multipath
Rola Ansible: Multipath (DM Multipath)
Dobra rola Ansible, która prawidłowo wdraża i konfiguruje natywne oprogramowanie multipath dla systemów Linux (DM Multipath) w scenariuszach Boot from SAN lub Local Boot.
Ta rola multipath jest w stanie:
- skonfigurować DM Multipath zgodnie z dokumentacją produktu i najlepszymi praktykami przemysłowymi
- skonfigurować parametry sterowników
Ostrzeżenie
Ta rola zastępuje konfigurację DM Multipath
Poprzednie ustawienia zostaną nadpisane, sprawdź multipath_backup_permanent
w sekcji Zmienne Roli.
Ta konfiguracja wpływa na następujące katalogi i pliki konfiguracyjne:
/etc/multipath/
/etc/multipath.conf
Jeśli po ponownym uruchomieniu zarządzanego hosta pojawią się błędy, niektóre błędy w initramfs mogą prowadzić do Kernel panic on boot following "dracut Warning: LVM rootvg/rootlv not found"
W takim przypadku zalecam:
- uruchom system za pomocą obrazu ISO Rescue
- przywróć główne pliki:
- /boot/<original-initramfs>.img.ansible_multipath
- /etc/fstab.ansible_multipath
- /etc/lvm/lvm.conf.ansible_multipath
UWAGA: istnieje wiele sposobów przywrócenia systemu do stanu operacyjnego, parametry rozruchowe jądra, takie jak rdshell
lub rd.shell
oraz usunięcie rhgb
i quiet
, mogą pomóc w rozwiązywaniu problemów z zepsutym initramfs.
Jak to działa?
Są dwie główne fazy: pre-setup i setup.
W fazie pre-setup rola ta wykonuje (bez zmian w systemie, z wyjątkiem instalacji pakietów, jeśli zadeklarowane):
- sprawdzanie, czy pakiet device-mapper-multipath jest zainstalowany (możesz go zainstalować lub zaktualizować. Zobacz zmienne)
- pobieranie właściwości urządzenia dla systemu plików zamontowanego w /boot, również dla /boot/efi
- pobieranie właściwości i odkrywanie rzeczywistego urządzenia dyskowego dla zamontowanego systemu plików /boot
- ładowanie sterowników modprobe zgodnie z producentem i modelem odkrytego rzeczywistego urządzenia dyskowego
- automatyczny wybór typu konfiguracji (Boot from SAN?) na podstawie sterownika urządzenia dyskowego
- pobieranie domyślnego jądra GRUB i initramfs
- ładowanie weryfikacji dla scenariuszy Boot from SAN lub Local Boot
- definiowanie pseudonimu dla rzeczywistego urządzenia dyskowego
- definiowanie filtru LVM
W fazie setup rola ta dokonuje zmian w systemie:
- tworzenie kopii zapasowej niektórych plików systemowych, takich jak /etc/fstab, obecny initramfs i /etc/lvm/lvm.conf
- usuwanie aktualnych plików konfiguracyjnych DM Multipath
- tworzenie początkowego pliku /etc/multipath.conf
- konfigurowanie pliku /etc/multipath.conf i sprawdzanie składni lub błędów
- konfigurowanie /etc/fstab
- konfigurowanie filtru LVM i sprawdzanie składni lub błędów
- konfigurowanie plików modprobe i sprawdzanie składni lub błędów
- konfigurowanie initramfs i sprawdzanie błędów
- w przypadku błędów usuwanie dodatkowych plików i przywracanie plików systemowych z wcześniejszej kopii zapasowej
- ponowne uruchomienie systemu
- usunięcie wcześniejszych plików systemowych kopii zapasowej
Wymagania
Playbook musi być uruchomiony z become: yes
lub równoważnymi uprawnieniami roota oraz gather_facts: yes
.
- Ansible Engine 2.7.1+
Zmienne Roli
Rola multipath jest konfigurowana za pomocą zmiennych rozpoczynających się od multipath_
jako prefiksu.
Lista zmiennych:
Zmienna | Typ | Opis |
---|---|---|
multipath_setup_pseudodevname |
ciąg (m) | Definiuje pseudonim urządzenia (alias) dla zarządzanego dysku startowego przez DM Multipath |
multipath_package_install |
boolean (o) | Instaluj pakiet device-mapper-multipath, jeśli nie jest obecny |
multipath_package_upgrade |
boolean (r) | Aktualizuj (także zainstaluj) pakiet device-mapper-multipath |
multipath_preserve_currentfiles |
boolean (r) | Przed fazą setup utwórz trwałą kopię aktualnych plików konfiguracyjnych DM Multipath |
multipath_reboot_allow |
boolean (r) | Zezwól na ponowne uruchomienie zarządzanego węzła przez tę rolę |
multipath_reboot_timeoutguest |
całkowita (o) | Maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu gościa online |
multipath_reboot_timeoutbaremetal |
całkowita (o) | Maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu Bare Metal online |
multipath_modprobe_custom |
lista (o) | Ładowanie i definiowanie parametrów sterowników związanych z producentem lub modelem dysku rozruchowego |
multipath_configfile_commentlines |
boolean (o) | Komentuj wszystkie linie w /etc/multipath.conf |
multipath_configfile_bybasic |
boolean (o) | Nadpisuje plik /etc/multipath.conf używając podstawowej i funkcjonalnej konfiguracji |
multipath_configfile_bytemplate |
boolean (o) | Nadpisuje plik /etc/multipath.conf używając wstępnie zdefiniowanych szablonów ról |
multipath_configfile_byusertemplate |
ciąg (o) | Nadpisuje plik /etc/multipath.conf używając własnego szablonu pliku |
multipath_configfile_bysections |
ciąg (o) | Dołącza niestandardowe sekcje do pliku /etc/multipath.conf |
multipath_configfile_defaults |
lista (o) | Dołącza dodatkowe parametry w sekcji "defaults {" dla /etc/multipath.conf |
multipath_debug_sysfilecontent |
boolean (o) | Przed zadaniami po setupie (np. ponownym uruchomieniem), pokazuje zawartość zmodyfikowanych plików systemowych |
multipath_debug_showvariables |
boolean (r) | Pokazuje zmienne roli i ich wartości |
(m) - obowiązkowe
(r) - zalecane
(o) - opcjonalne
* - wartość domyślna jest stosowana (zobacz defaults/main.yml
)
Wyjaśniona lista zmiennych:
multipath_setup_pseudodevname
: definiuje pseudonim urządzenia (alias) dla zarządzanego dysku startowego przez DM Multipath (np. /dev/mapper/bootLUN)typ: ciąg
dotknięte pliki:
- /etc/fstab
- /etc/multipath.conf
przykład:
multipath_setup_pseudodevname: bootLUN
UWAGA: nie używaj "p" ani znaków numerycznych
multipath_package_install
: zainstaluj pakiet device-mapper-multipath, jeśli nie jest obecnytyp: boolean
dotknięte pliki: brak
przykład:
multipath_package_install: yes
multipath_package_upgrade
: zaktualizuj (także zainstaluj) pakiet device-mapper-multipathtyp: boolean
dotknięte pliki: brak
przykład:
multipath_package_upgrade: yes
multipath_preserve_currentfiles
: przed fazą setup utwórz trwałą kopię aktualnych plików konfiguracyjnych DM Multipath, takich jak /etc/multipath.conf i /etc/multipath/typ: boolean
dotknięte pliki: brak
przykład:
multipath_preserve_currentfiles: yes
UWAGA: zachowane pliki będą przechowywane jako /etc/multipath.conf.ansible_multipath i /etc/multipath.ansible_multipath/, po skopiowaniu tych plików rola nie dotknie ich więcej, dla katalogu działa w trybie doklejania.
multipath_reboot_allow
: zezwól tej roli na ponowne uruchomienie zarządzanego węzłatyp: boolean
dotknięte pliki: brak
przykład:
multipath_reboot_allow: yes
multipath_reboot_timeoutguest
: maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu gościa onlinetyp: całkowita liczba
dotknięte pliki: brak
przykład:
multipath_reboot_timeoutguest: 300
multipath_reboot_timeoutbaremetal
: maksymalny czas (s) na ponowne uruchomienie oczekując na powrót systemu Bare Metal onlinetyp: całkowita liczba
dotknięte pliki: brak
przykład:
multipath_reboot_timeoutbaremetal: 1800
multipath_modprobe_custom
: ładowanie i definiowanie parametrów sterowników związanych z producentem lub modelem dysku rozruchowego, generując plik modprobe zgodnie z nazwą modułu - proszę sprawdzić przewodnik po łączności dla producenta macierzy pamięci masowejtyp: lista
dotknięte pliki:
- /etc/modprobe.d/<module-name>.conf
przykład:
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
UWAGA: użycie wartości "any" dostosuje parametry sterowników bez dopasowywania/walidacji sterownika urządzenia dyskowego, pełną listę urządzeń możesz uzyskać przez
multipath -t
multipath_configfile_commentlines
: komentuje wszystkie linie w /etc/multipath.conf po utworzeniu początkowego pliku konfiguracyjnego przez narzędzie mpathconftyp: boolean
dotknięte pliki:
- /etc/multipath.conf
przykład:
multipath_configfile_commentlines: yes
multipath_configfile_bybasic
: nadpisuje plik /etc/multipath.conf używając podstawowej i funkcjonalnej konfiguracji (komentarze w oryginalnym pliku nie są zachowywane)typ: boolean
dotknięte pliki:
- /etc/multipath.conf
zależności:
multipath_configfile_commentlines: yes
przykład:
multipath_configfile_bybasic: yes
multipath_configfile_bytemplate
: nadpisuje plik /etc/multipath.conf używając wstępnie zdefiniowanych szablonów rol, (np. templates/bootfromsan_multipath.conf.j2) z podstawową funkcjonalną konfiguracją (komentarze w oryginalnym pliku są zachowywane)typ: boolean
dotknięte pliki:
- /etc/multipath.conf
przykład:
multipath_configfile_bytemplate: yes
multipath_configfile_byusertemplate
: nadpisuje plik /etc/multipath.conf używając własnego szablonu pliku, plik musi znajdować się na poziomie katalogu playbook lub w folderze 'templates', możesz również użyć faktów roli, patrz plik 'templates/bootfromsan_multipath.conf.j2'typ: ciąg (ścieżka do pliku)
dotknięte pliki:
- /etc/multipath.conf
przykład:
multipath_configfile_byusertemplate: mymultipath.conf.j2
multipath_configfile_bysections
: dołącza niestandardowe sekcje do pliku /etc/multipath.conftyp: ciąg (wieloliniowy)
dotknięte pliki:
- /etc/multipath.conf
przykład:
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 } }
UWAGA: opcjonalnie w połączeniu z
multipath_configfile_commentlines: yes
multipath_configfile_defaults
: dołącza dodatkowe parametry w sekcji "defaults {" dla /etc/multipath.conftyp: lista
dotknięte pliki:
- /etc/multipath.conf
przykład:
multipath_configfile_defaults: - detect_prio no - failback "manual" - max_fds 1048576 - max_polling_interval 20
multipath_debug_sysfilecontent
: przed zadaniami po setupie (np. ponownym uruchomieniem), pokazuje zawartość zmodyfikowanych plików systemowych w strumieniu playbooka jak zadanie, pliki: /etc/fstab, /etc/lvm/lvm.conf i /etc/multipath.conftyp: boolean
dotknięte pliki: brak
przykład:
multipath_debug_sysfilecontent: yes
multipath_debug_showvariables
: pokazuje zmienne roli i ich wartoścityp: boolean
dotknięte pliki: brak
przykład:
multipath_debug_showvariables: yes
Zależności
Brak
Tagi
Dostępne są dwa tagi:
role:multipath:prereqs
: wymagania wstępne roli, sprawdzanie zmiennych roli, bez zmian w systemieansible-playbook multipathing.yml --tags role:multipath:prereqs
role:multipath:presetup
: walidacje wstępne, bez zmian w systemie (z wyjątkiem żądania instalacji lub aktualizacji pakietu DM Multipath przy użyciu zmiennych multipath_package_install lub multipath_package_upgrade)ansible-playbook multipathing.yml --tags role:multipath:presetup
Przykład Playbooka
Podstawowy playbook powinien wyglądać tak:
- hosts: servers
become: yes
gather_facts: yes
roles:
- cdomingos.multipath
Lista przykładowych playbooków znajduje się w katalogu tests/
w strukturze katalogów roli.
Licencja
MIT
Informacje o autorze
Ta rola została stworzona w 2019 roku przez Cláudio Domingos
Dodatkowe informacje
Testowano na:
- HP ProLiant BL460c Gen9 (UEFI)
- Macierz pamięci masowej 3PAR
- HP ProLiant BL460c G7
- Macierz pamięci masowej VMAX
- RHEL 8
- RHEL 7
- RHEL 6
- Fedora 31
Bardzo odpowiednia do użycia tej roli w maszynach Bare Metal, goście nie mają sensu, ponieważ oprogramowanie multipathing wysokiej dostępności musi być na poziomie hypervisora.
Czy chcesz zastosować konfigurację najlepszych praktyk DM Multipath z użyciem konkretnej macierzy pamięci masowej? Skontaktuj się z dostawcą macierzy pamięci masowej, możesz także poszukać Host Connectivity Guide for Linux i sprawdzić, co zaleca dostawca Twojej macierzy pamięci masowej.
Ta rola jest inspirowana:
- Red Hat Enterprise Linux 8 Konfiguracja Device Mapper Multipath
- Red Hat Enterprise Linux 7 Konfiguracja Device Mapper Multipath
- Red Hat Enterprise Linux 6 Konfiguracja Device Mapper Multipath
TODO
Rozwiązanie krytycznego problemu, takiego jak dracut Warning: LVM rootvg/rootlv not found
a. Implementacja skryptu do przywracania w etapie rozruchu initramfs/dracut, когда системный крах в процессе перезагрузки
b. Włączenie sieci i usługi sshd w etapie rozruchu initramfs/dracut oraz wykonanie niezbędnych operacji ratunkowych w celu naprawy za pomocą Ansible
Configure native linux multipathing (DM Multipath) for Boot from SAN or Local Boot
ansible-galaxy install cdomingos.multipath