4.5. デプロイインターフェイスの設定

ベアメタルノードをプロビジョニングする場合、オーバークラウド上の Bare Metal Provisioning サービス (ironic) は、ベアメタルノード上のディスクにベースオペレーティングシステムのイメージを書き込みます。デフォルトでは、デプロイインターフェイスは iSCSI マウントにイメージをマウントし、そのイメージを各ノードのディスクにコピーします。あるいは、直接デプロイを使用して、ディスクイメージを HTTP の保管場所から直接ベアメタルノード上のディスクに書き込むこともできます。

注記

iSCSI デプロイインターフェイスのサポートは、Red Hat OpenStack Platform (RHOSP) バージョン 17.0 で非推奨になり、RHOSP 18.0 で削除されます。直接デプロイは、RHOSP 17.0 からデフォルトのデプロイインターフェイスになります。

プロビジョニングプロセスでは、デプロイインターフェイスが重要なロールを果たします。デプロイインターフェイスはデプロイメントをオーケストレーションし、イメージをターゲットディスクに転送するメカニズムを定義します。

前提条件

  • ironic-conductor を実行する Bare Metal サービスノードに設定された依存関係パッケージ。
  • OpenStack Compute (nova) が Bare Metal サービスのエンドポイントを使用するように設定されている。
  • 利用可能なハードウェア用にフレーバーが作成され、nova が正しいフレーバーから新規ノードを起動する。
  • Image サービス (glance) でイメージが利用可能であること。

    • bm-deploy-kernel
    • bm-deploy-ramdisk
    • user-image
    • user-image-vmlinuz
    • user-image-initrd
  • Ironic API サービスに登録するためのハードウェア

ワークフロー

以下に示すワークフローの例を使用して、標準的なデプロイプロセスについて説明します。使用する ironic ドライバーインターフェイスによって、一部の手順が異なる場合があります。

  1. Nova スケジューラーが Nova API からインスタンスのブート要求を受け取る。
  2. Nova スケジューラーが該当するハイパーバイザーを識別し、ターゲットの物理ノードを識別する。
  3. Nova Compute マネージャーが選択したハイパーバイザーのリソースを要求する。
  4. Nova のブート要求が指定するネットワークインターフェイスに基づき、Nova Compute マネージャーがバインド前のテナント仮想インターフェイス (VIF) を Networking サービスに作成する。
  5. Nova Compute が Nova Compute の仮想レイヤーから driver.spawn を呼び出し、必要なすべての情報が含まれる子タスクを作成する。子タスク作成プロセス中に、仮想ドライバーは以下の処理を完了します。

    1. デプロイイメージ、インスタンスの UUID、要求された機能、およびフレーバー属性に関する情報で、ターゲットの ironic ノードを更新する。
    2. ironic API をコールして、ターゲットノードの電源およびデプロイインターフェイスを検証する。
    3. VIF をノードに接続する。それぞれの neutron ポートは、任意の ironic ポートまたはグループにアタッチすることができます。ポートグループはポートに優先します。
    4. コンフィグドライブを生成する。
  6. Nova ironic 仮想ドライバーが、Ironic API を使用してベアメタルノードに対応する Ironic Conductor にデプロイ要求を発行する。
  7. 仮想インターフェイスが接続され、PXE/TFTP オプションを設定するために Neutron API が DHCP を更新する。
  8. ironic ノードのブートインターフェイスが (i)PXE 設定を準備し、デプロイカーネルおよび ramdisk をキャッシュする。
  9. ironic ノードの管理インターフェイスがコマンドを発行し、ノードのネットワークブートを有効にする。
  10. 必要に応じて、ironic ノードのデプロイインターフェイスがインスタンスイメージ、カーネル、および ramdisk をキャッシュする。
  11. ironic ノードの電源インターフェイスがノードに電源投入を指示する。
  12. ノードがデプロイ ramdisk を起動する。
  13. iSCSI デプロイメントの場合には、Conductor が iSCSI 経由でイメージを物理ノードにコピーする。直接デプロイメントの場合には、デプロイ ramdisk が一時 URL からイメージをダウンロードする。この URL は、Swift API と互換性のあるオブジェクトストアまたは HTTP の URL でなければなりません。
  14. ノードのブートインターフェイスがインスタンスイメージを参照するように PXE 設定を切り替え、ramdisk エージェントにノードのソフトパワーオフを指示する。ソフトパワーオフに失敗した場合には、ベアメタルノードの電源は IPMI/BMC により切断されます。
  15. デプロイインターフェイスがネットワークインターフェイスにすべてのプロビジョニングポートの削除を指示し、テナントポートをノードにバインドし、ノードの電源を投入する。

これで、新規ベアメタルノードのプロビジョニングの状態が active になります。

4.5.1. オーバークラウドにおける直接デプロイインターフェイスの設定

iSCSI デプロイインターフェイスがデフォルトのデプロイインターフェイスです。ただし、直接デプロイインターフェイスを有効にして、イメージを HTTP の保管場所からターゲットディスクにダウンロードすることができます。

注記

iSCSI デプロイインターフェイスのサポートは、Red Hat OpenStack Platform (RHOSP) バージョン 17.0 で非推奨になり、RHOSP 18.0 で削除されます。直接デプロイは、RHOSP 17.0 からデフォルトのデプロイインターフェイスになります。

前提条件

  • オーバークラウドノードのメモリー tmpfs には、少なくとも 8 GB の RAM が必要です。

手順

  1. カスタム環境ファイル /home/stack/templates/direct_deploy.yaml を作成または変更し、IronicEnabledDeployInterfaces パラメーターおよび IronicDefaultDeployInterface パラメーターを指定します。

    parameter_defaults:
      IronicEnabledDeployInterfaces: direct
      IronicDefaultDeployInterface: direct

    iscsi を使用するようにノードを登録する場合には、IronicEnabledDeployInterfaces パラメーターに iscsi の値を含めます。

    parameter_defaults:
      IronicEnabledDeployInterfaces: direct,iscsi
      IronicDefaultDeployInterface: direct
  2. デフォルトでは、各ノードの Bare Metal Provisioning サービス (ironic) エージェントは、HTTP リンクを通じて Object Storage サービス (swift) に保管されているイメージを取得します。あるいは、ironic は、ironic-conductor HTTP サーバーを通じて、このイメージを直接ノードにストリーミングすることもできます。イメージを提供するサービスを変更するには、/home/stack/templates/direct_deploy.yaml ファイルの IronicImageDownloadSourcehttp に設定します。

    parameter_defaults:
      IronicEnabledDeployInterfaces: direct
      IronicDefaultDeployInterface: direct
      IronicImageDownloadSource: http
  3. オーバークラウドのデプロイメントにカスタム環境ファイルを追加します。

    $ openstack overcloud deploy \
      --templates \
      ...
      -e /usr/share/openstack-tripleo-heat-templates/environments/services/ironic.yaml \
      -e /home/stack/templates/direct_deploy.yaml \
      ...

    デプロイメントが完了するまで待ちます。

注記

IronicDefaultDeployInterface を指定しない、または別のデプロイインターフェイスを使用する場合には、ノードを作成または更新する際にデプロイインターフェイスを指定します。

$ openstack baremetal node create --driver ipmi --deploy-interface direct
$ openstack baremetal node set <NODE> --deploy-interface direct