Red Hat Training

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

第5章 基本的なオーバークラウド要件の設定

本章では、エンタープライズレベルの OpenStack Platform 環境の基本的な設定手順を説明します。基本設定のオーバークラウドには、カスタムの機能が含まれていませんが、基本的なオーバークラウドに高度な設定オプションを追加して、「6章オーバークラウドの高度なカスタマイズ設定」の説明に従い、仕様に合わせてカスタマイズすることができます。

本章の例では、すべてのノードが電源管理に IPMI を使用したベアメタルシステムとなっています。電源管理の種別およびそのオプションに関する詳細は、「付録B 電源管理ドライバー」を参照してください。

ワークフロー

  1. ノード定義のテンプレートを作成して director で空のノードを登録します。
  2. 全ノードのハードウェアを検査します。
  3. ロールにノードをタグ付けします。
  4. 追加のノードプロパティーを定義します。

要件

  • 4章アンダークラウドのインストール」で作成した director ノード
  • ノードに使用するベアメタルマシンのセット。必要なノード数は、作成予定のオーバークラウドのタイプにより異なります (オーバークラウドロールに関する情報は「ノードのデプロイメントロールのプランニング」を参照してください)。これらのマシンは、各ノード種別の要件セットに従う必要があります。これらの要件については、「オーバークラウドの要件」を参照してください。これらのノードにはオペレーティングシステムは必要ありません。director が Red Hat Enterprise Linux 7 のイメージを各ノードにコピーします。
  • ネイティブ VLAN として設定したプロビジョニングネットワーク用のネットワーク接続 1 つ。全ノードは、このネイティブに接続して、「ネットワーク要件」で設定した要件に準拠する必要があります。この章の例では、以下の IP アドレスの割り当てで、プロビジョニングサブネットとして 192.0.2.0/24 を使用します。

    表5.1 プロビジョニングネットワークの IP 割り当て

    ノード名

    IP アドレス

    MAC アドレス

    IPMI IP アドレス

    director

    192.0.2.1

    aa:aa:aa:aa:aa:aa

    不要

    コントローラー

    定義済みの DHCP

    bb:bb:bb:bb:bb:bb

    192.0.2.205

    Compute

    定義済みの DHCP

    cc:cc:cc:cc:cc:cc

    192.0.2.206

  • その他のネットワーク種別はすべて、OpenStack サービスにプロビジョニングネットワークを使用しますが、ネットワークトラフィックの他のタイプに追加でネットワークを作成することができます。詳しい情報は、「ネットワークの分離」を参照してください。

5.1. オーバークラウドへのノードの登録

director では、手動で作成したノード定義のテンプレートが必要です。このファイル (instackenv.json) は、JSON 形式のファイルを使用して、ノードのハードウェアおよび電源管理の情報が含まれます。たとえば、2 つのノードを登録するテンプレートは、以下のようになります。

