Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

11.2. ハードウェアイントロスペクションのトラブルシューティング

検出およびイントロスペクションのプロセスは最後まで実行する必要があります。ただし、Ironic の Discovery Daemon (ironic-inspector) は、検出する ramdisk が応答しない場合にはデフォルトの 1 時間が経過するとタイムアウトします。検出 ramdisk のバグが原因とされる場合もありますが、通常は特に BIOS の起動設定などの環境の誤設定が原因で発生します。
以下には、環境設定が間違っている場合の一般的なシナリオと、診断/解決方法に関するアドバイスを示します。

ノードのイントロスペクション開始におけるエラー

通常、イントロスペクションプロセスは、Ironic サービス全体に対するコマンドとして機能する baremetal introspection を使用します。ただし、ironic-inspector で直接イントロスペクションを実行している場合には、AVAILABLE の状態のノードの検出に失敗する可能性があります。このコマンドは、デプロイメント用であり、検出用ではないためです。検出前に、ノードの状態を MANAGEABLE に変更します。
$ ironic node-set-provision-state [NODE UUID] manage
検出が完了したら、状態を AVAILABLE に戻してからプロビジョニングを行います。
$ ironic node-set-provision-state [NODE UUID] provide

イントロスペクション済みのノードが PXE でブートできない問題

ノードがリブートする前に、ironic-inspector はアンダークラウドのファイアウォールの ironic-inspector チェーンに MAC アドレスを追加します。これにより、ノードは PXE でブートします。設定が正しいことを確認するには、以下のコマンドを実行します。
$ sudo iptables -L
出力には、以下のチェーンテーブルで MAC アドレスが表示されるはずです。
Chain ironic-inspector (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             MAC xx:xx:xx:xx:xx:xx
ACCEPT     all  --  anywhere             anywhere
MAC アドレスが表示されない場合に最も多く見られる原因は、SQLite データベース内にある ironic-inspector キャッシュの破損です。この問題を修正するには、以下のコマンドで SQLite ファイルを削除します。
$ sudo rm /var/lib/ironic-inspector/inspector.sqlite
次に以下のコマンドで、このファイルを再度作成します。
$ sudo ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade
$ sudo systemctl restart openstack-ironic-inspector

検出プロセスの停止

現在 ironic-inspector は直接検出プロセスを停止することができません。回避策として、プロセスがタイムアウトするまで待つことを推奨します。必要であれば、/etc/ironic-inspector/inspector.conftimeout 設定を別のタイムアウト時間 (分) に変更します。
最悪の場合には以下のプロセスを使用して全ノードの検出を停止することができます。

手順11.3 検出プロセスの停止

  1. 各ノードの電源状態を OFF に変更します。
    $ ironic node-set-power-state [NODE UUID] off
    
  2. ironic-inspector キャッシュを削除して、再起動します。
    $ rm /var/lib/ironic-inspector/inspector.sqlite
    $ sudo systemctl restart openstack-ironic-inspector
    
  3. ironic-inspector キャッシュを再同期します。
    $ sudo ironic-inspector-dbsync --config-file /etc/ironic-inspector/inspector.conf upgrade
    

イントロスペクション ramdisk へのアクセス

イントロスペクションの ramdisk は、動的なログイン要素を使用します。これは、イントロスペクションのデバッグ中にノードにアクセスするための一時パスワードまたは SSH キーのいずれかを提供できることを意味します。以下のプロセスを使用して、ramdisk アクセスを設定します。
  1. 以下のように openssl passwd -1 コマンドに一時パスワードを指定して MD5 ハッシュを生成します。
    $ openssl passwd -1 mytestpassword
    $1$enjRSyIw$/fYUpJwr6abFy/d.koRgQ/
    
  2. /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 のパラメーターにはいずれも引用符が必要です。
  3. イントロスペクションを開始し、arp コマンドまたは DHCP のログから IP アドレスを特定します。
    $ arp
    $ sudo journalctl -u openstack-ironic-inspector-dnsmasq
    
  4. 一時パスワードまたは SSH キーを使用して、root ユーザーとして SSH 接続します。
    $ ssh root@192.0.2.105
    

イントロスペクションストレージのチェック

director は OpenStack Object Storage (swift) を使用して、イントロスペクションプロセス中に取得したハードウェアデータを保存します。このサービスが稼働していない場合には、イントロスペクションは失敗する場合があります。以下のコマンドを実行して、OpenStack Object Storage に関連したサービスをすべてチェックし、このサービスが稼働中であることを確認します。
$ sudo systemctl list-units openstack-swift*