multipath

Ansible Роль: Мультипутевое соединение (DM Multipath)

Это хорошая ansible роль, которая корректно настраивает программное обеспечение для мультипутевого соединения Linux (DM Multipath) для сценариев Загрузка с SAN или Локальная загрузка.

Эта мультипутевая ansible роль может:

  • Настроить DM Multipath в соответствии с документацией продукта и лучшими практиками отрасли.
  • Настроить параметры драйвера.

Внимание

Эта роль заменяет конфигурацию DM Multipath
Предыдущие настройки будут перезаписаны, проверьте multipath_backup_permanent в разделе переменных роли.

Эта конфигурация влияет на следующие каталоги и файлы конфигурации:

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

Если после перезагрузки управляемого хоста возникнут проблемы, ошибки в initramfs могут привести к Kernel panic при загрузке с сообщением "dracut Warning: LVM rootvg/rootlv не найден"

В этом случае я рекомендую:

  1. Перезагрузить систему, используя образ Rescue ISO.
  2. Вернуть обратно основные файлы:
    • /boot/<оригинальный-initramfs>.img.ansible_multipath
    • /etc/fstab.ansible_multipath
    • /etc/lvm/lvm.conf.ansible_multipath

ПРИМЕЧАНИЕ: существует множество способов вернуть систему в рабочее состояние, такие параметры загрузки ядра, как rdshell или rd.shell, плюс удаление rhgb и quiet, могут помочь вам устранить неполадки вашего поврежденного initramfs.

Как это работает?

Существует два основных этапа: предварительная настройка и настройка.

На этапе предварительной настройки эта роль выполняет (без изменений в системе, кроме установки пакетов, если это указано):

  • Проверяет, установлен ли пакет device-mapper-multipath (вы можете установить или обновить его. Смотрите переменные).
  • Получает свойства устройства для файловой системы, смонтированной на /boot, также для /boot/efi.
  • Получает свойства и находит реальное дисковое устройство для файловой системы, смонтированной на /boot.
  • Загружает драйверы модулей в зависимости от производителя и модели обнаруженного реального дискового устройства.
  • Автоматически выбирает тип конфигурации (Загрузка с SAN?) в зависимости от драйвера дискового устройства загрузки.
  • Получает стандартное ядро GRUB и initramfs.
  • Загружает проверки для сценариев Загрузки с SAN или Локальной Загрузки.
  • Определяет псевдоним для реального дискового устройства.
  • Определяет фильтр LVM.

На этапе настройки эта роль выполняет (изменения в системе):

  • Резервирует некоторые системные файлы, такие как /etc/fstab, текущий initramfs и /etc/lvm/lvm.conf.
  • Удаляет текущие файлы конфигурации DM Multipath.
  • Создает начальный файл /etc/multipath.conf.
  • Настраивает файл /etc/multipath.conf и проверяет на наличие синтаксических ошибок.
  • Настраивает /etc/fstab.
  • Настраивает фильтр LVM и проверяет на наличие синтаксических ошибок.
  • Настраивает файлы modprobe и проверяет на наличие синтаксических ошибок.
  • Настраивает initramfs и проверяет на наличие ошибок.
  • В случае ошибок удаляет лишние файлы и выполняет откат системных файлов, используя предыдущую резервную копию.
  • Перезагружает систему.
  • Удаляет предыдущие резервные системные файлы.

Требования

Плейбук должен выполняться с become: yes или эквивалентными правами root и gather_facts: yes.

  • Ansible Engine 2.7.1+

Переменные роли

Роль multipath настраивается с помощью переменных, начинающихся с multipath_ как префикса имени.

Список переменных:

