Red Hat Training

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

第5章 ベアメタルノードの管理

本章では、登録済みのベアメタルノードで物理マシンをプロビジョニングする方法について説明します。インスタンスは、コマンドラインまたは OpenStack Dashboard で起動することができます。

5.1. コマンドラインインターフェースを使用したインスタンスの起動

openstack コマンドラインインターフェースを使用してベアメタルインスタンスをデプロイします。

コマンドライン上でのインスタンスのデプロイ

  1. Identity に管理ユーザーとしてアクセスするためのシェルを設定します。

    $ source ~/overcloudrc
  2. インスタンスをデプロイします。

    $ openstack server create \
      --nic net-id=NETWORK_UUID \
      --flavor baremetal \
      --image IMAGE_UUID \
      INSTANCE_NAME

    以下の値を置き換えてください。

    • NETWORK_UUID は、Bare Metal サービスで使用するために作成したネットワークの一意識別子に置き換えます。
    • IMAGE_UUID は、Image サービスにアップロードされたディスクイメージの一意識別子に置き換えます。
    • INSTANCE_NAME は、ベアメタルインスタンスの名前に置き換えます。

    セキュリティーグループにインスタンスを割り当てるには、--security-group SECURITY_GROUP オプションを指定します。SECURITY_GROUP は、そのセキュリティーグループの名前に置き換えてください。インスタンスを複数のグループに追加するには、このオプションを繰り返します。セキュリティーグループの管理についての詳しい情報は、『ユーザーおよびアイデンティティー管理ガイド』を参照してください。

  3. インスタンスのステータスを確認します。

    $ openstack server list --name INSTANCE_NAME

5.2. Dashboard を使用したインスタンスの起動

Dashboard のグラフィカルユーザーインターフェースを使用してベアメタルインスタンスをデプロイします。

Dashboard でのインスタンスのデプロイ

  1. http[s]://DASHBOARD_IP/dashboard で Dashboard にログインします。
  2. プロジェクト > コンピュート > インスタンス の順にクリックします。
  3. インスタンスの起動 をクリックします。

    • 詳細 タブで インスタンス名 を指定して、インスタンス数1 を選択します。
    • ソース タブで ブートソースを選択してください のドロップダウンメニューから イメージ を選択し、続いて (上向き矢印) の記号をクリックしてオペレーティングシステムのディスクイメージを選択します。選択したイメージは 割り当て済み に移動します。
    • フレーバー タブで baremetal を選択します。
    • ネットワーク タブで、 (上向き矢印) および (下向き矢印) ボタンを使用して必要なネットワークを 利用可能 から 割り当て済み に移動します。ここでは、必ず Bare Metal サービス用に作成した共有ネットワークを選択してください。
    • インスタンスをセキュリティーグループに割り当てるには、セキュリティーグループ のタブで矢印を使用してそのグループを 割り当て済み に移動します。
  4. インスタンスの起動 をクリックします。

5.3. Bare Metal Provisioning サービスでのポートグループの設定

注記

ベアメタルノード向けのポートグループ機能は、本リリースでは テクノロジープレビュー として提供しているため、Red Hat では全面的にはサポートしていません。これは、テスト目的のみでご利用いただく機能で、実稼働環境にデプロイすべきではありません。テクノロジープレビュー機能についての詳しい情報は、「対象範囲の詳細」を参照してください。

ポートグループ (ボンディング) の機能により、複数のネットワークインターフェースを単一の「ボンディングされた」インターフェースに統合することができます。ポートグループの設定は常に、個別のポート設定に優先します。

ポートグループに物理ネットワークがある場合には、そのポートグループ内の全ポートに同じ物理ネットワークを使用すべきです。Bare Metal Provisioning サービスは、configdrive を使用するインスタンスでのポートグループの設定をサポートしています。

注記

Bare Metal Provisioning サービス API バージョン 1.26 は、ポートグループの設定をサポートしています。

5.3.1. スイッチの設定

Bare Metal Provisioning デプロイメントでポートグループを設定するには、スイッチ上で手動設定する必要があります。スイッチ上のモードとプロパティーは、スイッチによって名前が異なる場合があるため、それらがベアメタル側のモードとプロパティーに対応していることを確認する必要があります。

注記

iPXE を使用してデプロイメントを起動する必要がある場合、プロビジョニングとクリーニングにはポートグループを使用できません。

ポートグループのフォールバック機能により、接続でエラーが発生した際に、1 つのポートグループ内の全ポートを個々のスイッチポートにフォールバックさせることができます。スイッチがポートグループのフォールバックをサポートしているかどうかに応じて、「--support-standalone-ports」と「--unsupport-standalone-ports」のオプションを使用することができます。

