第9章 コンポーザブルネットワークの使用
コンポーザブルネットワークでは、事前定義済みのネットワークセグメント (Internal、Storage、Storage Management、Tenant、External、Control Plane) によって制限されなくなり、その代わりに、独自のネットワークを作成して任意のロール (デフォルトまたはカスタム) に割り当てることができます。たとえば、NFS トラフィック専用のネットワークがある場合には、複数の異なるロールに提供できます。
director は、デプロイメントおよび更新段階中のカスタムネットワークの作成をサポートしています。このような追加のネットワークは、Ironic ベアメタルノード、システム管理に使用したり、異なるロール用に別のネットワークを作成するのに使用したりすることができます。また、これは、トラフィックが複数のネットワーク間でルーティングされる、分離型のデプロイメント用に複数のネットワークセットを作成するのに使用することもできます。
デプロイされるネットワークの一覧は、単一のデータファイル (network_data.yaml) で管理します。それにより、ロールの定義プロセスは、ネットワーク分離を使用して、必要なロールにネットワークを割り当てます (詳しくは「8章ネットワークの分離」を参照)。
9.1. コンポーザブルネットワークの定義 リンクのコピーリンクがクリップボードにコピーされました!
コンポーザブルネットワークを作成するには、/usr/share/openstack-tripleo-heat-templates/network_data.yaml の Heat テンプレートのローカルコピーを編集します。以下に例を示します。
- name: StorageBackup
vip: true
name_lower: storage_backup
ip_subnet: '172.21.1.0/24'
allocation_pools: [{'start': '171.21.1.4', 'end': '172.21.1.250'}]
gateway_ip: '172.21.1.1'
ipv6_subnet: 'fd00:fd00:fd00:7000::/64'
ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::10', 'end': 'fd00:fd00:fd00:7000:ffff:ffff:ffff:fffe'}]
gateway_ipv6: 'fd00:fd00:fd00:7000::1'
-
name は、唯一の必須の値です。ただし、
name_lowerを使用して名前を正規化し、読みやすくすることができます。たとえば、InternalApiをinternal_apiに変更します。 - vip:true は仮想 IP アドレス (VIP) を新規ネットワーク上に作成します。その新規ネットワークのデフォルト値は、残りのパラメーターによって設定されます。
- ip_subnet と allocation_pools はデフォルトの IPv4 サブネットと、ネットワークの IP 範囲を設定します。
- ipv6_subnet および ipv6_allocation_pools は、ネットワークのデフォルトの IPv6 サブネットを設定します。
これらのデフォルト値は、環境ファイル (通常は network-environment.yaml という名前) を使用して上書きすることができます。使用している director のコア Heat テンプレートのルート (/usr/share/openstack-tripleo-heat-templates/ のローカルコピー) から以下のコマンドを実行すると、サンプルの network-environment.yaml ファイルを作成できます。
[stack@undercloud ~/templates] $ ./tools/process-templates.py
9.1.1. コンポーザブルネットワーク用のネットワークインターフェース設定の定義 リンクのコピーリンクがクリップボードにコピーされました!
コンポーザブルネットワークを使用する場合には、各ロール (ネットワークが使用しないロールを含む) に使用する NIC 定義テンプレートにネットワーク IP アドレスのパラメーターの定義を追加する必要があります。この NIC 設定の例は、/usr/share/openstack-tripleo-heat-templates/network/config のディレクトリーを参照してください。たとえば、StorageBackup ネットワークが Ceph ノードにのみ追加される場合には、全ロールの NIC 設定テンプレートのリソース定義に以下の定義を追加する必要があります。
StorageBackupIpSubnet:
default: ''
description: IP address/subnet on the external network
type: string
必要な場合には、VLAN ID とゲートウェイ IP のリソース定義も作成することができます。
StorageBackupNetworkVlanID: # Override this via parameter_defaults in network_environment.yaml
default: 60
description: Vlan ID for the management network traffic.
type: number
StorageBackupDefaultRoute: # Override this via parameter_defaults in network_environment.yaml
description: The default route of the storage backup network.
type: string
カスタムネットワーク用の IpSubnet パラメーターは、各ロールのパラメーター定義に含まれています。ただし、この例では、Ceph ロールは、StorageBackup ネットワークを使用する唯一のロールなので、Ceph ロールの NIC 設定テンプレートのみがそのテンプレートの network_config セクションの StorageBackup パラメーターを使用することになります。
$network_config:
network_config:
- type: interface
name: nic1
use_dhcp: false
addresses:
- ip_netmask:
Get_param: StorageBackupIpSubnet
9.1.2. サービスに対するコンポーザブルネットワークの割り当て リンクのコピーリンクがクリップボードにコピーされました!
カスタムのネットワーク定義で vip: true が指定されている場合には、ServiceNetMap パラメーターを使用してサービスをネットワークに割り当てることができます。サービスに選択されたカスタムネットワークは、サービスをホストするロール上に存在する必要があります。network_environment.yaml (または異なる環境ファイル) の /usr/share/openstack-tripleo-heat-templates/network/service_net_map.j2.yaml で定義されている ServiceNetMap を上書きすることによって、デフォルトのネットワークを上書きすることができます。
parameter_defaults:
ServiceNetMap:
NeutronTenantNetwork: tenant
CeilometerApiNetwork: internal_api
AodhApiNetwork: internal_api
GnocchiApiNetwork: internal_api
MongoDbNetwork: internal_api
CinderApiNetwork: internal_api
CinderIscsiNetwork: storage
GlanceApiNetwork: storage
GlanceRegistryNetwork: internal_api
KeystoneAdminApiNetwork: ctlplane # Admin connection for Undercloud
KeystonePublicApiNetwork: internal_api
NeutronApiNetwork: internal_api
HeatApiNetwork: internal_api
NovaApiNetwork: internal_api
NovaMetadataNetwork: internal_api
NovaVncProxyNetwork: internal_api
SwiftMgmtNetwork: storage_backup # Changed from storage_mgmt
SwiftProxyNetwork: storage
SaharaApiNetwork: internal_api
HorizonNetwork: internal_api
MemcachedNetwork: internal_api
RabbitMqNetwork: internal_api
RedisNetwork: internal_api
MysqlNetwork: internal_api
CephClusterNetwork: storage_backup # Changed from storage_mgmt
CephPublicNetwork: storage
ControllerHostnameResolveNetwork: internal_api
ComputeHostnameResolveNetwork: internal_api
BlockStorageHostnameResolveNetwork: internal_api
ObjectStorageHostnameResolveNetwork: internal_api
CephStorageHostnameResolveNetwork: storage
9.1.3. ルーティングネットワークの定義 リンクのコピーリンクがクリップボードにコピーされました!
コンポーザブルネットワークを使用してルーティングネットワークをデプロイする場合には、ネットワーク設定で使用するルートとルーターゲートウェイを定義します。ネットワークルートを作成して、ネットワークルートとスーパーネットルートを作成して、サブネット間でトラフィックをルーティングする際に使用するインターフェースを定義します。たとえば、Compute と Controller ロールの間でトラフィックがルーティングされるデプロイメントの場合には、分離ネットワークのセット用にスーパーネットを定義することができます。たとえば、172.17.0.0/16 は、172.17 で始まる全ネットワークが含まれるスーパーネットで、コントローラー上で使用される Internal API ネットワークには 172.17.1.0/24 を使用できます。また、コンピュートノード上で使用される Internal API ネットワークには 172.17.2.0/24 を使用できます。ロールで使用されるネットワーク固有のルーターゲートウェイを介する 172.17.0.0/16 スーパーネットへのルートを両方のノードで定義します。
network-environment.yaml で利用可能なパラメーター
InternalApiSupernet:
default: '172.17.0.0/16'
description: Supernet that contains Internal API subnets for all roles.
type: string
InternalApiGateway:
default: '172.17.1.1'
description: Router gateway on Internal API network
type: string
InternalApi2Gateway:
default: '172.17.2.1'
description: Router gateway on Internal API 2 network
Type: string
これらのパラメーターは、ロールの NIC 設定テンプレートで使用できます。
コントローラーは、controller.yaml の InternalApi ネットワークのパラメーターを使用します。
- type: interface
name: nic3
use_dhcp: false
addresses:
- ip_netmask:
get_param: InternalApiIpSubnet
- routes:
ip_netmask:
get_param: InternalApiSupernet
next_hop:
Get_param: InternalApiGateway
compute ロールは、compute.yaml の InternalApi2 ネットワークのパラメーターを使用します。
- type: interface
name: nic3
use_dhcp: false
addresses:
- ip_netmask:
get_param: InternalApi2IpSubnet
- routes:
ip_netmask:
get_param: InternalApiSupernet
next_hop:
Get_param: InternalApi2Gateway
特定のネットワークルートが分離ネットワークに適用されない場合には、ローカル以外のネットワークへのトラフィックはすべてデフォルトのゲートウェイを使用します。これにより、異なる種別のトラフィックが混在し、送信トラフィックがすべて同じインターフェース上に配置されるので、通常はセキュリティーとパフォーマンスの両観点から望ましくありません。また、ルーティングが非対称なので (受信用とは別のインターフェースでトラフィックが送信される)、サービスが到達不可能となる可能性があります。クライアントとサーバーの両方でスーパーネットへのルートを使用すると、トラフィックは両サイドで正しいインターフェースを使用するように送られます。
9.2. ルーティング対応のリーフ/スパイン型のネットワーク リンクのコピーリンクがクリップボードにコピーされました!
コンポーザブルネットワークにより、OpenStack Networking デプロイメントを一般的なルーティング対応のリーフ/スパイン型データセンタートポロジーに適応させることができます。図9.1「ルーティング対応のリーフ/スパイントポロジーの例」に示したとおり、ルーティング対応のリーフ/スパインの実用では、リーフは通常データセンターラック内の Compute または Storage のコンポーザブルロールとして表されます。leaf 0 ラックには、アンダークラウドノードが 1 つと、コントローラーおよびコンピュートノードがあります。コンポーザブルネットワークは、コンポーザブルロールに割り当てられたノードに提示されます。この図では、StorageLeaf ネットワークは Ceph storage ノードとコンピュートノードに提供されています。 NetworkLeaf は、コンポーズする任意のネットワークの例を示しています。
図9.1 ルーティング対応のリーフ/スパイントポロジーの例
9.3. ルーティング対応のリーフ/スパインを使用したハードウェアプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
本項では、ハードウェアプロビジョニングのユースケースを記載し、コンポーザブルネットワークを使用したルーティング対応のリーフ/スパインの機能を実証するための評価環境のデプロイ方法について説明します。デプロイされる環境には、ルーティングが可能な複数のネットワークセットが設定されます。
ルーティング対応のリーフ/スパイン型ネットワークでプロビジョニングネットワークを使用するには、スイッチファブリックで設定した VXLAN トンネルと、各 ToR スイッチにトランキングされた拡張 VLAN の 2 つのオプションがあります。
今後のリリースでは、DHCP リレーを使用して、DHCPOFFER ブロードキャストがルーティング対応のレイヤー 3 ドメイン間を横断するようにできるようになる見込みです。
9.3.1. VLAN プロビジョニングネットワークの例 リンクのコピーリンクがクリップボードにコピーされました!
この例では、新規オーバークラウドノードはプロビジョニングネットワークを介してデプロイされます。 プロビジョニングネットワークは、コンポーズできず、また複数使用することはできません。代わりに、VLAN トンネルを使用してレイヤー 3 トポロジー全体にまたがります (図9.2「VLAN プロビジョニングネットワークトポロジー」を参照)。これにより、DHCPOFFER ブロードキャストを任意のリーフに送信できます。このトンネルは、Top-of-Rack (ToR) リーフスイッチ間の VLAN をトランキングすることによって確立されます。下図では、StorageLeaf ネットワークは Ceph Storage ノードとコンピュートノードに提供されます。NetworkLeaf はコンポーズする任意のネットワークの例を示しています。
図9.2 VLAN プロビジョニングネットワークトポロジー
9.3.2. VXLAN プロビジョニングネットワークの例 リンクのコピーリンクがクリップボードにコピーされました!
この例では、新規オーバークラウドノードはプロビジョニングネットワークを介してデプロイされます。 プロビジョニングネットワークは、コンポーズできず、また複数使用することはできません。代わりに、VXLAN トンネルを使用してレイヤー 3 トポロジー全体にまたがります (図9.3「VXLAN プロビジョニングネットワークトポロジー」を参照)。これにより、DHCPOFFER ブロードキャストを任意のリーフに送信できます。このトンネルは、Top-of-Rack (ToR) リーフスイッチ上で設定された VXLAN エンドポイントを使用して確立されます。
図9.3 VXLAN プロビジョニングネットワークトポロジー
9.3.3. プロビジョニング用ネットワークトポロジー リンクのコピーリンクがクリップボードにコピーされました!
ルーティング対応のリーフ/スパイン型ベアメタル環境にはレイヤー 3 対応のスイッチが 1 つまたは複数あります。このスイッチは、複数のレイヤー 2 ブロードキャストドメイン内の分離された VLAN 間でトラフィックをルーティングします。
この設計意図は、機能に応じてトラフィックを分離することです。たとえば、コントローラーノードが Internal API ネットワーク上で API をホストする場合、コンピュートノードが API にアクセスする際に独自のバージョンの Internal API ネットワークを使用する必要があります。このルーティングが機能するには、Internal API ネットワークを宛先とするトラフィックが必要なインターフェースを使用するように強制するルートが必要です。これは、supernet ルートを使用して設定することができます。たとえば、172.18.0.0/24 をコントローラーノード用の Internal API ネットワークに使用する場合には、2 番目の Internal API ネットワークに172.18.1.0/24、3 番目には 172.18.2.0/24、というように使用できます。その結果、各レイヤー 2 ドメイン内の各ロール向けに、ローカルの Internal API ネットワーク上のゲートウェイ IP を使用する、より大きな 172.18.0.0/16 スーパーネットをポイントするルートができます。
以下のネットワークは、director を使用してデプロイされた環境に使用することができます。
| ネットワーク | アタッチされるロール | インターフェース | ブリッジ | サブネット |
|---|---|---|---|---|
|
Provisioning |
すべて |
UC: nic2 およびその他: nic1 |
UC: br-ctlplane | |
|
External |
Controller |
nic7、OC: nic6 |
br-ex |
192.168.24.0/24 |
|
Storage |
Controller |
nic3、OC: nic2 |
172.16.0.0/24 | |
|
Storage Mgmt |
Controller |
nic4、OC: nic3 |
172.17.0.0/24 | |
|
Internal API |
Controller |
nic5、OC: nic4 |
172.18.0.0/24 | |
|
Tenant |
Controller |
nic6、OC: nic5 |
172.19.0.0/24 | |
|
Storage1 |
Compute1、Ceph1 |
nic8、OC: nic7 |
172.16.1.0/24 | |
|
Storage Mgmt1 |
Ceph1 |
nic9、OC: nic8 |
172.17.1.0/24 | |
|
Internal API1 |
Compute1 |
nic10, OC: nic9 |
172.18.1.0/24 | |
|
Tenant1 |
Compute1 |
nic11、OC: nic10 |
172.19.1.0/24 | |
|
Storage2 |
Compute2、Ceph2 |
nic12、OC: nic11 |
172.16.2.0/24 | |
|
Storage Mgmt2 |
Ceph2 |
nic13、OC: nic12 |
172.17.2.0/24 | |
|
Internal API2 |
Compute2 |
nic14、OC: nic13 |
172.18.2.0/24 | |
|
Tenant2 |
Compute2 |
nic15、OC:nic14 |
172.19.2.0/24 |
アンダークラウドは、外部/インターネット接続用のアップリンクにも接続されている必要があります。通常はアンダークラウドはアップリンクネットワークに接続されている唯一のノードです。これは、OpenStack デプロイメントとは別のインフラストラクチャー VLAN である可能性が高くなります。
9.3.4. トポロジー図 リンクのコピーリンクがクリップボードにコピーされました!
図9.4 コンポーザブルネットワークトポロジー
この図では、172.18.1.0 に戻るルートは、仮想 IP アドレス (VIP) がリッスンしているインターフェースと一致します。その結果、パケットはドロップされず、API 接続は想定通りに機能します。
9.3.5. カスタムロールへの IP アドレス割り当て リンクのコピーリンクがクリップボードにコピーされました!
ロールには、分離ネットワークごとにルートが必要です。各ロールには独自の NIC 設定があり、カスタムネットワークをサポートするには TCP/IP の設定をカスタマイズする必要があります。ゲートウェイのアドレスとルートをロールの NIC 設定にパラメーター化またはハードコード化することも可能です。
たとえば、既存の NIC 設定を基本テンプレートとして使用して、ネットワーク固有のパラメーターを全 NIC 設定に追加することができます。
StorageMgmtIpSubnet:
default: ''
description: IP address/subnet on the storage_mgmt network
type: string
StorageMgmt2IpSubnet:
default: ''
description: IP address/subnet on the storage_mgmt2 network
type: string
TenantIpSubnet:
default: ''
description: IP address/subnet on the tenant network
type: string
TenantIp2Subnet:
default: ''
description: IP address/subnet on the tenant2 network
type: string
デプロイメントで使用する各ロールの各カスタムネットワークに対してこの操作を実行してください。
9.3.6. ロール用のルートの割り当て リンクのコピーリンクがクリップボードにコピーされました!
各分離ネットワークにスーパーネットルートを 1 つ適用すべきです。スーパーネットルートには 172.18.0.0/16 よりも大きい推奨値を使用して、同じルートを各インターフェースに適用しますが、ローカルゲートウェイを使用します。
network-environment.yaml:parameter_defaults: InternalApiSupernet: 172.18.0.0/16 InternalApiInterfaceDefaultRoute: 172.18.0.1 InternalApi1InterfaceDefaultRoute: 172.18.1.1 InternalApi2InterfaceDefaultRoute: 172.18.2.1 InternalApi3InterfaceDefaultRoute: 172.18.3.1
各ロールには、同じ機能によって使用される別のサブネットをポイントする各分離ネットワーク上のルートが必要です。Compute1 ノードが InternalApi VIP 上のコントローラーにコンタクトする場合には、トラフィックは InternalApi1 ゲートウェイを介した InternalApi1 インターフェースをターゲットにする必要があります。その結果、コントローラーから InternalApi1 ネットワークに戻るトラフィックは、InternalApi ネットワークゲートウェイを経由するはずです。
コントローラーの設定
- type: interface name: nic4 use_dhcp: false addresses: - ip_netmask: get_param: InternalApiIpSubnet routes: - ip_netmask: get_param: InternalApiSupernet next_hop: get_param: InternalApiDefaultRouteCompute1 の設定
- type: interface name: nic4 use_dhcp: false addresses: - ip_netmask: get_param: InternalApi1IpSubnet routes: - ip_netmask: get_param: InternalApiSupernet next_hop: get_param: InternalApi1DefaultRoute
スーパーネットルートは、各ロール上の全分離ネットワークに適用して、デフォルトのゲートウェイ経由でトラフィックが送信されるのを防ぎます。これは、デフォルトではコントローラー以外のロールの場合は Control Plane ネットワークで、コントローラー上の場合には External ネットワークです。
Red Hat Enterprise Linux は受信トラフィックに対して厳格な逆方向パスフィルターをデフォルトで実装するので、これらのルートを分離ネットワーク上で設定する必要があります。API が Internal API インターフェース上でリッスンしている場合には、要求はその API で受信し、戻るパスのルートが Internal API インターフェース上にある場合にのみ要求を受理します。サーバーが Internal API ネットワークをリッスンしているが、クライアントに戻るパスが Control Plane 経由の場合には、逆方向パスフィルターによりそのサーバーは要求を破棄します。
たとえば、下図には、コントロールプレーンを経由してトラフィックのルーティングを試みて、成功しない例を示しています。ルーターからコントローラーノードに戻るルートは、VIP がリッスンしているインターフェースとは一致しないので、パケットは破棄されます。192.168.24.0/24 は直接コントローラーに接続され、Control Plane に対してローカルであると見なされます。
図9.5 コントロールプレーン経由のトラフィックルーティング
比較のために、Internal API ネットワーク経由のルーティングを以下に示します。
図9.6 Internal API 経由のトラフィックルーティング
以下の ExtraConfig 設定は、上記で説明した問題に対処します。InternalApi1 の値は、最終的には internal_api1 の値によって表され、大文字と小文字が区別される点に注意してください。
parameter_defaults:
Compute1ExtraConfig:
nova::vncproxy::host: "%{hiera('internal_api1')}"
neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant1')}"
Compute2ExtraConfig:
nova::vncproxy::host: "%{hiera('internal_api2')}"
neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant2')}"
Compute3ExtraConfig:
nova::vncproxy::host: "%{hiera('internal_api3')}"
neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant3')}"
CephAnsibleExtraConfig:
public_network: '172.120.3.0/24,172.117.3.0/24,172.118.3.0/24,172.119.3.0/24'
cluster_network: '172.120.4.0/24,172.117.4.0/24,172.118.4.0/24,172.119.4.0/24'
-
CephAnsibleExtraConfig:public_networkの設定には、全ストレージネットワークのリーフが一覧表示されます。cluster_networkエントリーには、Storage Management ネットワーク (1 リーフにつき 1 つ) が一覧表示されます。
9.3.7. NIC のカスタム定義 リンクのコピーリンクがクリップボードにコピーされました!
以下のカスタム定義は、ノード用の nic-config テンプレートに適用されています。以下の例は、デプロイメントに適した定義に変更してください。
network_data.yamlの値を確認します。これは、以下の例と似たような値であるはずです。[stack@undercloud-0 ~]$ cat /home/stack/network_data.yaml - name: External vip: true name_lower: external ip_subnet: '10.0.0.0/24' allocation_pools: [{'start': '10.0.0.4', 'end': '10.0.0.250'}] gateway_ip: '10.0.0.1' ipv6_subnet: '2001:db8:fd00:1000::/64' ipv6_allocation_pools: [{'start': '2001:db8:fd00:1000::10', 'end': '2001:db8:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: '2001:db8:fd00:1000::1' - name: InternalApi name_lower: internal_api vip: true ip_subnet: '172.16.2.0/24' allocation_pools: [{'start': '172.16.2.4', 'end': '172.16.2.250'}] ipv6_subnet: 'fd00:fd00:fd00:2000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}] - name: Storage vip: true name_lower: storage ip_subnet: '172.16.1.0/24' allocation_pools: [{'start': '172.16.1.4', 'end': '172.16.1.250'}] ipv6_subnet: 'fd00:fd00:fd00:3000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3000::10', 'end': 'fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe'}] - name: StorageMgmt name_lower: storage_mgmt vip: true ip_subnet: '172.16.3.0/24' allocation_pools: [{'start': '172.16.3.4', 'end': '172.16.3.250'}] ipv6_subnet: 'fd00:fd00:fd00:4000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}] - name: Tenant vip: false # Tenant network does not use VIPs name_lower: tenant ip_subnet: '172.16.0.0/24' allocation_pools: [{'start': '172.16.0.4', 'end': '172.16.0.250'}] ipv6_subnet: 'fd00:fd00:fd00:5000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}] - name: Management # Management network is enabled by default for backwards-compatibility, but # is not included in any roles by default. Add to role definitions to use. enabled: true vip: false # Management network does not use VIPs name_lower: management ip_subnet: '10.0.1.0/24' allocation_pools: [{'start': '10.0.1.4', 'end': '10.0.1.250'}] ipv6_subnet: 'fd00:fd00:fd00:6000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:6000::10', 'end': 'fd00:fd00:fd00:6000:ffff:ffff:ffff:fffe'}] - name: Tenant1 vip: false # Tenant network does not use VIPs name_lower: tenant1 ip_subnet: '172.16.11.0/24' allocation_pools: [{'start': '172.16.11.4', 'end': '172.16.11.250'}] ipv6_subnet: 'fd00:fd00:fd00:5001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5001::10', 'end': 'fd00:fd00:fd00:5001:ffff:ffff:ffff:fffe'}] - name: Tenant2 vip: false # Tenant network does not use VIPs name_lower: tenant2 ip_subnet: '172.16.12.0/24' allocation_pools: [{'start': '172.16.12.4', 'end': '172.16.12.250'}] ipv6_subnet: 'fd00:fd00:fd00:5002::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5002::10', 'end': 'fd00:fd00:fd00:5002:ffff:ffff:ffff:fffe'}] - name: Tenant3 vip: false # Tenant network does not use VIPs name_lower: tenant3 ip_subnet: '172.16.13.0/24' allocation_pools: [{'start': '172.16.13.4', 'end': '172.16.13.250'}] ipv6_subnet: 'fd00:fd00:fd00:5003::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:5003::10', 'end': 'fd00:fd00:fd00:5003:ffff:ffff:ffff:fffe'}] - name: StorageMgmt1 name_lower: storage_mgmt1 vip: true ip_subnet: '172.16.21.0/24' allocation_pools: [{'start': '172.16.21.4', 'end': '172.16.21.250'}] ipv6_subnet: 'fd00:fd00:fd00:4001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4001::10', 'end': 'fd00:fd00:fd00:4001:ffff:ffff:ffff:fffe'}] - name: StorageMgmt2 name_lower: storage_mgmt2 vip: true ip_subnet: '172.16.22.0/24' allocation_pools: [{'start': '172.16.22.4', 'end': '172.16.22.250'}] ipv6_subnet: 'fd00:fd00:fd00:4002::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4002::10', 'end': 'fd00:fd00:fd00:4002:ffff:ffff:ffff:fffe'}] - name: StorageMgmt3 name_lower: storage_mgmt3 vip: true ip_subnet: '172.16.23.0/24' allocation_pools: [{'start': '172.16.23.4', 'end': '172.16.23.250'}] ipv6_subnet: 'fd00:fd00:fd00:4003::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:4003::10', 'end': 'fd00:fd00:fd00:4003:ffff:ffff:ffff:fffe'}] - name: Storage1 vip: true name_lower: storage1 ip_subnet: '172.16.31.0/24' allocation_pools: [{'start': '172.16.31.4', 'end': '172.16.31.250'}] ipv6_subnet: 'fd00:fd00:fd00:3001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3001::10', 'end': 'fd00:fd00:fd00:3001:ffff:ffff:ffff:fffe'}] - name: Storage2 vip: true name_lower: storage2 ip_subnet: '172.16.32.0/24' allocation_pools: [{'start': '172.16.32.4', 'end': '172.16.32.250'}] ipv6_subnet: 'fd00:fd00:fd00:3002::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3002::10', 'end': 'fd00:fd00:fd00:3002:ffff:ffff:ffff:fffe'}] - name: Storage3 vip: true name_lower: storage3 ip_subnet: '172.16.33.0/24' allocation_pools: [{'start': '172.16.33.4', 'end': '172.16.33.250'}] ipv6_subnet: 'fd00:fd00:fd00:3003::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3003::10', 'end': 'fd00:fd00:fd00:3003:ffff:ffff:ffff:fffe'}] - name: InternalApi1 name_lower: internal_api1 vip: true ip_subnet: '172.16.41.0/24' allocation_pools: [{'start': '172.16.41.4', 'end': '172.16.41.250'}] ipv6_subnet: 'fd00:fd00:fd00:2001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2001::10', 'end': 'fd00:fd00:fd00:2001:ffff:ffff:ffff:fffe'}] - name: InternalApi2 name_lower: internal_api2 vip: true ip_subnet: '172.16.42.0/24' allocation_pools: [{'start': '172.16.42.4', 'end': '172.16.42.250'}] ipv6_subnet: 'fd00:fd00:fd00:2002::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2002::10', 'end': 'fd00:fd00:fd00:2002:ffff:ffff:ffff:fffe'}] - name: InternalApi3 name_lower: internal_api3 vip: true ip_subnet: '172.16.43.0/24' allocation_pools: [{'start': '172.16.43.4', 'end': '172.16.43.250'}] ipv6_subnet: 'fd00:fd00:fd00:2003::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2003::10', 'end': 'fd00:fd00:fd00:2003:ffff:ffff:ffff:fffe'}]注記ネットワークサブネットと
allocation_poolsの値に対して実行される検証は現在ありません。これらの値が一致するように定義して、既存のネットワークと競合が発生しないことを確認してください。/home/stack/roles_data.yamlの値を確認します。これらは、以下の例と似たような値であるはずです。#################################### # Role: Controller # #################################### - name: Controller description: | Controller role that has all the controler services loaded and handles Database, Messaging and Network functions. CountDefault: 1 tags: - primary - controller networks: - External - InternalApi - Storage - StorageMgmt - Tenant HostnameFormatDefault: '%stackname%-controller-%index%' ServicesDefault: - OS::TripleO::Services::AodhApi - OS::TripleO::Services::AodhEvaluator - OS::TripleO::Services::AodhListener - OS::TripleO::Services::AodhNotifier - OS::TripleO::Services::AuditD - OS::TripleO::Services::BarbicanApi - OS::TripleO::Services::CACerts - OS::TripleO::Services::CeilometerAgentCentral - OS::TripleO::Services::CeilometerAgentNotification - OS::TripleO::Services::CeilometerApi - OS::TripleO::Services::CeilometerCollector - OS::TripleO::Services::CeilometerExpirer - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CephMds - OS::TripleO::Services::CephMon - OS::TripleO::Services::CephRbdMirror - OS::TripleO::Services::CephRgw - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendScaleIO - OS::TripleO::Services::CinderBackendVRTSHyperScale - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderHPELeftHandISCSI - OS::TripleO::Services::CinderScheduler - OS::TripleO::Services::CinderVolume - OS::TripleO::Services::Clustercheck - OS::TripleO::Services::Collectd - OS::TripleO::Services::Congress - OS::TripleO::Services::Docker - OS::TripleO::Services::Ec2Api - OS::TripleO::Services::Etcd - OS::TripleO::Services::ExternalSwiftProxy - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::GnocchiApi - OS::TripleO::Services::GnocchiMetricd - OS::TripleO::Services::GnocchiStatsd - OS::TripleO::Services::HAproxy - OS::TripleO::Services::HeatApi - OS::TripleO::Services::HeatApiCfn - OS::TripleO::Services::HeatApiCloudwatch - OS::TripleO::Services::HeatEngine - OS::TripleO::Services::Horizon - OS::TripleO::Services::IronicApi - OS::TripleO::Services::IronicConductor - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Keepalived - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::ManilaApi - OS::TripleO::Services::ManilaBackendCephFs - OS::TripleO::Services::ManilaBackendGeneric - OS::TripleO::Services::ManilaBackendIsilon - OS::TripleO::Services::ManilaBackendNetapp - OS::TripleO::Services::ManilaBackendUnity - OS::TripleO::Services::ManilaBackendVNX - OS::TripleO::Services::ManilaBackendVMAX - OS::TripleO::Services::ManilaScheduler - OS::TripleO::Services::ManilaShare - OS::TripleO::Services::Memcached - OS::TripleO::Services::MongoDb - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronApi - OS::TripleO::Services::NeutronBgpVpnApi - OS::TripleO::Services::NeutronCorePlugin - OS::TripleO::Services::NeutronDhcpAgent - OS::TripleO::Services::NeutronL2gwAgent - OS::TripleO::Services::NeutronL2gwApi - OS::TripleO::Services::NeutronL3Agent - OS::TripleO::Services::NeutronLbaasv2Agent - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronML2FujitsuCfab - OS::TripleO::Services::NeutronML2FujitsuFossw - OS::TripleO::Services::NeutronOvsAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaApi - OS::TripleO::Services::NovaConductor - OS::TripleO::Services::NovaConsoleauth - OS::TripleO::Services::NovaIronic - OS::TripleO::Services::NovaMetadata - OS::TripleO::Services::NovaPlacement - OS::TripleO::Services::NovaScheduler - OS::TripleO::Services::NovaVncProxy - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OctaviaApi - OS::TripleO::Services::OctaviaHealthManager - OS::TripleO::Services::OctaviaHousekeeping - OS::TripleO::Services::OctaviaWorker - OS::TripleO::Services::OpenDaylightApi - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::OVNDBs - OS::TripleO::Services::OVNController - OS::TripleO::Services::Pacemaker - OS::TripleO::Services::PankoApi - OS::TripleO::Services::RabbitMQ - OS::TripleO::Services::Redis - OS::TripleO::Services::SaharaApi - OS::TripleO::Services::SaharaEngine - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::SwiftProxy - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::SwiftStorage - OS::TripleO::Services::Tacker - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::Zaqar #################################### # Role: Compute # #################################### - name: Compute1 description: | Basic Compute Node role CountDefault: 1 networks: - InternalApi1 - Tenant1 - Storage1 HostnameFormatDefault: '%stackname%-novacompute1-%index%' disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::ComputeCeilometerAgent - OS::TripleO::Services::ComputeNeutronCorePlugin - OS::TripleO::Services::ComputeNeutronL3Agent - OS::TripleO::Services::ComputeNeutronMetadataAgent - OS::TripleO::Services::ComputeNeutronOvsAgent - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronSriovAgent - OS::TripleO::Services::NeutronSriovHostConfig - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController #################################### # Role: CephStorage # #################################### - name: CephStorage1 description: | Ceph OSD Storage node role networks: - Storage1 - StorageMgmt1 ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned #################################### # Role: Compute # #################################### - name: Compute2 description: | Basic Compute Node role CountDefault: 1 networks: - InternalApi2 - Tenant2 - Storage2 HostnameFormatDefault: '%stackname%-novacompute2-%index%' disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::ComputeCeilometerAgent - OS::TripleO::Services::ComputeNeutronCorePlugin - OS::TripleO::Services::ComputeNeutronL3Agent - OS::TripleO::Services::ComputeNeutronMetadataAgent - OS::TripleO::Services::ComputeNeutronOvsAgent - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronSriovAgent - OS::TripleO::Services::NeutronSriovHostConfig - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController #################################### # Role: CephStorage # #################################### - name: CephStorage2 description: | Ceph OSD Storage node role networks: - Storage2 - StorageMgmt2 ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned #################################### # Role: Compute # #################################### - name: Compute3 description: | Basic Compute Node role CountDefault: 1 networks: - InternalApi3 - Tenant3 - Storage3 HostnameFormatDefault: '%stackname%-novacompute3-%index%' disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::ComputeCeilometerAgent - OS::TripleO::Services::ComputeNeutronCorePlugin - OS::TripleO::Services::ComputeNeutronL3Agent - OS::TripleO::Services::ComputeNeutronMetadataAgent - OS::TripleO::Services::ComputeNeutronOvsAgent - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronSriovAgent - OS::TripleO::Services::NeutronSriovHostConfig - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController #################################### # Role: CephStorage # #################################### - name: CephStorage3 description: | Ceph OSD Storage node role networks: - Storage3 - StorageMgmt3 ServicesDefault: - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::FluentdClient - OS::TripleO::Services::Kernel - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tunedコンピュートノード用の
nic-configテンプレートを確認します。[stack@undercloud-0 ~]$ cat virt/network/three-nics-vlans/compute1.yaml heat_template_version: 2015-04-30 description: > Software Config to drive os-net-config to configure multiple interfaces for the compute role. parameters: InternalApi1InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string InternalApi2InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string InternalApi3InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string Tenant1InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string Tenant2InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string Tenant3InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string Storage1InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string Storage2InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string Storage3InterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string InternalApi1NetworkVlanID: default: 21 description: Vlan ID for the internal_api network traffic. type: number InternalApi2NetworkVlanID: default: 22 description: Vlan ID for the internal_api network traffic. type: number InternalApi3NetworkVlanID: default: 23 description: Vlan ID for the internal_api network traffic. type: number Storage1NetworkVlanID: default: 31 description: Vlan ID for the storage network traffic. type: number Storage2NetworkVlanID: default: 32 description: Vlan ID for the storage network traffic. type: number Storage3NetworkVlanID: default: 33 description: Vlan ID for the storage network traffic. type: number StorageMgmt1NetworkVlanID: default: 41 description: Vlan ID for the storage mgmt network traffic. type: number StorageMgmt2NetworkVlanID: default: 42 description: Vlan ID for the storage mgmt network traffic. type: number StorageMgmt3NetworkVlanID: default: 43 description: Vlan ID for the storage mgmt network traffic. type: number Tenant1NetworkVlanID: default: 51 description: Vlan ID for the tenant network traffic. type: number Tenant2NetworkVlanID: default: 52 description: Vlan ID for the tenant network traffic. type: number Tenant3NetworkVlanID: default: 53 description: Vlan ID for the tenant network traffic. type: number ControlPlaneIp: default: '' description: IP address/subnet on the ctlplane network type: string ExternalIpSubnet: default: '' description: IP address/subnet on the external network type: string InternalApiIpSubnet: default: '' description: IP address/subnet on the internal API network type: string InternalApi1IpSubnet: default: '' description: IP address/subnet on the internal API network type: string InternalApi2IpSubnet: default: '' description: IP address/subnet on the internal API network type: string InternalApi3IpSubnet: default: '' description: IP address/subnet on the internal API network type: string Storage1IpSubnet: default: '' description: IP address/subnet on the storage network type: string Storage2IpSubnet: default: '' description: IP address/subnet on the storage network type: string Storage3IpSubnet: default: '' description: IP address/subnet on the storage network type: string StorageMgmt1IpSubnet: default: '' description: IP address/subnet on the storage mgmt network type: string StorageMgmt2IpSubnet: default: '' description: IP address/subnet on the storage mgmt network type: string StorageMgmt3IpSubnet: default: '' description: IP address/subnet on the storage mgmt network type: string Tenant1IpSubnet: default: '' description: IP address/subnet on the tenant network type: string Tenant2IpSubnet: default: '' description: IP address/subnet on the tenant network type: string Tenant3IpSubnet: default: '' description: IP address/subnet on the tenant network type: string StorageIpSubnet: default: '' description: IP address/subnet on the storage network type: string StorageMgmtIpSubnet: default: '' description: IP address/subnet on the storage mgmt network type: string TenantIpSubnet: default: '' description: IP address/subnet on the tenant network type: string ManagementIpSubnet: # Only populated when including environments/network-management.yaml default: '' description: IP address/subnet on the management network type: string InternalApiNetworkVlanID: default: 20 description: Vlan ID for the internal_api network traffic. type: number StorageNetworkVlanID: default: 30 description: Vlan ID for the storage network traffic. type: number TenantNetworkVlanID: default: 50 description: Vlan ID for the tenant network traffic. type: number ControlPlaneSubnetCidr: # Override this via parameter_defaults default: '24' description: The subnet CIDR of the control plane network. type: string ControlPlaneDefaultRoute: # Override this via parameter_defaults description: The subnet CIDR of the control plane network. type: string DnsServers: # Override this via parameter_defaults default: [] description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf. type: json EC2MetadataIp: # Override this via parameter_defaults description: The IP address of the EC2 metadata server. type: string resources: OsNetConfigImpl: type: OS::Heat::StructuredConfig properties: group: os-apply-config config: os_net_config: network_config: - type: interface name: nic1 use_dhcp: false dns_servers: {get_param: DnsServers} addresses: - ip_netmask: list_join: - '/' - - {get_param: ControlPlaneIp} - {get_param: ControlPlaneSubnetCidr} routes: - ip_netmask: 0.0.0.0/0 next_hop: {get_param: ControlPlaneDefaultRoute} # Optionally have this interface as default route default: true - ip_netmask: 169.254.169.254/32 next_hop: {get_param: EC2MetadataIp} - type: ovs_bridge name: br-isolated use_dhcp: false members: - type: interface name: nic2 # force the MAC address of the bridge to this interface primary: true - type: vlan vlan_id: {get_param: InternalApi1NetworkVlanID} addresses: - ip_netmask: {get_param: InternalApi1IpSubnet} routes: - ip_netmask: 172.120.1.0/24 next_hop: {get_param: InternalApi1InterfaceDefaultRoute} - ip_netmask: 172.118.1.0/24 next_hop: {get_param: InternalApi1InterfaceDefaultRoute} - ip_netmask: 172.119.1.0/24 next_hop: {get_param: InternalApi1InterfaceDefaultRoute} - type: vlan vlan_id: {get_param: Storage1NetworkVlanID} addresses: - ip_netmask: {get_param: Storage1IpSubnet} routes: - ip_netmask: 172.120.3.0/24 next_hop: {get_param: Storage1InterfaceDefaultRoute} - ip_netmask: 172.118.3.0/24 next_hop: {get_param: Storage1InterfaceDefaultRoute} - ip_netmask: 172.119.3.0/24 next_hop: {get_param: Storage1InterfaceDefaultRoute} - type: vlan vlan_id: {get_param: Tenant1NetworkVlanID} addresses: - ip_netmask: {get_param: Tenant1IpSubnet} routes: - ip_netmask: 172.120.2.0/24 next_hop: {get_param: Tenant1InterfaceDefaultRoute} - ip_netmask: 172.118.2.0/24 next_hop: {get_param: Tenant1InterfaceDefaultRoute} - ip_netmask: 172.119.2.0/24 next_hop: {get_param: Tenant1InterfaceDefaultRoute} - type: interface name: nic3 use_dhcp: false outputs: OS::stack_id: description: The OsNetConfigImpl resource. value: {get_resource: OsNetConfigImpl}openstack overcloud deployコマンドを実行して変更を適用します。以下に例を示します。openstack overcloud deploy --templates \ --libvirt-type kvm \ -n /home/stack/network_data.yaml \ -r /home/stack/roles_data.yaml \ -e /home/stack/templates/nodes_data.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/virt/network/network-environment.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/enable-tls.yaml \ -e /home/stack/virt/public_vip.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-endpoints-public-ip.yaml \ -e /home/stack/inject-trust-anchor-hiera.yaml \ -e /home/stack/rhos12.yaml