Переменная Тип Описание
multipath_setup_pseudodevname строка (m) * Определяет псевдоним устройства (алиас) для загрузочного диска, управляемого DM Multipath
multipath_package_install логическое (o) Установить пакет device-mapper-multipath, если он не установлен
multipath_package_upgrade логическое (r) Обновить (также установить) пакет device-mapper-multipath
multipath_preserve_currentfiles логическое (r) Перед этапом настройки сделать постоянную копию текущих файлов конфигурации DM Multipath
multipath_reboot_allow логическое (r) Разрешить этой роли перезагрузить управляемый узел
multipath_reboot_timeoutguest целое число (o) Максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая система Guest снова станет онлайн
multipath_reboot_timeoutbaremetal целое число (o) Максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая Bare Metal система снова станет онлайн
multipath_modprobe_custom список (o) Загружает и определяет параметры драйверов, относящиеся к производителю или модели загрузочного диска
multipath_configfile_commentlines логическое (o) * Закомментировать все строки в /etc/multipath.conf
multipath_configfile_bybasic логическое (o) * Перезаписывает файл /etc/multipath.conf, используя базовую и функциональную конфигурацию
multipath_configfile_bytemplate логическое (o) Перезаписывает файл /etc/multipath.conf, используя предварительно определенные шаблоны роли
multipath_configfile_byusertemplate строка (o) Перезаписывает файл /etc/multipath.conf, используя пользовательский шаблон файла
multipath_configfile_bysections строка (o) Включает пользовательские секции в файл /etc/multipath.conf
multipath_configfile_defaults список (o) Включает дополнительные параметры в секцию "defaults {" для /etc/multipath.conf
multipath_debug_sysfilecontent логическое (o) Перед пост-настройкой (например, перезагрузкой) показать содержимое измененных системных файлов
multipath_debug_showvariables логическое (r) Показать переменные роли и их значения

(m) - обязательный
(r) - рекомендуемый
(o) - необязательный
* - применяется значение по умолчанию ( см. defaults/main.yml )

Объясненный список переменных:

  • multipath_setup_pseudodevname: определяет псевдоним устройства (алиас) для загрузочного диска, управляемого DM Multipath (например, /dev/mapper/bootLUN)

    тип: строка

    затронутые файлы:

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

    пример:

    multipath_setup_pseudodevname: bootLUN
    

    ПРИМЕЧАНИЕ: не используйте "p" или числовые символы


  • multipath_package_install: установить пакет device-mapper-multipath, если он не установлен

    тип: логическое

    затронутые файлы: нет

    пример:

    multipath_package_install: yes
    

  • multipath_package_upgrade: обновить (также установить) пакет device-mapper-multipath

    тип: логическое

    затронутые файлы: нет

    пример:

    multipath_package_upgrade: yes
    

  • multipath_preserve_currentfiles: перед этапом настройки сделать постоянную копию текущих файлов конфигурации DM Multipath, таких как /etc/multipath.conf и /etc/multipath/

    тип: логическое

    затронутые файлы: нет

    пример:

    multipath_preserve_currentfiles: yes
    

    ПРИМЕЧАНИЕ: сохраненные файлы будут храниться как /etc/multipath.conf.ansible_multipath и /etc/multipath.ansible_multipath/, как только эти файлы будут скопированы, роль больше никогда к ним не будет обращаться, для каталога это работает в режиме добавления.


  • multipath_reboot_allow: разрешить этой роли перезагрузить управляемый узел

    тип: логическое

    затронутые файлы: нет

    пример:

    multipath_reboot_allow: yes
    

  • multipath_reboot_timeoutguest: максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая система Guest снова станет онлайн

    тип: целое число

    затронутые файлы: нет

    пример:

    multipath_reboot_timeoutguest: 300
    

  • multipath_reboot_timeoutbaremetal: максимальное время (сек) для 'перезагрузки', ожидая, пока управляемая Bare Metal система снова станет онлайн

    тип: целое число

    затронутые файлы: нет

    пример:

    multipath_reboot_timeoutbaremetal: 1800
    

  • multipath_modprobe_custom: загружает и определяет параметры драйверов, относящиеся к производителю или модели загрузочного диска, создавая файл modprobe в зависимости от имени модуля. - пожалуйста, обратитесь к вашему руководству по подключению о производителе системы хранения данных.

    тип: список

    затронутые файлы:

    • /etc/modprobe.d/<имя-модуля>.conf

    пример:

    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
    

    ПРИМЕЧАНИЕ: использование значения "any" будет регулировать параметры драйвера, не проверяя/не валидируя драйвер дискового устройства загрузки, вы можете получить полный список устройств через multipath -t.


  • multipath_configfile_commentlines: закомментировать все строки в /etc/multipath.conf после создания инструмента mpathconf начального конфигурационного файла

    тип: логическое

    затронутые файлы:

    • /etc/multipath.conf

    пример:

    multipath_configfile_commentlines: yes
    

  • multipath_configfile_bybasic: перезаписывает файл /etc/multipath.conf, используя базовую и функциональную конфигурацию (оригинальные комментарии в файле не сохраняются)

    тип: логическое

    затронутые файлы:

    • /etc/multipath.conf

    зависимости:

    • multipath_configfile_commentlines: yes

    пример:

    multipath_configfile_bybasic: yes
    

  • multipath_configfile_bytemplate: перезаписывает файл /etc/multipath.conf, используя заранее определенные шаблоны роли (например, templates/bootfromsan_multipath.conf.j2) с основной функциональной конфигурацией (оригинальные комментарии в файле сохраняются)

    тип: логическое

    затронутые файлы:

    • /etc/multipath.conf

    пример:

    multipath_configfile_bytemplate: yes
    

  • multipath_configfile_byusertemplate: перезаписывает файл /etc/multipath.conf, используя файл пользовательского шаблона, файл должен находиться на уровне каталога плейбука или 'templates', вы также можете использовать факты роли, см. файл 'templates/bootfromsan_multipath.conf.j2'

    тип: строка (путь к файлу)

    затронутые файлы:

    • /etc/multipath.conf

    пример:

    multipath_configfile_byusertemplate: mymultipath.conf.j2
    

  • multipath_configfile_bysections: включает пользовательские секции в файл /etc/multipath.conf

    тип: строка (многострочная)

    затронутые файлы:

    • /etc/multipath.conf

    пример:

    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
              }
      }
    

    ПРИМЕЧАНИЕ: опционально в сочетании с multipath_configfile_commentlines: yes.


  • multipath_configfile_defaults: включает дополнительные параметры в секцию "defaults {" для /etc/multipath.conf.

    тип: список

    затронутые файлы:

    • /etc/multipath.conf

    пример:

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

  • multipath_debug_sysfilecontent: перед выполнением пост-настройки (например, перезагрузки), показать содержимое измененных системных файлов в потоке плейбука, как задачу, файлы: /etc/fstab, /etc/lvm/lvm.conf и /etc/multipath.conf.

    тип: логическое

    затронутые файлы: нет

    пример:

    multipath_debug_sysfilecontent: yes
    

  • multipath_debug_showvariables: показать переменные роли и их значения

    тип: логическое

    затронутые файлы: нет

    пример:

    multipath_debug_showvariables: yes
    

