cdomingos.multipath

Ansibleロール: マルチパス (DM マルチパス)

このAnsibleロールは、Boot from SAN または Local Boot シナリオにおいて、Linuxのネイティブマルチパスソフトウェア (DM マルチパス) を適切に展開および設定します。

このマルチパスAnsibleロールは以下のことができます:

  • 製品ドキュメントおよび業界のベストプラクティスに従ってDMマルチパスを設定
  • ドライバーパラメータを設定

警告

このロールはDMマルチパスの設定を置き換えます
以前の設定は上書きされますので、ロール変数セクションのmultipath_backup_permanentを確認してください。

この設定は以下のディレクトリと設定ファイルに影響します:

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

管理ホストを再起動後に問題が発生した場合、initramfsのエラーにより Kernel panic on boot following "dracut Warning: LVM rootvg/rootlv not found" になります。

この場合には以下をお勧めします:

  1. リカバリーISOイメージを使用してシステムを再起動します。
  2. 主なファイルを元に戻します:
    • /boot/<original-initramfs>.img.ansible_multipath
    • /etc/fstab.ansible_multipath
    • /etc/lvm/lvm.conf.ansible_multipath

注意: システムを運用状態に戻す方法はいくつかあります。カーネルブートパラメータの rdshell または rd.shellrhgbquiet の削除により壊れたinitramfsをトラブルシュートできます。

どうやって動作しますか?

二つの主要なステージがあります:事前設定設定

事前設定ステージでは、このロールは以下のことを行います(パッケージのインストールが宣言されていれば、システムの変更はありません):

  • device-mapper-multipathパッケージがインストールされているか確認
  • /bootマウントされたファイルシステムのデバイスのプロパティを取得
  • /bootマウントされたファイルシステムの実際のディスクデバイスを発見
  • 発見された実際のブートディスクデバイスに基づいて、ベンダーとモデルからドライバをロード
  • ブートディスクデバイスのドライバに基づいて構成のタイプを自動選択 (Boot from SAN?)
  • GRUBのデフォルトカーネルとinitramfsを取得
  • Boot from SANまたはLocal Bootシナリオの検証をロード
  • 実際のディスクデバイスに擬似名を定義
  • LVMフィルタを定義

設定ステージでは、このロールは以下のことを行います(システムの変更):

  • /etc/fstab、現在のinitramfs、/etc/lvm/lvm.confなどのいくつかのシステムファイルをバックアップ
  • 現在のDMマルチパス設定ファイルを削除
  • 初期の/etc/multipath.confファイルを作成
  • /etc/multipath.confファイルを設定し、文法やエラーを確認
  • /etc/fstabを設定
  • LVMフィルタを設定し、文法やエラーを確認
  • modprobeファイルを設定し、文法やエラーを確認
  • initramfsを設定し、エラーを確認
  • エラーが発生した場合は追加ファイルを削除し、以前のバックアップを使用してシステムファイルをロールバック
  • システムを再起動
  • 以前のバックアップシステムファイルを削除

要件

プレイブックは become: yes または同等のルート権限および gather_facts: yes で実行する必要があります。

  • Ansible Engine 2.7.1+

ロールの変数

マルチパスロールは、multipath_ で始まる変数で構成されています。

変数の一覧:

変数 説明
multipath_setup_pseudodevname 文字列 (必須) DMマルチパスで管理されるブートディスク用の擬似デバイス名 (エイリアス)を定義
multipath_package_install ブール値 (任意) 存在しない場合、device-mapper-multipathパッケージをインストール
multipath_package_upgrade ブール値 (推奨) device-mapper-multipathパッケージをアップグレード(またはインストール)
multipath_preserve_currentfiles ブール値 (推奨) 設定ステージの前に現在のDMマルチパス設定ファイルの恒久的なコピーを作成
multipath_reboot_allow ブール値 (推奨) このロールに管理ノードを再起動することを許可
multipath_reboot_timeoutguest 整数 (任意) 管理されたゲストシステムがオンラインになるまでの最大待機時間(秒)
multipath_reboot_timeoutbaremetal 整数 (任意) 管理されたベアメタルシステムがオンラインになるまでの最大待機時間(秒)
multipath_modprobe_custom リスト (任意) ブートデバイスディスクベンダーやモデルに関連するドライバーパラメータをロードし定義
multipath_configfile_commentlines ブール値 (任意) mpathconfツールが初期設定ファイルを作成した後、/etc/multipath.confのすべての行をコメントアウト
multipath_configfile_bybasic ブール値 (任意) 基本的で機能的な設定を使用して/etc/multipath.confファイルを上書き
multipath_configfile_bytemplate ブール値 (任意) 事前定義されたロールテンプレートを使用して/etc/multipath.confファイルを上書き
multipath_configfile_byusertemplate 文字列 (任意) カスタムユーザーテンプレートファイルを使用して/etc/multipath.confファイルを上書き
multipath_configfile_bysections 文字列 (任意) /etc/multipath.confファイルにカスタムセクションを含める
multipath_configfile_defaults リスト (任意) /etc/multipath.confの "defaults {" セクションに余分なパラメータを含める
multipath_debug_sysfilecontent ブール値 (任意) 設定後のタスク(例:再起動)の前に変更されたシステムファイルの内容を表示
multipath_debug_showvariables ブール値 (推奨) ロールの変数とその値を表示

