15.2. ハードウェアイントロスペクションのトラブルシューティング
イントロスペクションのプロセスは最後まで実行する必要があります。ただし、Ironic の Discovery Daemon (ironic-inspector
) は、discovery ramdisk が応答しない場合にはデフォルトの 1 時間が経過するとタイムアウトします。discovery ramdisk のバグが原因とされる場合もありますが、通常は特に BIOS のブート設定などの環境の誤設定が原因で発生します。
以下には、環境設定が間違っている場合の一般的なシナリオと、診断/解決方法に関するアドバイスを示します。
ノードのイントロスペクション開始におけるエラー
通常、イントロスペクションプロセスは、openstack overcloud node introspect
コマンドを使用します。ただし、ironic-inspector
で直接イントロスペクションを実行している場合には、AVAILABLE の状態のノードの検出に失敗する可能性があります。これはデプロイメント用であり、検出用ではないためです。検出前に、ノードのステータスを MANAGEABLE の状態に変更します。
$ source ~/stackrc (undercloud) $ openstack baremetal node manage [NODE UUID]
検出が完了したら、状態を AVAILABLE に戻してからプロビジョニングを行います。
(undercloud) $ openstack baremetal node provide [NODE UUID]
検出プロセスの停止
イントロスペクションのプロセスを停止します。
$ source ~/stackrc (undercloud) $ openstack baremetal introspection abort [NODE UUID]
プロセスがタイムアウトするまで待つことも可能です。必要であれば、/etc/ironic-inspector/inspector.conf
の timeout
設定を別の時間 (秒単位) に変更します。
introspection ramdisk へのアクセス
introspection ramdisk は、動的なログイン要素を使用します。これは、イントロスペクションのデバッグ中にノードにアクセスするための一時パスワードまたは SSH キーのいずれかを提供できることを意味します。以下のプロセスを使用して、ramdisk アクセスを設定します。
openssl passwd -1
コマンドに一時パスワードを指定して MD5 ハッシュを生成します。以下に例を示します。$ openssl passwd -1 mytestpassword $1$enjRSyIw$/fYUpJwr6abFy/d.koRgQ/
/httpboot/inspector.ipxe
ファイルを編集して、kernel
で開始する行を特定し、rootpwd
パラメーターと MD5 ハッシュを追記します。以下に例を示します。kernel http://192.2.0.1:8088/agent.kernel ipa-inspection-callback-url=http://192.168.0.1:5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs systemd.journald.forward_to_console=yes BOOTIF=${mac} ipa-debug=1 ipa-inspection-benchmarks=cpu,mem,disk rootpwd="$1$enjRSyIw$/fYUpJwr6abFy/d.koRgQ/" selinux=0
または、
sshkey
パラメーターに SSH 公開キーを追記します。注記rootpwd
およびsshkey
のパラメーターにはいずれも二重引用符が必要です。イントロスペクションを開始し、
arp
コマンドまたは DHCP のログから IP アドレスを特定します。$ arp $ sudo journalctl -u openstack-ironic-inspector-dnsmasq
一時パスワードまたは SSH キーを使用して、root ユーザーとして SSH 接続します。
$ ssh root@192.168.24.105
イントロスペクションストレージのチェック
director は OpenStack Object Storage (swift) を使用して、イントロスペクションプロセス中に取得したハードウェアデータを保存します。このサービスが稼働していない場合には、イントロスペクションは失敗する場合があります。以下のコマンドを実行して、OpenStack Object Storage に関連したサービスをすべてチェックし、このサービスが稼働中であることを確認します。
$ sudo systemctl list-units openstack-swift*