Зависимости

Нет

Теги

Существует два доступных тега:

  • role:multipath:prereqs: предварительные условия роли, проверить переменные роли, без изменений в системе.

    ansible-playbook multipathing.yml --tags role:multipath:prereqs
    
  • role:multipath:presetup: проверки перед настройкой, без изменений в системе (кроме запроса на установку или обновление пакета DM Multipath с помощью переменных multipath_package_install или multipath_package_upgrade).

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

Пример Плейбука

Базовый плейбук должен выглядеть так:

- hosts: servers
  become: yes
  gather_facts: yes

  roles:
    - cdomingos.multipath

Список примерных плейбуков можно найти в tests/ в структуре каталога роли.

Лицензия

MIT

Информация об авторе

Эта роль была создана в 2019 году Cláudio Domingos

Дополнительная информация

Протестировано на:

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

Эта роль очень подходит для Bare Metal машин, использование виртуальных машин не имеет смысла, так как программное обеспечение для высокодоступного мультипутевого соединения должно находиться на уровне гипервизора.

Хотите применить лучшие практики конфигурации DM Multipath, используя конкретный массив хранения? Свяжитесь с вашим поставщиком массива хранения, а также вы можете поискать Руководство по подключению хостов для Linux и проверить, что рекомендует ваш поставщик массива хранения.

Эта роль вдохновлена:

Список задач

Решение критической проблемы, такой как dracut Warning: LVM rootvg/rootlv не найден.

a. Реализация скрипта для отката на этапе загрузки initramfs/dracut, когда система выходит из строя во время цикла перезагрузки.
b. Включение сетевой и sshd службы на этапе загрузки initramfs/dracut и выполнение необходимых спасательных задач с помощью Ansible.

О проекте

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

Установить
ansible-galaxy install cdomingos/ansible-role-multipath
Лицензия
mit
Загрузки
1634
Владелец