(必須) - 必須
(推奨) - 推奨
(任意) - 任意
* - デフォルト値が適用されます(defaults/main.ymlを参照)

変数の詳細な説明:

  • multipath_setup_pseudodevname: DMマルチパスで管理されるブートディスクの擬似デバイス名 (エイリアス)を定義します(例:/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: 設定ステージの前に、/etc/multipath.confや/etc/multipath/など現在のDMマルチパス設定ファイルの恒久的なコピーを作成します。

    型: ブール値

    影響を受けるファイル: 該当なし

    例:

    multipath_preserve_currentfiles: yes
    

    注意: 保持されたファイルは /etc/multipath.conf.ansible_multipath および /etc/multipath.ansible_multipath/ として保存されます。一度これらのファイルがコピーされると、ロールはもう二度とそれらに触れることはありません。ディレクトリに対しては追加モードとして機能します。


  • multipath_reboot_allow: このロールに管理ノードを再起動することを許可します。

    型: ブール値

    影響を受けるファイル: 該当なし

    例:

    multipath_reboot_allow: yes
    

  • multipath_reboot_timeoutguest: 管理されたゲストシステムがオンラインになるまでの最大待機時間(秒)を設定します。

    型: 整数

    影響を受けるファイル: 該当なし

    例:

    multipath_reboot_timeoutguest: 300
    

  • multipath_reboot_timeoutbaremetal: 管理されたベアメタルシステムがオンラインになるまでの最大待機時間(秒)を設定します。

    型: 整数

    影響を受けるファイル: 該当なし

    例:

    multipath_reboot_timeoutbaremetal: 1800
    

  • multipath_modprobe_custom: ブートデバイスディスクベンダーやモデルに関連するドライバーパラメータをロードし定義します。モジュール名に基づいてmodprobeファイルを生成します。- エンタープライズストレージアレイベンダーに関する接続ガイドを参照してください。

    型: リスト

    影響を受けるファイル:

    • /etc/modprobe.d/<module-name>.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: mpathconfツールが初期設定ファイルを作成した後、/etc/multipath.confのすべての行をコメントアウトします。

    型: ブール値

    影響を受けるファイル:

    • /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ファイルを上書きします(元のファイルのコメントは保持されます)。

    型: ブール値

    影響を受けるファイル:

    • /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: /etc/multipath.confの "defaults {" セクションに余分なパラメータを含めます。

    型: リスト

    影響を受けるファイル:

    • /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: 事前設定の検証、システム変更なし(ただし、multipath_package_install または multipath_package_upgrade 変数を使用してDMマルチパスパッケージをインストールまたはアップグレードする場合を除く)

    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

このロールはベアメタルマシンに非常に適しており、ゲストには意味がありません。高可用性マルチパスソフトウェアはハイパーバイザーのレベルで存在する必要があります。

特定のストレージアレイのDMマルチパスのベストプラクティス設定を適用したいですか? ストレージアレイのベンダーに問い合わせてください。また、Linux用ホスト接続ガイドを検索し、ストレージアレイのベンダーが推奨することを確認できます。

このロールは次のものからインスパイアを受けています:

TODO

重大な問題を解決する: dracut Warning: LVM rootvg/rootlv not found

a. システムクラッシュ中に再起動サイクルでinitramfs/dracutブートステージでロールバックするスクリプトを実装します。
b. initramfs/dracutブートステージでネットワークとsshdサービスを有効にし、Ansibleを使用してそれを修正するための必要なリカバリータスクを実行します。

プロジェクトについて

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

インストール
ansible-galaxy install cdomingos.multipath
ライセンス
mit
ダウンロード
1.7k
所有者