5.3.2. Bare Metal Provisioning サービスでのポートグループの設定

  1. ポートグループが属する先のノード、その名前、アドレス、モード、プロパティー、スタンドアロンポートへのフォールバックをサポートしているかどうかを指定して、ポートグループを作成します。

    # openstack baremetal port group create --node NODE_UUID --name NAME --address MAC_ADDRESS --mode MODE  --property miimon=100 --property xmit_hash_policy="layer2+3" --support-standalone-ports

    また、openstack baremetal port group set コマンドを使用してポートグループを更新することもできます。

    アドレスを指定しない場合には、デプロイされるインスタンスのポートグループアドレスは OpenStack Networking のポートと同じになります。neutron ポートが接続されていない場合には、ポートグループは設定されません。

    インターフェースの接続中には、ポートグループの優先度はポートよりも高くなるので、最初に使用されます。現在、インターフェースの接続要求で、ポートグループとポートのどちらを優先するかを指定することは できません。ポートのないポートグループは無視されます。

    注記

    ポートグループは、手動でスタンドアロンモードに設定する必要があります。そのためには、イメージ内で設定するか、configdrive を生成してノードの instance_info に追加します。ポートグループの設定が機能するには、cloud-init バージョン 0.7.7 以降を使用している必要があります。

  2. ポートをポートグループに関連付けます。

    • ポートの作成中

      # openstack baremetal port create --node NODE_UUID --address MAC_ADDRESS --port-group test
    • ポートの更新中

      # openstack baremetal port set PORT_UUID --port-group PORT_GROUP_UUID
  3. cloud-init 対応のイメージまたはボンディングをサポートしているイメージを提供することにより、インスタンスを起動します。

    ポートグループが適切に設定されているかを確認するには、以下のコマンドを実行します。

    # cat /proc/net/bonding/bondX

    X は、cloud-init が設定済みの各ポートグループに対して自動生成する番号です。0 で始まり、ポートグループを設定するたびに 1 つずつ増えます。

5.4. ホストから IP アドレスへのマッピングの確認

以下のコマンドを実行すると、各 IP アドレスが割り当てられているホストおよびベアメタルノードを確認できます。

この機能により、ホストに直接アクセスする必要なく、ホストから IP へのマッピングをアンダークラウドで確認することが可能です。

(undercloud) [stack@host01 ~]$ openstack stack output show overcloud HostsEntry --max-width 80

+--------------+---------------------------------------------------------------+
| Field        | Value                                                         |
+--------------+---------------------------------------------------------------+
| description  | The content that should be appended to your /etc/hosts if you |
|              | want to get                                                   |
|              | hostname-based access to the deployed nodes (useful for       |
|              | testing without                                               |
|              | setting up a DNS).                                            |
|              |                                                               |
| output_key   | HostsEntry                                                    |
| output_value | 172.17.0.10 overcloud-controller-0.localdomain overcloud-     |
|              | controller-0                                                  |
|              | 10.8.145.18 overcloud-controller-0.external.localdomain       |
|              | overcloud-controller-0.external                               |
|              | 172.17.0.10 overcloud-controller-0.internalapi.localdomain    |
|              | overcloud-controller-0.internalapi                            |
|              | 172.18.0.15 overcloud-controller-0.storage.localdomain        |
|              | overcloud-controller-0.storage                                |
|              | 172.21.2.12 overcloud-controller-0.storagemgmt.localdomain    |
|              | overcloud-controller-0.storagemgmt                            |
|              | 172.16.0.15 overcloud-controller-0.tenant.localdomain         |
|              | overcloud-controller-0.tenant                                 |
|              | 10.8.146.13 overcloud-controller-0.management.localdomain     |
|              | overcloud-controller-0.management                             |
|              | 10.8.146.13 overcloud-controller-0.ctlplane.localdomain       |
|              | overcloud-controller-0.ctlplane                               |
|              |                                                               |
|              | 172.17.0.21 overcloud-compute-0.localdomain overcloud-        |
|              | compute-0                                                     |
|              | 10.8.146.12 overcloud-compute-0.external.localdomain          |
|              | overcloud-compute-0.external                                  |
|              | 172.17.0.21 overcloud-compute-0.internalapi.localdomain       |
|              | overcloud-compute-0.internalapi                               |
|              | 172.18.0.20 overcloud-compute-0.storage.localdomain           |
|              | overcloud-compute-0.storage                                   |
|              | 10.8.146.12 overcloud-compute-0.storagemgmt.localdomain       |
|              | overcloud-compute-0.storagemgmt                               |
|              | 172.16.0.16 overcloud-compute-0.tenant.localdomain overcloud- |
|              | compute-0.tenant                                              |
|              | 10.8.146.12 overcloud-compute-0.management.localdomain        |
|              | overcloud-compute-0.management                                |
|              | 10.8.146.12 overcloud-compute-0.ctlplane.localdomain          |
|              | overcloud-compute-0.ctlplane                                  |
|              |                                                               |
|              |                                                               |
|              |                                                               |
|              |                                                               |
|              | 10.8.145.16  overcloud.localdomain                            |
|              | 10.8.146.7  overcloud.ctlplane.localdomain                    |
|              | 172.17.0.19  overcloud.internalapi.localdomain                |
|              | 172.18.0.19  overcloud.storage.localdomain                    |
|              | 172.21.2.16  overcloud.storagemgmt.localdomain                |
+--------------+---------------------------------------------------------------+

