Deploying OC with multiple subnets under default networks fails: "Multiple subnet matches found for name '<subnet name>', use an ID to be mo re specific" Environment: openstack-tripleo-heat-templates-10.6.1-0.20190801110459.7fbedf0.el8ost.noarch Steps to reproduce: 1. Configure networks with multiple subnets like below: ######################################################################## #############################Deploy command ############################ ######################################################################## openstack overcloud deploy --templates \ --libvirt-type kvm \ -e /home/stack/templates/nodes_data.yaml \ -r /home/stack/templates/roles_data.yaml \ -n /home/stack/templates/network_data.yaml \ -e /home/stack/templates/extraconfig.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /home/stack/virt/internal.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/virt/network/network-environment.yaml \ -e /home/stack/virt/network/dvr-override.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/low-memory-usage.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/ssl/tls-endpoints-public-ip.yaml \ -e /home/stack/virt/enable-tls.yaml \ -e /home/stack/virt/public_vip.yaml \ -e /home/stack/virt/inject-trust-anchor.yaml \ -e /home/stack/containers-prepare-parameter.yaml ######################################################################## #############################roles_data.yaml############################ ######################################################################## [stack@undercloud-0 ~]$ cat /home/stack/templates/roles_data.yaml ############################################################################### # File generated by TripleO ############################################################################### ############################################################################### # 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: subnet: external_subnet InternalApi: subnet: internal_api_subnet Storage: subnet: storage_subnet StorageMgmt: subnet: storage_mgmt_subnet Tenant: subnet: tenant_subnet # For systems with both IPv4 and IPv6, you may specify a gateway network for # each, such as ['ControlPlane', 'External'] default_route_networks: ['External'] HostnameFormatDefault: '%stackname%-controller-%index%' # Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Set uses_deprecated_params to True if any deprecated params are used. uses_deprecated_params: True deprecated_param_extraconfig: 'controllerExtraConfig' deprecated_param_flavor: 'OvercloudControlFlavor' deprecated_param_image: 'controllerImage' deprecated_nic_config_name: 'controller.yaml' update_serial: 1 ServicesDefault: - OS::TripleO::Services::Aide - 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::BarbicanBackendSimpleCrypto - OS::TripleO::Services::BarbicanBackendDogtag - OS::TripleO::Services::BarbicanBackendKmip - OS::TripleO::Services::BarbicanBackendPkcs11Crypto - OS::TripleO::Services::BootParams - OS::TripleO::Services::CACerts - OS::TripleO::Services::CeilometerAgentCentral - OS::TripleO::Services::CeilometerAgentNotification - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CephMds - OS::TripleO::Services::CephMgr - 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::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXTREMIOISCSI - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendPure - OS::TripleO::Services::CinderBackendScaleIO - OS::TripleO::Services::CinderBackendVRTSHyperScale - OS::TripleO::Services::CinderBackendNVMeOF - 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::ContainerImagePrepare - OS::TripleO::Services::DesignateApi - OS::TripleO::Services::DesignateCentral - OS::TripleO::Services::DesignateProducer - OS::TripleO::Services::DesignateWorker - OS::TripleO::Services::DesignateMDNS - OS::TripleO::Services::DesignateSink - OS::TripleO::Services::Docker - OS::TripleO::Services::Ec2Api - OS::TripleO::Services::Etcd - OS::TripleO::Services::ExternalSwiftProxy - OS::TripleO::Services::Fluentd - 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::HeatApiCloudwatch - OS::TripleO::Services::HeatApiCfn - OS::TripleO::Services::HeatEngine - OS::TripleO::Services::Horizon - OS::TripleO::Services::IpaClient - OS::TripleO::Services::Ipsec - OS::TripleO::Services::IronicApi - OS::TripleO::Services::IronicConductor - OS::TripleO::Services::IronicInspector - OS::TripleO::Services::IronicPxe - OS::TripleO::Services::IronicNeutronAgent - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Keepalived - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::ManilaApi - OS::TripleO::Services::ManilaBackendCephFs - 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::MetricsQdr - OS::TripleO::Services::MistralApi - OS::TripleO::Services::MistralEngine - OS::TripleO::Services::MistralExecutor - OS::TripleO::Services::MistralEventEngine - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronApi - OS::TripleO::Services::NeutronBgpVpnApi - OS::TripleO::Services::NeutronSfcApi - 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::NeutronLbaasv2Api - 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::ContainersLogrotateCrond - OS::TripleO::Services::OctaviaApi - OS::TripleO::Services::OctaviaDeploymentConfig - OS::TripleO::Services::OctaviaHealthManager - OS::TripleO::Services::OctaviaHousekeeping - OS::TripleO::Services::OctaviaWorker - OS::TripleO::Services::OpenDaylightApi - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::OpenStackClients - OS::TripleO::Services::OVNDBs - OS::TripleO::Services::OVNController - OS::TripleO::Services::Pacemaker - OS::TripleO::Services::PankoApi - OS::TripleO::Services::OsloMessagingRpc - OS::TripleO::Services::OsloMessagingNotify - OS::TripleO::Services::Podman - OS::TripleO::Services::Redis - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::SaharaApi - OS::TripleO::Services::SaharaEngine - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::SkydiveAnalyzer - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::SwiftProxy - OS::TripleO::Services::SwiftDispersion - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::SwiftStorage - OS::TripleO::Services::Tacker - OS::TripleO::Services::Timesync - 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: Compute1 # ############################################################################### - name: Compute1 description: | Basic Compute1 Node role CountDefault: 1 # Create external Neutron bridge (unset if using ML2/OVS without DVR) tags: - external_bridge networks: InternalApi: subnet: internal_api1_subnet Tenant: subnet: tenant1_subnet Storage: subnet: storage1_subnet HostnameFormatDefault: '%stackname%-novacompute1-%index%' RoleParametersDefault: TunedProfileName: "virtual-host" # Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Set uses_deprecated_params to True if any deprecated params are used. # These deprecated_params only need to be used for existing roles and not for # composable roles. uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' deprecated_nic_config_name: 'compute.yaml' update_serial: 25 ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::BootParams - 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::Fluentd - OS::TripleO::Services::IpaClient - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MetricsQdr - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronBgpVpnBagpipe - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaLibvirtGuests - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Podman - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timesync - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent ############################################################################### # Role: Compute2 # ############################################################################### - name: Compute2 description: | Basic Compute2 Node role CountDefault: 1 # Create external Neutron bridge (unset if using ML2/OVS without DVR) tags: - external_bridge networks: InternalApi: subnet: internal_api2_subnet Tenant: subnet: tenant2_subnet Storage: subnet: storage2_subnet HostnameFormatDefault: '%stackname%-novacompute2-%index%' RoleParametersDefault: TunedProfileName: "virtual-host" # Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Set uses_deprecated_params to True if any deprecated params are used. # These deprecated_params only need to be used for existing roles and not for # composable roles. uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' deprecated_nic_config_name: 'compute.yaml' update_serial: 25 ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::BootParams - 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::Fluentd - OS::TripleO::Services::IpaClient - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MetricsQdr - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronBgpVpnBagpipe - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaLibvirtGuests - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Podman - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timesync - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent ############################################################################### # Role: Compute3 # ############################################################################### - name: Compute3 description: | Basic Compute3 Node role CountDefault: 1 # Create external Neutron bridge (unset if using ML2/OVS without DVR) tags: - external_bridge networks: InternalApi: subnet: internal_api3_subnet Tenant: subnet: tenant3_subnet Storage: subnet: storage3_subnet HostnameFormatDefault: '%stackname%-novacompute3-%index%' RoleParametersDefault: TunedProfileName: "virtual-host" # Deprecated & backward-compatible values (FIXME: Make parameters consistent) # Set uses_deprecated_params to True if any deprecated params are used. # These deprecated_params only need to be used for existing roles and not for # composable roles. uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' deprecated_nic_config_name: 'compute.yaml' update_serial: 25 ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::BootParams - 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::Fluentd - OS::TripleO::Services::IpaClient - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MetricsQdr - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronBgpVpnBagpipe - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaLibvirtGuests - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Podman - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timesync - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent ############################################################################### # Role: CephStorage1 # ############################################################################### - name: CephStorage1 description: | Ceph OSD Storage node role networks: Storage: subnet: storage1_subnet StorageMgmt: subnet: storage_mgmt1_subnet uses_deprecated_params: False deprecated_nic_config_name: 'ceph-storage.yaml' # CephOSD present so serial has to be 1 update_serial: 1 ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::BootParams - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::IpaClient - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MetricsQdr - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Podman - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timesync - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned ############################################################################### # Role: CephStorage2 # ############################################################################### - name: CephStorage2 description: | Ceph OSD Storage node role networks: Storage: subnet: storage2_subnet StorageMgmt: subnet: storage_mgmt2_subnet uses_deprecated_params: False deprecated_nic_config_name: 'ceph-storage.yaml' # CephOSD present so serial has to be 1 update_serial: 1 ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::BootParams - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::IpaClient - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MetricsQdr - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Podman - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timesync - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned ############################################################################### # Role: CephStorage3 # ############################################################################### - name: CephStorage3 description: | Ceph OSD Storage node role networks: Storage: subnet: storage3_subnet StorageMgmt: subnet: storage_mgmt3_subnet uses_deprecated_params: False deprecated_nic_config_name: 'ceph-storage.yaml' # CephOSD present so serial has to be 1 update_serial: 1 ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::BootParams - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::IpaClient - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MetricsQdr - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Podman - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timesync - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned ######################################################################## #############################network_data.yaml########################## ######################################################################## [stack@undercloud-0 ~]$ cat /home/stack/templates/network_data.yaml # List of networks, used for j2 templating of enabled networks # # Supported values: # # name: Name of the network (mandatory) # name_lower: lowercase version of name used for filenames # (optional, defaults to name.lower()) # enabled: Is the network enabled (optional, defaults to true) # vlan: vlan for the network (optional) # vip: Enable creation of a virtual IP on this network # ip_subnet: IP/CIDR, e.g. '192.168.24.0/24' or '2001:db8:fd00:1000::/64' # (optional, may use parameter defaults instead) # allocation_pools: IP range list e.g. [{'start':'10.0.0.4', 'end':'10.0.0.250'}] # gateway_ip: gateway for the network (optional, may use parameter defaults) # ipv6_subnet: Optional, sets default IPv6 subnet if IPv4 is already defined. # ipv6_allocation_pools: Set default IPv6 allocation pools if IPv4 allocation pools # are already defined. # ipv6_gateway: Set an IPv6 gateway if IPv4 gateway already defined. # ipv6: If ip_subnet not defined, this specifies that the network is IPv6-only. # NOTE: IP-related values set parameter defaults in templates, may be overridden, # either by operators, or e.g in environments/network-isolation-v6.yaml where we # set some default IPv6 addresses. # compat_name: for existing stack you may need to override the default # transformation for the resource's name. # # Example: # - name Example # vip: false # ip_subnet: '10.0.2.0/24' # allocation_pools: [{'start': '10.0.2.4', 'end': '10.0.2.250'}] # gateway_ip: '10.0.2.254' # # To support backward compatility, two versions of the network definitions will # be created, network/<network>.yaml and network/<network>_v6.yaml. Only # one of these files may be used in the deployment at a time, since the # parameters used for configuration are the same in both files. In the # future, this behavior may be changed to create only one file for custom # networks. You may specify IPv6 addresses for ip_subnet, allocation_pools, # and gateway_ip if no IPv4 addresses are used for a custom network, or set # ipv6: true, and the network/<network>.yaml file will be configured as IPv6. # # For configuring both IPv4 and IPv6 on the same interface, use two separate # networks, and then assign both IPs in the custom NIC configuration templates. - name: External vip: true name_lower: external vlan: 10 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:1100::/64' ipv6_allocation_pools: [{'start': '2001:db8:fd00:1100::10', 'end': '2001:db8:fd00:1100:ffff:ffff:ffff:fffe'}] gateway_ipv6: '2001:db8:fd00:1000::1' - name: InternalApi name_lower: internal_api vip: true vlan: 24 ip_subnet: '172.121.1.0/24' allocation_pools: [{'start': '172.121.1.10', 'end': '172.121.1.200'}] gateway_ip: '172.121.1.1' ipv6_subnet: 'fd00:fd00:fd00:1004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1004::10', 'end': 'fd00:fd00:fd00:1004:ffff:ffff:ffff:fffe'}] subnets: internal_api_subnet: vlan: 23 ip_subnet: '172.120.1.0/24' allocation_pools: [{'start': '172.120.1.10', 'end': '172.120.1.200'}] gateway_ip: '172.120.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1000::10', 'end': 'fd00:fd00:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1000::1' internal_api1_subnet: vlan: 20 ip_subnet: '172.117.1.0/24' allocation_pools: [{'start': '172.117.1.10', 'end': '172.117.1.200'}] gateway_ip: '172.117.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1001::10', 'end': 'fd00:fd00:fd00:1001:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1001::1' internal_api2_subnet: vlan: 21 ip_subnet: '172.118.1.0/24' allocation_pools: [{'start': '172.118.1.10', 'end': '172.118.1.200'}] gateway_ip: '172.118.1.1' ipv6_subnet: 'fd00:fd00:fd00:1002::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1002::10', 'end': 'fd00:fd00:fd00:1002:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1002::1' internal_api3_subnet: vlan: 22 ip_subnet: '172.119.1.0/24' allocation_pools: [{'start': '172.119.1.10', 'end': '172.119.1.200'}] gateway_ip: '172.119.1.1' ipv6_subnet: 'fd00:fd00:fd00:1003::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1003::10', 'end': 'fd00:fd00:fd00:1003:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1003::1' - name: Storage vip: true vlan: 34 name_lower: storage ip_subnet: '172.121.4.0/24' allocation_pools: [{'start': '172.121.4.10', 'end': '172.121.4.200'}] gateway_ip: '172.121.4.1' ipv6_subnet: 'fd00:fd00:fd00:2004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2004::10', 'end': 'fd00:fd00:fd00:2004:ffff:ffff:ffff:fffe'}] subnets: storage_subnet: vlan: 33 ip_subnet: '172.120.3.0/24' allocation_pools: [{'start': '172.120.3.10', 'end': '172.120.3.200'}] gateway_ip: '172.120.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2000::1' storage1_subnet: vlan: 30 ip_subnet: '172.117.3.0/24' allocation_pools: [{'start': '172.117.3.10', 'end': '172.117.3.200'}] gateway_ip: '172.117.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2001::1' storage2_subnet: vlan: 31 ip_subnet: '172.118.3.0/24' allocation_pools: [{'start': '172.118.3.10', 'end': '172.118.3.200'}] gateway_ip: '172.118.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2002::1' storage3_subnet: vlan: 32 ip_subnet: '172.119.3.0/24' allocation_pools: [{'start': '172.119.3.10', 'end': '172.119.3.200'}] gateway_ip: '172.119.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2003::1' - name: StorageMgmt vlan: 44 name_lower: storage_mgmt vip: true ip_subnet: '172.121.4.0/24' allocation_pools: [{'start': '172.121.4.10', 'end': '172.121.4.200'}] gateway_ip: '172.121.4.1' ipv6_subnet: 'fd00:fd00:fd00:3004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3004::10', 'end': 'fd00:fd00:fd00:3004:ffff:ffff:ffff:fffe'}] subnets: storage_mgmt_subnet: vlan: 43 ip_subnet: '172.120.4.0/24' allocation_pools: [{'start': '172.120.4.10', 'end': '172.120.4.200'}] gateway_ip: '172.120.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3000::1' storage_mgmt1_subnet: vlan: 40 ip_subnet: '172.117.4.0/24' allocation_pools: [{'start': '172.117.4.10', 'end': '172.117.4.200'}] gateway_ip: '172.117.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3001::1' storage_mgmt2_subnet: vlan: 41 ip_subnet: '172.118.4.0/24' allocation_pools: [{'start': '172.118.4.10', 'end': '172.118.4.200'}] gateway_ip: '172.118.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3002::1' storage_mgmt3_subnet: vlan: 42 ip_subnet: '172.119.4.0/24' allocation_pools: [{'start': '172.119.4.10', 'end': '172.119.4.200'}] gateway_ip: '172.119.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3003::1' - name: Tenant vip: false # Tenant network does not use VIPs name_lower: tenant vlan: 54 ip_subnet: '172.121.2.0/24' allocation_pools: [{'start': '172.121.2.10', 'end': '172.121.2.200'}] gateway_ip: '172.121.2.1' 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'}] subnets: tenant_subnet: vlan: 53 ip_subnet: '172.120.2.0/24' allocation_pools: [{'start': '172.120.2.10', 'end': '172.120.2.200'}] gateway_ip: '172.120.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4000::1' tenant1_subnet: vlan: 50 ip_subnet: '172.117.2.0/24' allocation_pools: [{'start': '172.117.2.10', 'end': '172.117.2.200'}] gateway_ip: '172.117.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4001::1' tenant2_subnet: vlan: 51 ip_subnet: '172.118.2.0/24' allocation_pools: [{'start': '172.118.2.10', 'end': '172.118.2.200'}] gateway_ip: '172.118.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4002::1' tenant3_subnet: vlan: 52 ip_subnet: '172.119.2.0/24' allocation_pools: [{'start': '172.119.2.10', 'end': '172.119.2.200'}] gateway_ip: '172.119.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4003::1' - 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 vlan: 60 ip_subnet: '172.20.0.0/24' allocation_pools: [{'start': '172.20.0.10', 'end': '172.20.0.250'}] gateway_ip: '172.20.0.254' 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'}] gateway_ipv6: 'fd00:fd00:fd00:5000::1' subnets: management_leaf1: enabled: true vlan: 61 ip_subnet: '172.20.1.0/24' allocation_pools: [{'start': '172.20.1.10', 'end': '172.20.1.250'}] gateway_ip: '172.20.1.254' 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'}] gateway_ipv6: 'fd00:fd00:fd00:5001::1' ######################################################################## #############################network-environment.yaml################### ######################################################################## [stack@undercloud-0 ~]$ cat /home/stack/virt/network/network-environment.yaml parameter_defaults: DnsServers: - 10.0.0.1 NeutronBridgeMappings: datacentre:br-ex,tenant:br-isolated NeutronExternalNetworkBridge: br-ex NeutronNetworkType: geneve NeutronTunnelTypes: geneve NeutronNetworkVLANRanges: tenant:1000:2000 resource_registry: OS::TripleO::CephStorage1::Net::SoftwareConfig: three-nics-vlans/ceph-storage1.yaml OS::TripleO::Compute1::Net::SoftwareConfig: three-nics-vlans/compute1.yaml OS::TripleO::Controller::Net::SoftwareConfig: three-nics-vlans/controller.yaml OS::TripleO::CephStorage2::Net::SoftwareConfig: three-nics-vlans/ceph-storage1.yaml OS::TripleO::Compute2::Net::SoftwareConfig: three-nics-vlans/compute1.yaml OS::TripleO::CephStorage3::Net::SoftwareConfig: three-nics-vlans/ceph-storage1.yaml OS::TripleO::Compute3::Net::SoftwareConfig: three-nics-vlans/compute1.yaml ######################################################################## #############################compute nic-config######################### ######################################################################## [stack@undercloud-0 ~]$ cat virt/network/three-nics-vlans/compute1.yaml heat_template_version: rocky description: > Software Config to drive os-net-config to configure multiple interfaces for the compute role. parameters: ControlPlaneStaticRoutes: default: [] description: 'Routes for the ctlplane network traffic. JSON route e.g. [{''destination'':''10.0.0.0/16'', ''nexthop'':''10.0.0.1''}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute.' type: json ControlPlaneMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the network. (The parameter is automatically resolved from the ctlplane network's mtu attribute.) type: number StorageMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the Storage network. type: number StorageMgmtMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the StorageMgmt network. type: number InternalApiMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the InternalApi network. type: number TenantMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the Tenant network. type: number ExternalMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the External network. type: number ManagementMtu: default: 1500 description: The maximum transmission unit (MTU) size(in bytes) that is guaranteed to pass through the data path of the segments in the Management network. type: number InternalApiInterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string TenantInterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string StorageInterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string StorageMgmtInterfaceDefaultRoute: # Override this via parameter_defaults description: Default route for the specific network. type: string 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 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 ExternalNetworkVlanID: default: 10 description: Vlan ID for the external network traffic. type: number 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 StorageMgmtNetworkVlanID: default: 40 description: Vlan ID for the storage mgmt network traffic. type: number TenantNetworkVlanID: default: 50 description: Vlan ID for the tenant network traffic. type: number ExternalInterfaceDefaultRoute: default: 10.0.0.1 description: default route for the external network type: string 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 StorageInterfaceRoutes: default: [] description: 'Routes for the storage network traffic. JSON route e.g. [{''destination'':''10.0.0.0/16'', ''nexthop'':''10.0.0.1''}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. ' type: json StorageMgmtInterfaceRoutes: default: [] description: 'Routes for the storage_mgmt network traffic. JSON route e.g. [{''destination'':''10.0.0.0/16'', ''nexthop'':''10.0.0.1''}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. ' type: json InternalApiInterfaceRoutes: default: [] description: 'Routes for the internal_api network traffic. JSON route e.g. [{''destination'':''10.0.0.0/16'', ''nexthop'':''10.0.0.1''}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. ' type: json TenantInterfaceRoutes: default: [] description: 'Routes for the tenant network traffic. JSON route e.g. [{''destination'':''10.0.0.0/16'', ''nexthop'':''10.0.0.1''}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. ' type: json ExternalInterfaceRoutes: default: [] description: 'Routes for the external network traffic. JSON route e.g. [{''destination'':''10.0.0.0/16'', ''nexthop'':''10.0.0.1''}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. ' type: json ManagementInterfaceRoutes: default: [] description: 'Routes for the management network traffic. JSON route e.g. [{''destination'':''10.0.0.0/16'', ''nexthop'':''10.0.0.1''}] Unless the default is changed, the parameter is automatically resolved from the subnet host_routes attribute. ' type: json resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh params: $network_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: InternalApiNetworkVlanID addresses: - ip_netmask: get_param: InternalApiIpSubnet - type: vlan vlan_id: get_param: StorageNetworkVlanID addresses: - ip_netmask: get_param: StorageIpSubnet - type: vlan vlan_id: get_param: TenantNetworkVlanID addresses: - ip_netmask: get_param: TenantIpSubnet - type: ovs_bridge # This will default to br-ex, anything else requires specific # brige mapping entries for it to be used. name: bridge_name use_dhcp: false members: - type: interface name: nic3 # force the MAC address of the bridge to this interface primary: true outputs: OS::stack_id: description: The OsNetConfigImpl resource. value: get_resource: OsNetConfigImpl 2. Attempt to deploy OC with multiple subnets under default networks. Result: OC deployment fails with: [overcloud.Networks.StorageMgmtNetwork.StorageMgmtSubnet_storage_mgmt1_subnet]: CREATE_COMPLETE state changed 2019-08-06 16:33:04Z [overcloud.Networks.StorageMgmtNetwork]: CREATE_COMPLETE Stack CREATE completed successfully 2019-08-06 16:33:04Z [overcloud.Networks.StorageMgmtNetwork]: CREATE_COMPLETE state changed 2019-08-06 16:33:04Z [overcloud.Networks]: CREATE_COMPLETE Stack CREATE completed successfully 2019-08-06 16:33:05Z [overcloud.Networks]: CREATE_COMPLETE state changed 2019-08-06 16:33:10Z [overcloud.StorageVirtualIP]: CREATE_IN_PROGRESS state changed 2019-08-06 16:33:10Z [overcloud.StorageMgmtVirtualIP]: CREATE_IN_PROGRESS state changed 2019-08-06 16:33:10Z [overcloud.NetCidrMapValue]: CREATE_IN_PROGRESS state changed 2019-08-06 16:33:10Z [overcloud.PublicVirtualIP]: CREATE_IN_PROGRESS state changed 2019-08-06 16:33:10Z [overcloud.NetCidrMapValue]: CREATE_COMPLETE state changed 2019-08-06 16:33:10Z [overcloud.RedisVirtualIP]: CREATE_IN_PROGRESS state changed 2019-08-06 16:33:10Z [overcloud.InternalApiVirtualIP]: CREATE_IN_PROGRESS state changed 2019-08-06 16:33:11Z [overcloud.StorageMgmtVirtualIP]: CREATE_FAILED resources.StorageMgmtVirtualIP: Property error: resources.StorageMgmtPort.properties.fixed_ips[0].subnet: Multiple subne t matches found for name 'storage_mgmt_subnet', use an ID to be more specific. 2019-08-06 16:33:11Z [overcloud]: CREATE_FAILED Resource CREATE failed: resources.StorageMgmtVirtualIP: Property error: resources.StorageMgmtPort.properties.fixed_ips[0].subnet: Multiple su bnet matches found for name 'storage_mgmt_subnet', use an ID to be more specific. 2019-08-06 16:33:11Z [overcloud.StorageVirtualIP]: CREATE_FAILED resources.StorageVirtualIP: Property error: resources.StoragePort.properties.fixed_ips[0].subnet: Multiple subnet matches fo und for name 'storage_subnet', use an ID to be more specific. 2019-08-06 16:33:11Z [overcloud]: CREATE_FAILED Resource CREATE failed: resources.StorageVirtualIP: Property error: resources.StoragePort.properties.fixed_ips[0].subnet: Multiple subnet mat ches found for name 'storage_subnet', use an ID to be more specific. 2019-08-06 16:33:11Z [overcloud.RedisVirtualIP]: CREATE_FAILED resources.RedisVirtualIP: Property error: resources.VipPort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'internal_api_subnet', use an ID to be more specific. 2019-08-06 16:33:11Z [overcloud]: CREATE_FAILED Resource CREATE failed: resources.RedisVirtualIP: Property error: resources.VipPort.properties.fixed_ips[0].subnet: Multiple subnet matches f ound for name 'internal_api_subnet', use an ID to be more specific. 2019-08-06 16:33:11Z [overcloud.InternalApiVirtualIP]: CREATE_FAILED resources.InternalApiVirtualIP: Property error: resources.InternalApiPort.properties.fixed_ips[0].subnet: Multiple subne t matches found for name 'internal_api_subnet', use an ID to be more specific. 2019-08-06 16:33:12Z [overcloud]: CREATE_FAILED Resource CREATE failed: resources.InternalApiVirtualIP: Property error: resources.InternalApiPort.properties.fixed_ips[0].subnet: Multiple su bnet matches found for name 'internal_api_subnet', use an ID to be more specific. 2019-08-06 16:33:12Z [overcloud.PublicVirtualIP]: CREATE_IN_PROGRESS Stack CREATE started 2019-08-06 16:33:12Z [overcloud.PublicVirtualIP.ExternalPort]: CREATE_IN_PROGRESS state changed 2019-08-06 16:33:13Z [overcloud.PublicVirtualIP.ExternalPort]: CREATE_COMPLETE state changed 2019-08-06 16:33:13Z [overcloud.PublicVirtualIP]: CREATE_COMPLETE Stack CREATE completed successfully 2019-08-06 16:33:14Z [overcloud.PublicVirtualIP]: CREATE_COMPLETE state changed Stack overcloud/48cbfa74-5a87-4ff6-a450-32c1ba5b384a CREATE_FAILED overcloud.RedisVirtualIP: resource_type: OS::TripleO::Network::Ports::RedisVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.RedisVirtualIP: Property error: resources.VipPort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'internal_api_subnet', use an ID to be more specific. overcloud.StorageVirtualIP: resource_type: OS::TripleO::Network::Ports::StorageVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.StorageVirtualIP: Property error: resources.StoragePort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'storage_subnet', use an ID to be more specific. overcloud.InternalApiVirtualIP: resource_type: OS::TripleO::Network::Ports::InternalApiVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.InternalApiVirtualIP: Property error: resources.InternalApiPort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'internal_api_subnet', use an ID to be m$ re specific. overcloud.StorageMgmtVirtualIP: resource_type: OS::TripleO::Network::Ports::StorageMgmtVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.StorageMgmtVirtualIP: Property error: resources.StorageMgmtPort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'storage_mgmt_subnet', use an ID to be m$ re specific. Heat Stack create failed.
I think you have some duplicates in the config that is causing this problem. For internal_api the IPv6 subnets are duplicated: internal_api_subnet: vlan: 23 ip_subnet: '172.120.1.0/24' allocation_pools: [{'start': '172.120.1.10', 'end': '172.120.1.200'}] gateway_ip: '172.120.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' <=== ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1000::10', 'end': 'fd00:fd00:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1000::1' internal_api1_subnet: vlan: 20 ip_subnet: '172.117.1.0/24' allocation_pools: [{'start': '172.117.1.10', 'end': '172.117.1.200'}] gateway_ip: '172.117.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' <=== ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1001::10', 'end': 'fd00:fd00:fd00:1001:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1001::1' Also Storage and StorageMgmt are configured to use the same subnet. - name: Storage vip: true vlan: 34 name_lower: storage ip_subnet: '172.121.4.0/24' allocation_pools: [{'start': '172.121.4.10', 'end': '172.121.4.200'}] gateway_ip: '172.121.4.1' - name: StorageMgmt vlan: 44 name_lower: storage_mgmt vip: true ip_subnet: '172.121.4.0/24' allocation_pools: [{'start': '172.121.4.10', 'end': '172.121.4.200'}] gateway_ip: '172.121.4.1'
Fixed: [stack@undercloud-0 ~]$ cat templates/network_data.yaml # List of networks, used for j2 templating of enabled networks # # Supported values: # # name: Name of the network (mandatory) # name_lower: lowercase version of name used for filenames # (optional, defaults to name.lower()) # enabled: Is the network enabled (optional, defaults to true) # vlan: vlan for the network (optional) # vip: Enable creation of a virtual IP on this network # ip_subnet: IP/CIDR, e.g. '192.168.24.0/24' or '2001:db8:fd00:1000::/64' # (optional, may use parameter defaults instead) # allocation_pools: IP range list e.g. [{'start':'10.0.0.4', 'end':'10.0.0.250'}] # gateway_ip: gateway for the network (optional, may use parameter defaults) # ipv6_subnet: Optional, sets default IPv6 subnet if IPv4 is already defined. # ipv6_allocation_pools: Set default IPv6 allocation pools if IPv4 allocation pools # are already defined. # ipv6_gateway: Set an IPv6 gateway if IPv4 gateway already defined. # ipv6: If ip_subnet not defined, this specifies that the network is IPv6-only. # NOTE: IP-related values set parameter defaults in templates, may be overridden, # either by operators, or e.g in environments/network-isolation-v6.yaml where we # set some default IPv6 addresses. # compat_name: for existing stack you may need to override the default # transformation for the resource's name. # # Example: # - name Example # vip: false # ip_subnet: '10.0.2.0/24' # allocation_pools: [{'start': '10.0.2.4', 'end': '10.0.2.250'}] # gateway_ip: '10.0.2.254' # # To support backward compatility, two versions of the network definitions will # be created, network/<network>.yaml and network/<network>_v6.yaml. Only # one of these files may be used in the deployment at a time, since the # parameters used for configuration are the same in both files. In the # future, this behavior may be changed to create only one file for custom # networks. You may specify IPv6 addresses for ip_subnet, allocation_pools, # and gateway_ip if no IPv4 addresses are used for a custom network, or set # ipv6: true, and the network/<network>.yaml file will be configured as IPv6. # # For configuring both IPv4 and IPv6 on the same interface, use two separate # networks, and then assign both IPs in the custom NIC configuration templates. - name: External vip: true name_lower: external vlan: 10 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:1100::/64' ipv6_allocation_pools: [{'start': '2001:db8:fd00:1100::10', 'end': '2001:db8:fd00:1100:ffff:ffff:ffff:fffe'}] gateway_ipv6: '2001:db8:fd00:1000::1' - name: InternalApi name_lower: internal_api vip: true vlan: 24 ip_subnet: '172.121.1.0/24' allocation_pools: [{'start': '172.121.1.10', 'end': '172.121.1.200'}] gateway_ip: '172.121.1.1' ipv6_subnet: 'fd00:fd00:fd00:1004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1004::10', 'end': 'fd00:fd00:fd00:1004:ffff:ffff:ffff:fffe'}] subnets: internal_api_subnet: vlan: 23 ip_subnet: '172.120.1.0/24' allocation_pools: [{'start': '172.120.1.10', 'end': '172.120.1.200'}] gateway_ip: '172.120.1.1' ipv6_subnet: 'fd00:fd00:fd00:1000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1000::10', 'end': 'fd00:fd00:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1000::1' internal_api1_subnet: vlan: 20 ip_subnet: '172.117.1.0/24' allocation_pools: [{'start': '172.117.1.10', 'end': '172.117.1.200'}] gateway_ip: '172.117.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1001::10', 'end': 'fd00:fd00:fd00:1001:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1001::1' internal_api2_subnet: vlan: 21 ip_subnet: '172.118.1.0/24' allocation_pools: [{'start': '172.118.1.10', 'end': '172.118.1.200'}] gateway_ip: '172.118.1.1' ipv6_subnet: 'fd00:fd00:fd00:1002::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1002::10', 'end': 'fd00:fd00:fd00:1002:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1002::1' internal_api3_subnet: vlan: 22 ip_subnet: '172.119.1.0/24' allocation_pools: [{'start': '172.119.1.10', 'end': '172.119.1.200'}] gateway_ip: '172.119.1.1' ipv6_subnet: 'fd00:fd00:fd00:1003::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1003::10', 'end': 'fd00:fd00:fd00:1003:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1003::1' - name: Storage vip: true vlan: 34 name_lower: storage ip_subnet: '172.121.3.0/24' allocation_pools: [{'start': '172.121.3.10', 'end': '172.121.3.200'}] gateway_ip: '172.121.3.1' ipv6_subnet: 'fd00:fd00:fd00:2004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:2004::10', 'end': 'fd00:fd00:fd00:2004:ffff:ffff:ffff:fffe'}] subnets: storage_subnet: vlan: 33 ip_subnet: '172.120.3.0/24' allocation_pools: [{'start': '172.120.3.10', 'end': '172.120.3.200'}] gateway_ip: '172.120.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2000::1' storage1_subnet: vlan: 30 ip_subnet: '172.117.3.0/24' allocation_pools: [{'start': '172.117.3.10', 'end': '172.117.3.200'}] gateway_ip: '172.117.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2001::1' storage2_subnet: vlan: 31 ip_subnet: '172.118.3.0/24' allocation_pools: [{'start': '172.118.3.10', 'end': '172.118.3.200'}] gateway_ip: '172.118.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2002::1' storage3_subnet: vlan: 32 ip_subnet: '172.119.3.0/24' allocation_pools: [{'start': '172.119.3.10', 'end': '172.119.3.200'}] gateway_ip: '172.119.3.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:2003::1' - name: StorageMgmt vlan: 44 name_lower: storage_mgmt vip: true ip_subnet: '172.121.4.0/24' allocation_pools: [{'start': '172.121.4.10', 'end': '172.121.4.200'}] gateway_ip: '172.121.4.1' ipv6_subnet: 'fd00:fd00:fd00:3004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:3004::10', 'end': 'fd00:fd00:fd00:3004:ffff:ffff:ffff:fffe'}] subnets: storage_mgmt_subnet: vlan: 43 ip_subnet: '172.120.4.0/24' allocation_pools: [{'start': '172.120.4.10', 'end': '172.120.4.200'}] gateway_ip: '172.120.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3000::1' storage_mgmt1_subnet: vlan: 40 ip_subnet: '172.117.4.0/24' allocation_pools: [{'start': '172.117.4.10', 'end': '172.117.4.200'}] gateway_ip: '172.117.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3001::1' storage_mgmt2_subnet: vlan: 41 ip_subnet: '172.118.4.0/24' allocation_pools: [{'start': '172.118.4.10', 'end': '172.118.4.200'}] gateway_ip: '172.118.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3002::1' storage_mgmt3_subnet: vlan: 42 ip_subnet: '172.119.4.0/24' allocation_pools: [{'start': '172.119.4.10', 'end': '172.119.4.200'}] gateway_ip: '172.119.4.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:3003::1' - name: Tenant vip: false # Tenant network does not use VIPs name_lower: tenant vlan: 54 ip_subnet: '172.121.2.0/24' allocation_pools: [{'start': '172.121.2.10', 'end': '172.121.2.200'}] gateway_ip: '172.121.2.1' 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'}] subnets: tenant_subnet: vlan: 53 ip_subnet: '172.120.2.0/24' allocation_pools: [{'start': '172.120.2.10', 'end': '172.120.2.200'}] gateway_ip: '172.120.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4000::1' tenant1_subnet: vlan: 50 ip_subnet: '172.117.2.0/24' allocation_pools: [{'start': '172.117.2.10', 'end': '172.117.2.200'}] gateway_ip: '172.117.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4001::1' tenant2_subnet: vlan: 51 ip_subnet: '172.118.2.0/24' allocation_pools: [{'start': '172.118.2.10', 'end': '172.118.2.200'}] gateway_ip: '172.118.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4002::1' tenant3_subnet: vlan: 52 ip_subnet: '172.119.2.0/24' allocation_pools: [{'start': '172.119.2.10', 'end': '172.119.2.200'}] gateway_ip: '172.119.2.1' 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'}] gateway_ipv6: 'fd00:fd00:fd00:4003::1' - 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 vlan: 60 ip_subnet: '172.20.0.0/24' allocation_pools: [{'start': '172.20.0.10', 'end': '172.20.0.250'}] gateway_ip: '172.20.0.254' 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'}] gateway_ipv6: 'fd00:fd00:fd00:5000::1' subnets: management_leaf1: enabled: true vlan: 61 ip_subnet: '172.20.1.0/24' allocation_pools: [{'start': '172.20.1.10', 'end': '172.20.1.250'}] gateway_ip: '172.20.1.254' 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'}] gateway_ipv6: 'fd00:fd00:fd00:5001::1' The deployment fails with: overcloud.RedisVirtualIP: resource_type: OS::TripleO::Network::Ports::RedisVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.RedisVirtualIP: Property error: resources.VipPort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'internal_api_subnet', use an ID to be more specific. overcloud.StorageVirtualIP: resource_type: OS::TripleO::Network::Ports::StorageVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.StorageVirtualIP: Property error: resources.StoragePort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'storage_subnet', use an ID to be more specific. overcloud.InternalApiVirtualIP: resource_type: OS::TripleO::Network::Ports::InternalApiVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.InternalApiVirtualIP: Property error: resources.InternalApiPort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'internal_api_subnet', use an ID to be more specific. overcloud.StorageMgmtVirtualIP: resource_type: OS::TripleO::Network::Ports::StorageMgmtVipPort physical_resource_id: status: CREATE_FAILED status_reason: | resources.StorageMgmtVirtualIP: Property error: resources.StorageMgmtPort.properties.fixed_ips[0].subnet: Multiple subnet matches found for name 'storage_mgmt_subnet', use an ID to be more specific. Heat Stack create failed.
The first subnet should not be defined separately, so remove this: internal_api_subnet: vlan: 23 ip_subnet: '172.120.1.0/24' allocation_pools: [{'start': '172.120.1.10', 'end': '172.120.1.200'}] gateway_ip: '172.120.1.1' ipv6_subnet: 'fd00:fd00:fd00:1000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1000::10', 'end': 'fd00:fd00:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1000::1' As well as the other places where you defined leaf0 separately (tenant_subnet, storage_subnet, etc.). The network definition contains the info for the leaf0, and you only have to define subnets separately for leaf1, leaf2, etc.
We should emphasize in our doc and/or example that the following (using the InternalApi example but applies to any network) is wrong as internal_api_subnet is already defined above subnets. - name: InternalApi name_lower: internal_api vip: true vlan: 24 ip_subnet: '172.121.1.0/24' allocation_pools: [{'start': '172.121.1.10', 'end': '172.121.1.200'}] gateway_ip: '172.121.1.1' ipv6_subnet: 'fd00:fd00:fd00:1004::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1004::10', 'end': 'fd00:fd00:fd00:1004:ffff:ffff:ffff:fffe'}] subnets: internal_api_subnet: vlan: 23 ip_subnet: '172.120.1.0/24' allocation_pools: [{'start': '172.120.1.10', 'end': '172.120.1.200'}] gateway_ip: '172.120.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1000::10', 'end': 'fd00:fd00:fd00:1000:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1000::1' internal_api1_subnet: vlan: 20 ip_subnet: '172.117.1.0/24' allocation_pools: [{'start': '172.117.1.10', 'end': '172.117.1.200'}] gateway_ip: '172.117.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1001::10', 'end': 'fd00:fd00:fd00:1001:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1001::1' It should be written instead (here getting rid of vlan24/172.121.1.0/24 , so if these are needed, should be in yet another subnet): - name: InternalApi name_lower: internal_api vip: true vlan: 23 ip_subnet: '172.120.1.0/24' allocation_pools: [{'start': '172.120.1.10', 'end': '172.120.1.200'}] gateway_ip: '172.120.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1001::10', 'end': 'fd00:fd00:fd00:1001:ffff:ffff:ffff:fffe'}] subnets: internal_api1_subnet: vlan: 20 ip_subnet: '172.117.1.0/24' allocation_pools: [{'start': '172.117.1.10', 'end': '172.117.1.200'}] gateway_ip: '172.117.1.1' ipv6_subnet: 'fd00:fd00:fd00:1001::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:1001::10', 'end': 'fd00:fd00:fd00:1001:ffff:ffff:ffff:fffe'}] gateway_ipv6: 'fd00:fd00:fd00:1001::1'