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" になります。
この場合には以下をお勧めします:
- リカバリーISOイメージを使用してシステムを再起動します。
- 主なファイルを元に戻します:
- /boot/<original-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マウントされたファイルシステムの実際のディスクデバイスを発見
- 発見された実際のブートディスクデバイスに基づいて、ベンダーとモデルからドライバをロード
- ブートディスクデバイスのドライバに基づいて構成のタイプを自動選択 (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:prereqsrole: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用ホスト接続ガイドを検索し、ストレージアレイのベンダーが推奨することを確認できます。
このロールは次のものからインスパイアを受けています:
- Red Hat Enterprise Linux 8 Configuring Device Mapper Multipath ガイド
- Red Hat Enterprise Linux 7 Configuring Device Mapper Multipath ガイド
- Red Hat Enterprise Linux 6 Configuring Device Mapper Multipath ガイド
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