特定のホストをフィルターするには、以下のコマンドを実行します。

(undercloud) [stack@host01 ~]$ openstack stack output show overcloud HostsEntry -c output_value -f value | grep overcloud-controller-0

172.17.0.12 overcloud-controller-0.localdomain overcloud-controller-0
10.8.145.18 overcloud-controller-0.external.localdomain overcloud-controller-0.external
172.17.0.12 overcloud-controller-0.internalapi.localdomain overcloud-controller-0.internalapi
172.18.0.12 overcloud-controller-0.storage.localdomain overcloud-controller-0.storage
172.21.2.13 overcloud-controller-0.storagemgmt.localdomain overcloud-controller-0.storagemgmt
172.16.0.19 overcloud-controller-0.tenant.localdomain overcloud-controller-0.tenant
10.8.146.13 overcloud-controller-0.management.localdomain overcloud-controller-0.management
10.8.146.13 overcloud-controller-0.ctlplane.localdomain overcloud-controller-0.ctlplane

ホストをベアメタルノードにマッピングするには、以下のコマンドを実行します。

(undercloud) [stack@host01 ~]$ openstack baremetal node list --fields uuid name instance_info -f json
[
  {
    "UUID": "c0d2568e-1825-4d34-96ec-f08bbf0ba7ae",
    "Instance Info": {
      "root_gb": "40",
      "display_name": "overcloud-compute-0",
      "image_source": "24a33990-e65a-4235-9620-9243bcff67a2",
      "capabilities": "{\"boot_option\": \"local\"}",
      "memory_mb": "4096",
      "vcpus": "1",
      "local_gb": "557",
      "configdrive": "******",
      "swap_mb": "0",
      "nova_host_id": "host01.lab.local"
    },
    "Name": "host2"
  },
  {
    "UUID": "8c3faec8-bc05-401c-8956-99c40cdea97d",
    "Instance Info": {
      "root_gb": "40",
      "display_name": "overcloud-controller-0",
      "image_source": "24a33990-e65a-4235-9620-9243bcff67a2",
      "capabilities": "{\"boot_option\": \"local\"}",
      "memory_mb": "4096",
      "vcpus": "1",
      "local_gb": "557",
      "configdrive": "******",
      "swap_mb": "0",
      "nova_host_id": "host01.lab.local"
    },
    "Name": "host3"
  }
]

5.5. 仮想ネットワークインターフェースの接続と切断

Bare Metal Provisioning サービスには、仮想ネットワークインターフェース (たとえば、OpenStack Networking サービスで使用される仮想ネットワークインターフェース) と物理ネットワークインターフェース (NIC) との間のマッピングを管理するための API があります。これらのインターフェースは各 Bare Metal Provisioning ノードに対して設定可能で、openstack baremetal node vif* コマンドを使用して仮想ネットワークインターフェース (VIF) から物理ネットワークインターフェース (PIF) へのマッピングロジックを設定することができます。