{
    "nodes":[
        {
            "mac":[
                "bb:bb:bb:bb:bb:bb"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.205"
        },
        {
            "mac":[
                "cc:cc:cc:cc:cc:cc"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.206"
        }
    ]
}

このテンプレートでは、以下の属性を使用します。

pm_type
使用する電源管理ドライバー。この例では IPMI ドライバーを使用します (pxe_ipmitool)。
pm_user; pm_password
IPMI のユーザー名およびパスワード
pm_addr
IPMI デバイスの IP アドレス
mac
(オプション) ノード上のネットワークインターフェースの MAC アドレス一覧。各システムのプロビジョニング NIC の MAC アドレスのみを使用します。
cpu
(オプション) ノード上の CPU 数
memory
(オプション) メモリーサイズ (MB)
disk
(オプション) ハードディスクのサイズ (GB)
arch
(オプション) システムアーキテクチャー
注記

電源管理の種別およびそのオプションに関する詳細は、「付録B 電源管理ドライバー」を参照してください。

テンプレートの作成後に、stack ユーザーのホームディレクトリー (/home/stack/instackenv.json) にファイルを保存して、以下のコマンドを使用して director にインポートします。

$ openstack baremetal import --json ~/instackenv.json

このコマンドでテンプレートをインポートして、テンプレートから director に各ノードを登録します。

カーネルと ramdisk イメージを全ノードに割り当てます。

$ openstack baremetal configure boot

director でのノードの登録および設定が完了しました。CLI でこれらのノードの一覧を表示します。

$ ironic node-list

5.2. ノードのハードウェアの検査

director は各ノードでイントロスペクションプロセスを実行することができます。このプロセスを実行すると、各ノードが PXE を介してイントロスペクションエージェントを起動します。このエージェントは、ノードからハードウェアのデータを収集して、director に送り返します。次に director は、director 上で実行中の OpenStack Object Storage (swift) サービスにこのイントロスペクションデータをに保管します。director は、プロファイルのタグ付け、ベンチマーキング、ルートディスクの手動割り当てなど、さまざまな目的でハードウェア情報を使用します。

注記

ポリシーファイルを作成して、イントロスペクションの直後にノードをプロファイルに自動でタグ付けすることも可能です。ポリシーファイルを作成してイントロスペクションプロセスに組み入れる方法に関する詳しい情報は、「付録C プロファイルの自動タグ付け」を参照してください。または、「プロファイルへのノードのタグ付け」に記載の手順に従って、ノードをプロファイルに手動でタグ付けすることもできます。

以下のコマンドを実行して、各ノードのハードウェア属性を検証します。

$ openstack baremetal introspection bulk start

別のターミナルウィンドウで以下のコマンドを使用してイントロスペクションの進捗状況をモニタリングします。

$ sudo journalctl -l -u openstack-ironic-inspector -u openstack-ironic-inspector-dnsmasq -u openstack-ironic-conductor -f
重要

このプロセスが最後まで実行されて正常に終了したことを確認してください。ベアメタルの場合には、通常 15 分ほどかかります。

または、各ノードに 1 回ずつ個別にイントロスペクションを実行します。ノードを管理モードに切り替えて、イントロスペクションを実行してから、管理モードから元に戻します。

$ ironic node-set-provision-state [NODE UUID] manage
$ openstack baremetal introspection start [NODE UUID]
$ ironic node-set-provision-state [NODE UUID] provide

5.3. プロファイルへのノードのタグ付け

各ノードのハードウェアを登録、検査した後には、特定のプロファイルにノードをタグ付けします。このプロファイルタグにより、ノードがフレーバーに照合され、次にそのフレーバーがデプロイメントロールに割り当てられます。アンダークラウドのインストール時に、デフォルトプロファイルのフレーバー computecontrolswift-storageceph-storageblock-storage が作成され、大半の環境で変更なしに使用することができます。

注記

多くのノードでは、プロファイルの自動タグ付けを使用します。詳しい情報は、「付録C プロファイルの自動タグ付け」を参照してください。

特定のプロファイルにノードをタグ付けする場合には、各ノードの properties/capabilities パラメーターに profile オプションを追加します。たとえば、2 つのノードをタグ付けしてコントローラープロファイルとコンピュートプロファイルをそれぞれ使用するには、以下のコマンドを実行します。

$ ironic node-update 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 add properties/capabilities='profile:compute,boot_option:local'
$ ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local'

profile:computeprofile:control オプションを追加することで、この 2 つのノードがそれぞれのプロファイルにタグ付けされます。

またこのコマンドは、各ノードのブートモードを定義する boot_option:local パラメーターを設定します。

重要

director は現在、UEFI ブートモードはサポートしていません。

ノードのタグ付けが完了した後には、割り当てたプロファイルまたはプロファイルの候補を確認します。

$ openstack overcloud profiles list

5.4. ノードのルートディスクの定義

ノードによっては、複数のディスクを使用するものもあります。つまり、プロビジョニングの際に、director は、ルートディスクに使用するディスクを特定する必要があるという意味です。以下のように、director がルートディスクを容易に特定できるように使用可能なプロパティーが複数あります。

  • model (文字列): デバイスの ID
  • vendor (文字列): デバイスのベンダー
  • serial (文字列): ディスクのシリアル番号
  • wwn (文字列): 一意のストレージ ID
  • hctl (文字列): SCSI のホスト:チャネル:ターゲット:Lun
  • size (整数):デバイスのサイズ (GB)

以下の例では、root デバイスを特定するディスクのシリアル番号を使用して、オーバークラウドイメージをデプロイするドライブを指定します。

最初に、director がイントロスペクションで取得した各ノードのハードウェア情報のコピーを収集します。この情報は、OpenStack Object Storage (swift) サーバーに保管されています。この情報を新規ディレクトリーにダウンロードします。

$ mkdir swift-data
$ cd swift-data
$ export IRONIC_DISCOVERD_PASSWORD=`sudo grep admin_password /etc/ironic-inspector/inspector.conf | awk '! /^#/ {print $NF}' | awk -F'=' '{print $2}'`
$ for node in $(ironic node-list | awk '!/UUID/ {print $2}'); do swift -U service:ironic -K $IRONIC_DISCOVERD_PASSWORD download ironic-inspector inspector_data-$node; done

この操作により、イントロスペクションで取得した各 inspector_data オブジェクトからデータがダウンロードされます。全オブジェクトのオブジェクト名の一部には、ノードの UUID が使用されます。

$ ls -1
inspector_data-15fc0edc-eb8d-4c7f-8dc0-a2a25d5e09e3
inspector_data-46b90a4d-769b-4b26-bb93-50eaefcdb3f4
inspector_data-662376ed-faa8-409c-b8ef-212f9754c9c7
inspector_data-6fc70fe4-92ea-457b-9713-eed499eda206
inspector_data-9238a73a-ec8b-4976-9409-3fcff9a8dca3
inspector_data-9cbfe693-8d55-47c2-a9d5-10e059a14e07
inspector_data-ad31b32d-e607-4495-815c-2b55ee04cdb1
inspector_data-d376f613-bc3e-4c4b-ad21-847c4ec850f8

各ノードのディスク情報をチェックします。以下のコマンドを実行すると、各ノードの ID とディスク情報が表示されます。

$ for node in $(ironic node-list | awk '!/UUID/ {print $2}'); do echo "NODE: $node" ; cat inspector_data-$node | jq '.inventory.disks' ; echo "-----" ; done

たとえば、1 つのノードのデータで 3 つのディスクが表示される場合があります。

NODE: 46b90a4d-769b-4b26-bb93-50eaefcdb3f4
[
  {
    "size": 1000215724032,
    "vendor": "ATA",
    "name": "/dev/sda",
    "model": "WDC WD1002F9YZ",
    "wwn": "0x0000000000000001",
    "serial": "WD-000000000001"
  },
  {
    "size": 1000215724032,
    "vendor": "ATA",
    "name": "/dev/sdb",
    "model": "WDC WD1002F9YZ",
    "wwn": "0x0000000000000002",
    "serial": "WD-000000000002"
  },
  {
    "size": 1000215724032,
    "vendor": "ATA",
    "name": "/dev/sdc",
    "model": "WDC WD1002F9YZ",
    "wwn": "0x0000000000000003",
    "serial": "WD-000000000003"
  },
]

以下の例では、ルートデバイスを、シリアル番号 WD-000000000002 の disk 2 に設定します。そのためには、ノードの定義に root_device パラメーターを追加する必要があります。

$ ironic node-update 97e3f7b3-5629-473e-a187-2193ebe0b5c7 add properties/root_device='{"serial": "WD-000000000002"}'

これにより、director がルートディスクとして使用する特定のディスクを識別しやすくなります。オーバークラウドの作成の開始時には、director はこのノードをプロビジョニングして、オーバークラウドのイメージをこのディスクに書き込みます。

注記

各ノードの BIOS を設定して、選択したルートディスクからの起動が含まれるようにします。推奨のブート順は最初がネットワークブートで、次にルートディスクブートです。

重要

name でルートディスクを設定しないでください。この値は、ノードブート時に変更される可能性があります。

5.5. 基本設定の完了

これで、オーバークラウドの基本設定で必要とされる手順が終了しました。次に、以下のいずれかを実行することができます。

重要

基本的なオーバークラウドでは、ブロックストレージにローカルの LVM ストレージを使用しますが、この設定はサポートされません。ブロックストレージには、外部ストレージソリューションを使用することを推奨します。たとえば、ブロックストレージとして NFS 共有を設定するには「NFS ストレージの設定」を参照してください。