Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第2章 オーバークラウドの作成前の設定
次章では、openstack overcloud deploy
コマンドを実行する前に必要な設定について説明します。これには、プロビジョニングに向けたノードの準備、アンダークラウド上での IPv6 アドレスの設定、オーバークラウド用の IPv6 パラメーターを定義するネットワーク環境ファイルの作成が含まれます。
2.1. stack ユーザーの初期化
stack
ユーザーとして director ホストにログインし、以下のコマンドを実行して director の設定を初期化します。
$ source ~/stackrc
このコマンドでは、director の CLI ツールにアクセスする認証情報が含まれる環境変数を設定します。
2.2. アンダークラウド上での IPv6 アドレスの設定
アンダークラウドは、外部のネットワーク上にあるオーバークラウドのパブリック API にアクセスする必要があります。このアクセスを可能にするには、アンダークラウドホストで、外部ネットワークにアクセスするインターフェースに IPv6 アドレスが必要となります。
プロビジョニングネットワークには、全ノードに対する IPv4 接続が引き続き必要です。アンダークラウドとオーバークラウドは、このネットワークを PXE ブート、イントロスペクション、デプロイメントに使用します。また、ノードはこのネットワークを使用して、IPv4 で DNS および NTP サービスにアクセスします。
ネイティブ VLAN または専用のインターフェース
アンダークラウドが、外部ネットワークにアタッチされたネイティブ VLAN または専用のインターフェースを使用する場合には、ip
コマンドでそのインターフェースに IPv6 アドレスを追加します。以下の例では専用のインターフェースは eth0
です。
$ sudo ip link set dev eth0 up; sudo ip addr add 2001:db8::1/64 dev eth0
トランキングされた VLAN インターフェース
アンダークラウドは、同じインターフェース上のトランキングされた VLAN を外部ネットワークにアクセスするためのコントロールプレーンブリッジ (br-ctlplane
) として使用する場合には、新しい VLAN インターフェースを作成してコントロールプレーンにアタッチし、IPv6 アドレスを VLAN に追加します。たとえば、以下のシナリオでは外部ネットワークの VLAN ID に 100 を使用しています。
$ sudo ovs-vsctl add-port br-ctlplane vlan100 tag=100 -- set interface vlan100 type=internal $ sudo ip l set dev vlan100 up; sudo ip addr add 2001:db8::1/64 dev vlan100
IPv6 アドレスの確認
ip
コマンドで、IPv6 アドレスが追加されたことを確認します。
$ ip addr
選択したインターフェースに IPv6 アドレスが表示されます。
永続的な IPv6 アドレスの設定
上記の手順に加えて、IPv6 アドレスを永続的にする必要がある場合があります。その場合には、/etc/sysconfig/network-scripts/
で適切なインターフェース (本ガイドの例では ifcfg-eth0
または ifcfg-vlan100
) のファイルを編集または作成して、以下の行を追記してください。
IPV6INIT=yes IPV6ADDR=2001:db8::1/64
詳しい説明は、Red Hat カスタマーポータルの 「IPv6 にネットワークインターフェイスを設定する」のソリューションを参照してください。
2.3. 環境の設定
本項では、『Red Hat OpenStack Platform 11 director のインストールと使用方法』ガイドの「CLI ツールでの基本的なオーバークラウド要件の設定」に記載のプロセスを簡略にまとめたバージョンを使用します。
以下のワークフローに従って環境を設定します。
- ノード定義のテンプレートを作成して director で空のノードを登録します。
- 全ノードのハードウェアを検査します。
- 手動でロールにノードをタグ付けします。
- フレーバーを作成してロールにタグ付けします。
2.3.1. ノードの登録
ノード定義のテンプレート (instackenv.json
) は JSON ファイル形式で、このテンプレートにはノード登録用のハードウェアおよび電源管理の情報が含まれています。以下に例を示します。
{ "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" }, { "mac":[ "dd:dd:dd:dd:dd:dd" ], "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.207" }, { "mac":[ "ee:ee:ee:ee:ee:ee" ], "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.208" } { "mac":[ "ff:ff:ff:ff:ff:ff" ], "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.209" } { "mac":[ "gg:gg:gg:gg:gg:gg" ], "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.210" } ] }
プロジェクトネットワークは IPv4 アドレスを使用します。IPMI アドレスは IPv4 アドレスで、直接アタッチされているか、プロビジョニングネットワークでルーティング到達可能である必要があります。
テンプレートの作成後に、stack ユーザーのホームディレクトリー (/home/stack/instackenv.json
) にファイルを保存してから、director にインポートします。これには、以下のコマンドを実行します。
$ openstack baremetal import --json ~/instackenv.json
このコマンドでテンプレートをインポートして、テンプレートから director に各ノードを登録します。
カーネルと ramdisk イメージを全ノードに割り当てます。
$ openstack baremetal configure boot
director でのノードの登録、設定が完了しました。
2.3.2. ノードのハードウェアの検査
ノードの登録後には、各ノードのハードウェア属性を検査します。各ノードのハードウェア属性を検査するには、以下のコマンドを実行します。
$ openstack baremetal introspection bulk start
このプロセスが最後まで実行されて正常に終了したことを確認してください。ベアメタルの場合には、通常 15 分ほどかかります。
2.3.3. ノードの手動でのタグ付け
各ノードのハードウェアを登録、検査した後には、特定のプロファイルにノードをタグ付けします。これらのプロファイルタグによりノードとフレーバーが照合され、フレーバーがデプロイメントロールに割り当てられます。
ノード一覧を取得して UUID を特定します。
$ ironic node-list
特定のプロファイルにノードを手動でタグ付けする場合には、各ノードの properties/capabilities
パラメーターに profile オプションを追加します。たとえば、2 台のノードをタグ付けしてコントローラープロファイルとコンピュートプロファイルをそれぞれ使用するには、以下のコマンドを実行します。
$ ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local' $ ironic node-update 6faba1a9-e2d8-4b7c-95a2-c7fbdc12129a add properties/capabilities='profile:control,boot_option:local' $ ironic node-update 5e3b2f50-fcd9-4404-b0a2-59d79924b38e add properties/capabilities='profile:control,boot_option:local' $ ironic node-update 484587b2-b3b3-40d5-925b-a26a2fa3036f add properties/capabilities='profile:compute,boot_option:local' $ ironic node-update d010460b-38f2-4800-9cc4-d69f0d067efe add properties/capabilities='profile:compute,boot_option:local' $ ironic node-update d930e613-3e14-44b9-8240-4f3559801ea6 add properties/capabilities='profile:compute,boot_option:local'
profile:compute
と profile:control
オプションを追加すると、ノードがそれぞれのプロファイルにタグ付けされます。
ベンチマークデータに基づいて、多数のノードに自動でタグ付けするには、手動でのタグ付けの代わりに、プロファイルの自動タグ付けを使用します。
2.4. ネットワークの設定
本項では、オーバークラウドのネットワーク設定について考察します。これには、特定のネットワークトラフィックを使用するようにサービスを分離し、IPv6 オプションでオーバークラウドを設定する手順が含まれます。
2.4.1. インターフェースの設定
まず最初に、オーバークラウドには、ネットワークインターフェースのテンプレートセットが必要です。このテンプレートは YAML 形式の標準の Heat テンプレートです。director にはテンプレートサンプルが含まれているので、すぐに使用を開始することができます。
-
/usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans
: このディレクトリーには、ロールごとに VLAN が設定された単一 NIC のテンプレートが含まれます。 -
/usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans
: このディレクトリーには、ロール別のボンディング NIC 設定のテンプレートが含まれます。
これらのテンプレートコレクションの 1 つを stack
ユーザーの templates
ディレクトリーにコピーします。以下に例を示します。
$ sudo cp -r /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans ~/templates/nic-configs
ネットワークインターフェースの設定に関する詳細は、『Red Hat OpenStack Platform 11 director のインストールと使用方法』を参照してください。
いずれのインターフェーステンプレートコレクションにも、コントローラーノードを設定するための 2 つのファイル (controller.yaml
と controller-v6.yaml
) が含まれます。IPv6 の設定には controller-v6.yaml
を使用します。
2.4.2. 分離された IPv6 ネットワークの設定
オーバークラウドには、IPv6 を設定するためのネットワーク環境ファイルが必要です。このファイルは、オーバークラウドのネットワーク環境を記述し、ネットワークインターフェースの設定テンプレートを参照する Heat 環境ファイルです。本シナリオでは、環境ファイル (/home/stack/network-environment.yaml
) を作成して、以下のセクションを追加します。
resource_registry: OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/cinder-storage.yaml OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller-v6.yaml OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/swift-storage.yaml OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/ceph-storage.yaml
このセクションにより、インターフェーステンプレートがそれぞれリソースとして登録されます。オーバークラウドの作成で、ノード種別ごとにネットワークを設定する際に、メインの Heat テンプレートコレクションが適切な OS::TripleO::*::Net::SoftwareConfig
リソースを呼び出します。このリソースがない場合には、メインの Heat テンプレートコレクションは、メインリソースレジストリーからデフォルトのネットワーク設定セットを使用します。
いずれのインターフェーステンプレートコレクションにも、コントローラーノードを設定するための 2 つのファイル (controller.yaml
と controller-v6.yaml
) が含まれます。IPv6 の設定には controller-v6.yaml
を使用します。
parameter_defaults: DnsServers: ["8.8.8.8","8.8.4.4"] ControlPlaneSubnetCidr: "24" EC2MetadataIp: 192.0.2.1 ControlPlaneDefaultRoute: 192.0.2.1 ExternalInterfaceDefaultRoute: 2001:db8::1 ExternalNetworkVlanID: 100 ExternalNetCidr: '2001:db8:0:1::/64' ExternalAllocationPools: [{'start': '2001:db8:0:1::10', 'end': '2001:db8:0:1:ffff:ffff:ffff:fffe'}] InternalApiNetworkVlanID: 201 InternalApiNetCidr: 'fd00:fd00:fd00:2000::/64' InternalApiAllocationPools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}] TenantNetworkVlanID: 202 TenantNetCidr: 172.17.0.0/24 TenantAllocationPools: [{'start': '172.17.0.10', 'end': '172.17.0.200'}] StorageNetworkVlanID: 203 StorageNetCidr: 'fd00:fd00:fd00:4000::/64' StorageAllocationPools: [{'start': 'fd00:fd00:fd00:4000:0000:0000:0000:0000', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:ffff'}] StorageMgmtNetworkVlanID: 204 StorageMgmtNetCidr: 'fd00:fd00:fd00:5000::/64' StorageMgmtAllocationPools: [{'start': 'fd00:fd00:fd00:5000:0000:0000:0000:0000', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:ffff'}]
parameter_defaults
セクションには、環境のカスタマイズが記述されます。IPv6 の設定では、以下のパラメーターを確認してください。
- ExternalInterfaceDefaultRoute
- 外部インターフェースのデフォルトルート用の IP アドレス。本シナリオでは、アンダークラウドをデフォルトルートとして使用し、「アンダークラウド上での IPv6 アドレスの設定」で作成した IP アドレスを指定します。
- ExternalNetworkVlanID
- 外部ネットワークの VLAN ID。アンダークラウドで外部ネットワークへのアクセスに VLAN を使用する場合には、(「アンダークラウド上での IPv6 アドレスの設定」を参照)、この値に同じ VLAN をマッピングするようにしてください。
- ExternalNetCidr、InternalApiNetCidr、TenantNetCid、StorageNetCidr、StorageMgmtNetCidr
- 各ネットワークの IPv6 CIDR プレフィックス
- ExternalAllocationPools、InternalApiAllocationPools、TenantAllocationPools、StorageAllocationPools、StorageMgmtAllocationPools
- ノードに割り当てる IPv6 アドレスの範囲。これは、IPv6 の競合が発生しないようにするのに役立ちます。
2.4.3. IPv6 と IPv4 のハイブリッド設定の使用
オーバークラウドでは、さまざまなサービスに、IPv4 と IPv6 ネットワークを組み合わせて使用することが可能です。これには、オーバークラウドのネットワークとポートを変更する必要があります。たとえば、ストレージおよびストレージ管理のネットワークを IPv4 にデプロイする一方で、他のネットワークに IPv6 を使用することができます。
ネットワーク分離の初期化ファイル (network-isolation-v6.yaml
) をコピーします。
$ sudo cp /usr/share/openstack-tripleo-heat-templates/environments/network-isolation-v6.yaml ~/templates/nic-configs/network-isolation-v6.yaml
このファイルを編集して、ストレージおよびストレージ管理リソースが IPv4 バージョンのテンプレートを使用するようにをマッピングします。以下に例を示します。
resource_registry: OS::TripleO::Network::External: ../network/external_v6.yaml OS::TripleO::Network::InternalApi: ../network/internal_api_v6.yaml OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt.yaml # Changed for IPv4 OS::TripleO::Network::Storage: ../network/storage.yaml # Changed for IPv4 OS::TripleO::Network::Tenant: ../network/tenant_v6.yaml # Port assignments for the VIPs OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external_v6.yaml OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api_v6.yaml OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage.yaml # Changed for IPv4 OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt.yaml # Changed for IPv4 OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip_v6.yaml # Port assignments for the controller role OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external_v6.yaml OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api_v6.yaml OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage.yaml # Changed for IPv4 OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml # Changed for IPv4 OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant_v6.yaml ...
openstack overcloud deploy
を実行する際には、元のファイルではなく、このカスタム network-isolation-v6.yaml
を指定します。
さらに、/home/stack/network-environment.yaml
の parameter_defaults
セクションを編集して、IPv6 を割り当てるネットワークと IPv4 を割り当てるネットワークが混在するように定義します。以下に例を示します。
parameter_defaults: DnsServers: ["8.8.8.8","8.8.4.4"] ControlPlaneSubnetCidr: "24" EC2MetadataIp: 192.0.2.1 ControlPlaneDefaultRoute: 192.0.2.1 ExternalInterfaceDefaultRoute: 2001:db8::1 ExternalNetworkVlanID: 100 ExternalNetCidr: '2001:db8:0:1::/64' ExternalAllocationPools: [{'start': '2001:db8:0:1::10', 'end': '2001:db8:0:1:ffff:ffff:ffff:fffe'}] InternalApiNetworkVlanID: 201 InternalApiNetCidr: 'fd00:fd00:fd00:2000::/64' InternalApiAllocationPools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}] TenantNetworkVlanID: 202 TenantNetCidr: 172.17.0.0/24 TenantAllocationPools: [{'start': '172.17.0.10', 'end': '172.17.0.200'}] StorageNetworkVlanID: 203 StorageNetCidr: 172.18.0.0/24 StorageAllocationPools: [{'start': '172.18.0.10', 'end': '172.18.0.200'}] StorageMgmtNetworkVlanID: 204 StorageMgmtNetCidr: 172.19.0.0/24 StorageMgmtAllocationPools: [{'start': '172.19.0.10', 'end': '172.19.0.200'}]
オーバークラウドで VXLAN ネットワークを使用する場合には、テナントネットワークに IPv4 を使用するように設定します。テナントネットワークでは、IPv6 VXLAN はサポートされていません。
2.5. オーバークラウドの設定の完了
これで、IPv6 ベースのオーバークラウドの設定に必要なステップは完了です。次章では、openstack overcloud deploy
コマンドで、本章で作成した設定を使用してオーバークラウドを作成します。