以下の例で、VIF を接続および切断する手順を説明します。

  1. ベアメタルノードに現在接続されている VIF の ID を一覧表示します。

    $ openstack baremetal node vif list baremetal-0
    +--------------------------------------+
    | ID                                   |
    +--------------------------------------+
    | 4475bc5a-6f6e-466d-bcb6-6c2dce0fba16 |
    +--------------------------------------+
  2. VIF がアタッチされた後に、Bare Metal サービスは OpenStack Networking サービス内の仮想ポートを実際の物理ポートの MAC アドレスで更新します。

    これは、以下のコマンドで確認できます。

    $ openstack port show 4475bc5a-6f6e-466d-bcb6-6c2dce0fba16 -c mac_address -c fixed_ips
    +-------------+-----------------------------------------------------------------------------+
    | Field       | Value                                                                       |
    +-------------+-----------------------------------------------------------------------------+
    | fixed_ips   | ip_address='192.168.24.9', subnet_id='1d11c677-5946-4733-87c3-23a9e06077aa' |
    | mac_address | 00:2d:28:2f:8d:95                                                           |
    +-------------+-----------------------------------------------------------------------------+
  3. baremetal-0 ノードを作成したネットワーク上に新規ポートを作成します。

    $ openstack port create --network baremetal --fixed-ip ip-address=192.168.24.24 baremetal-0-extra
  4. インスタンスからポートを削除します。

    $ openstack server remove port overcloud-baremetal-0 4475bc5a-6f6e-466d-bcb6-6c2dce0fba16
  5. その IP アドレスがリストには存在しなくなったことを確認します。

    $ openstack server list
  6. そのノードに接続されている VIF があるかどうかを確認します。

    $ openstack baremetal node vif list baremetal-0
    $ openstack port list
  7. 新規作成されたポートを追加します。

    $ openstack server add port overcloud-baremetal-0 baremetal-0-extra
  8. 新しい IP アドレスに新しいポートが表示されることを確認します。

    $ openstack server list
    +--------------------------------------+-------------------------+--------+------------------------+----------------+---------+
    | ID                                   | Name                    | Status | Networks               | Image          | Flavor  |
    +--------------------------------------+-------------------------+--------+------------------------+----------------+---------+
    | 53095a64-1646-4dd1-bbf3-b51cbcc38789 | overcloud-controller-2  | ACTIVE | ctlplane=192.168.24.7  | overcloud-full | control |
    | 3a1bc89c-5d0d-44c7-a569-f2a3b4c73d65 | overcloud-controller-0  | ACTIVE | ctlplane=192.168.24.8  | overcloud-full | control |
    | 6b01531a-f55d-40e9-b3a2-6d02be0b915b | overcloud-controller-1  | ACTIVE | ctlplane=192.168.24.16 | overcloud-full | control |
    | c61cc52b-cc48-4903-a971-073c60f53091 | overcloud-novacompute-0overcloud-baremetal-0 | ACTIVE | ctlplane=192.168.24.24 | overcloud-full | compute |
    +--------------------------------------+-------------------------+--------+------------------------+----------------+---------+
  9. VIF ID が新規ポートの UUID であるかどうかを確認します。

    $ openstack baremetal node vif list baremetal-0
    +--------------------------------------+
    | ID                                   |
    +--------------------------------------+
    | 6181c089-7e33-4f1c-b8fe-2523ff431ffc |
    +--------------------------------------+
  10. OpenStack Networking ポートの MAC アドレスが更新され、Bare Metal サービスポートの中の 1 つと一致しているかどうかを確認します。

    $ openstack port show 6181c089-7e33-4f1c-b8fe-2523ff431ffc -c mac_address -c fixed_ips
    +-------------+------------------------------------------------------------------------------+
    | Field       | Value                                                                        |
    +-------------+------------------------------------------------------------------------------+
    | fixed_ips   | ip_address='192.168.24.24', subnet_id='1d11c677-5946-4733-87c3-23a9e06077aa' |
    | mac_address | 00:2d:28:2f:8d:95                                                            |
    +-------------+------------------------------------------------------------------------------+
  11. ベアメタルノードを再起動して、新規 IP アドレスが認識されるようにします。

    $ openstack server reboot overcloud-baremetal-0

    インターフェースを接続または切断した後には、ベアメタルの OS は変更されたネットワークインターフェースを削除/追加/変更します。ポートを置き換える場合、DHCP 要求が新規 IP アドレスを取得しますが、古い DHCP リースがまだ有効なので、多少時間がかかる場合があります。変更を即時に適用する最も簡単な方法は、ベアメタルホストをリブートすることです。

5.6. Bare Metal サービスの通知の設定

Bare Metal サービスを設定して、サービス内で発生するさまざまなイベントの通知を表示することができます。このような通知は、課金目的やデータストアの監視などで外部のサービスが使用することができます。本項では、この通知を有効にする方法について説明します。

Bare Metal サービスの通知を有効化するには、ironic.conf 設定ファイルで以下のオプションを設定する必要があります。

  • [DEFAULT] セクションの notification_level オプションは、通知送信の最小の優先度を決定します。このオプションの値は、debuginfowarningerrorcritical のいずれかに設定することができます。オプションが warning に設定されると、優先度が warningerror、または critical のいずれかである通知はすべて送信されますが、優先度が debug または info の通知は送信させません。このオプションが設定されていない場合には、通知は一切送信されません。利用可能な各通知の優先度は、以下に記載しています。
  • [oslo_messaging_notifications] セクションの transport_url のオプションは、通知の送信に使用されるメッセージバスを決定します。このオプションが設定されていない場合には、RPC に使われるデフォルトのトランスポートが使用されます。

通知はすべて、メッセージバス内の ironic_versioned_notifications トピックで発行されます。通常は、メッセージバスを通過する各種別のメッセージは、メッセージの内容を説明しているトピックに関連付けられます。

注記

通知は失われる可能性があり、通知がメッセージバスを通ってエンドユーザーに届く保証はありません。