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

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

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

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

検出プロセスの停止

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

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

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