Red Hat Training

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

第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 を使用して名前を正規化し、読みやすくすることができます。たとえば、InternalApiinternal_api に変更します。
  • vip:true は仮想 IP アドレス (VIP) を新規ネットワーク上に作成します。その新規ネットワークのデフォルト値は、残りのパラメーターによって設定されます。
  • ip_subnetallocation_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.yamlInternalApi ネットワークのパラメーターを使用します。

            - 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.yamlInternalApi2 ネットワークのパラメーターを使用します。

            - 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 ルーティング対応のリーフ/スパイントポロジーの例

composable leaf spine

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 プロビジョニングネットワークトポロジー

provisioning network vlan

9.3.2. VXLAN プロビジョニングネットワークの例

この例では、新規オーバークラウドノードはプロビジョニングネットワークを介してデプロイされます。 プロビジョニングネットワークは、コンポーズできず、また複数使用することはできません。代わりに、VXLAN トンネルを使用してレイヤー 3 トポロジー全体にまたがります (図9.3「VXLAN プロビジョニングネットワークトポロジー」を参照)。これにより、DHCPOFFER ブロードキャストを任意のリーフに送信できます。このトンネルは、Top-of-Rack (ToR) リーフスイッチ上で設定された VXLAN エンドポイントを使用して確立されます。

図9.3 VXLAN プロビジョニングネットワークトポロジー

provisioning network 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 コンポーザブルネットワークトポロジー

composable networks topology

この図では、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: InternalApiDefaultRoute
  • Compute1 の設定

              	- 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 コントロールプレーン経由のトラフィックルーティング

composable networks topology control plane

比較のために、Internal API ネットワーク経由のルーティングを以下に示します。

図9.6 Internal API 経由のトラフィックルーティング

composable networks topology api networks

以下の 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 テンプレートに適用されています。以下の例は、デプロイメントに適した定義に変更してください。

  1. 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 の値に対して実行される検証は現在ありません。これらの値が一致するように定義して、既存のネットワークと競合が発生しないことを確認してください。

  2. /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
    
  3. コンピュートノード用の 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}
  4. 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