aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--environments/network-environment-v6.yaml60
-rw-r--r--j2_excludes.yaml7
-rw-r--r--network/external_v6.yaml76
-rw-r--r--network/internal_api_v6.yaml72
-rw-r--r--network/network.j2105
-rw-r--r--network/network.network.j2.yaml92
-rw-r--r--network/network_v6.network.j2.yaml2
-rw-r--r--network/storage_mgmt_v6.yaml72
-rw-r--r--network/storage_v6.yaml72
-rw-r--r--network/tenant_v6.yaml72
-rw-r--r--network_data.yaml49
-rw-r--r--releasenotes/notes/ipv6_defaults-7dbb62113f4e5084.yaml10
12 files changed, 216 insertions, 473 deletions
diff --git a/environments/network-environment-v6.yaml b/environments/network-environment-v6.yaml
new file mode 100644
index 00000000..1617f897
--- /dev/null
+++ b/environments/network-environment-v6.yaml
@@ -0,0 +1,60 @@
+#This file is an example of an environment file for defining the isolated
+#networks and related parameters.
+resource_registry:
+ # Network Interface templates to use (these files must exist)
+ OS::TripleO::BlockStorage::Net::SoftwareConfig:
+ ../network/config/single-nic-vlans/cinder-storage.yaml
+ OS::TripleO::Compute::Net::SoftwareConfig:
+ ../network/config/single-nic-vlans/compute.yaml
+ OS::TripleO::Controller::Net::SoftwareConfig:
+ ../network/config/single-nic-vlans/controller.yaml
+ OS::TripleO::ObjectStorage::Net::SoftwareConfig:
+ ../network/config/single-nic-vlans/swift-storage.yaml
+ OS::TripleO::CephStorage::Net::SoftwareConfig:
+ ../network/config/single-nic-vlans/ceph-storage.yaml
+
+parameter_defaults:
+ # This section is where deployment-specific configuration is done
+ # CIDR subnet mask length for provisioning network
+ ControlPlaneSubnetCidr: '24'
+ # Gateway router for the provisioning network (or Undercloud IP)
+ ControlPlaneDefaultRoute: 192.168.24.254
+ EC2MetadataIp: 192.168.24.1 # Generally the IP of the Undercloud
+ # Customize the IP subnets to match the local environment
+ InternalApiNetCidr: 'fd00:fd00:fd00:2000::/64'
+ StorageNetCidr: 'fd00:fd00:fd00:3000::/64'
+ StorageMgmtNetCidr: 'fd00:fd00:fd00:4000::/64'
+ # Tenant tunneling network is IPv4 until IPv6 is fully supported
+ TenantNetCidr: 172.16.0.0/24
+ ExternalNetCidr: '2001:db8:fd00:1000::/64'
+ # Customize the VLAN IDs to match the local environment
+ InternalApiNetworkVlanID: 20
+ StorageNetworkVlanID: 30
+ StorageMgmtNetworkVlanID: 40
+ TenantNetworkVlanID: 50
+ ExternalNetworkVlanID: 10
+ # Customize the IP ranges on each network to use for static IPs and VIPs
+ InternalApiAllocationPools: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}]
+ StorageAllocationPools: [{'start': 'fd00:fd00:fd00:3000::10', 'end': 'fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe'}]
+ StorageMgmtAllocationPools: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}]
+ TenantAllocationPools: [{'start': '172.16.0.10', 'end': '172.16.0.200'}]
+ # Leave room if the external network is also used for floating IPs
+ ExternalAllocationPools: [{'start': '2001:db8:fd00:1000::10', 'end': '2001:db8:fd00:1000:ffff:ffff:ffff:fffe'}]
+ # Gateway router for the external network
+ ExternalInterfaceDefaultRoute: '2001:db8:fd00:1000::1'
+ # Uncomment if using the Management Network (see network-management-v6.yaml)
+ # ManagementNetCidr: 'fd00:fd00:fd00:6000::/64'
+ # ManagementAllocationPools: [{'start': 'fd00:fd00:fd00:6000::10', 'end': 'fd00:fd00:fd00:6000:ffff:ffff:ffff:fffe'}]
+ # Use either this parameter or ControlPlaneDefaultRoute in the NIC templates
+ # ManagementInterfaceDefaultRoute: 'fd00:fd00:fd00:6000::1'
+ # Define the DNS servers (maximum 2) for the overcloud nodes
+ DnsServers: ["8.8.8.8","8.8.4.4"]
+ # List of Neutron network types for tenant networks (will be used in order)
+ NeutronNetworkType: 'vxlan,vlan'
+ # The tunnel type for the tenant network (vxlan or gre). Set to '' to disable tunneling.
+ NeutronTunnelTypes: 'vxlan'
+ # Neutron VLAN ranges per network, for example 'datacentre:1:499,tenant:500:1000':
+ NeutronNetworkVLANRanges: 'datacentre:1:1000'
+ # Customize bonding options, e.g. "mode=4 lacp_rate=1 updelay=1000 miimon=100"
+ # for Linux bonds w/LACP, or "bond_mode=active-backup" for OVS active/backup.
+ BondInterfaceOvsOptions: "bond_mode=active-backup"
diff --git a/j2_excludes.yaml b/j2_excludes.yaml
index 74fb3bb1..71d3d6e8 100644
--- a/j2_excludes.yaml
+++ b/j2_excludes.yaml
@@ -5,9 +5,4 @@
# name:
# - puppet/cephstorage-role.yaml
name:
- - network/internal_api_v6.yaml
- - network/external_v6.yaml
- - network/storage_v6.yaml
- - network/storage_mgmt_v6.yaml
- - network/tenant_v6.yaml
- - network/management_v6.yaml
+ - None
diff --git a/network/external_v6.yaml b/network/external_v6.yaml
deleted file mode 100644
index 9d1c3d00..00000000
--- a/network/external_v6.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-heat_template_version: pike
-
-description: >
- External network. Public traffic, Neutron l3router for floating IPs/SNAT, etc.
-
-parameters:
- # the defaults here work for static IP assignment (IPAM) only
- ExternalNetCidr:
- # OpenStack uses the EUI-64 address format, which requires a /64 prefix
- default: '2001:db8:fd00:1000::/64'
- description: Cidr for the external network.
- type: string
- ExternalNetValueSpecs:
- default: {'provider:physical_network': 'external', 'provider:network_type': 'flat'}
- description: Value specs for the external network.
- type: json
- ExternalNetAdminStateUp:
- default: false
- description: The admin state of the network.
- type: boolean
- ExternalNetShared:
- default: false
- description: Whether this network is shared across all tenants.
- type: boolean
- ExternalNetName:
- default: external
- description: The name of the external network.
- type: string
- ExternalSubnetName:
- default: external_subnet
- description: The name of the external subnet in Neutron.
- type: string
- ExternalAllocationPools:
- default: [{'start': '2001:db8:fd00:1000::10', 'end': '2001:db8:fd00:1000:ffff:ffff:ffff:fffe'}]
- description: Ip allocation pool range for the external network.
- type: json
- IPv6AddressMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 address mode
- type: string
- IPv6RAMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 router advertisement mode
- type: string
- ExternalInterfaceDefaultRoute:
- default: '2001:db8:fd00:1000::1'
- description: default route for the external network
- type: string
-
-resources:
- ExternalNetwork:
- type: OS::Neutron::Net
- properties:
- admin_state_up: {get_param: ExternalNetAdminStateUp}
- name: {get_param: ExternalNetName}
- shared: {get_param: ExternalNetShared}
- value_specs: {get_param: ExternalNetValueSpecs}
-
- ExternalSubnet:
- type: OS::Neutron::Subnet
- properties:
- ip_version: 6
- ipv6_address_mode: {get_param: IPv6AddressMode}
- ipv6_ra_mode: {get_param: IPv6RAMode}
- cidr: {get_param: ExternalNetCidr}
- name: {get_param: ExternalSubnetName}
- network: {get_resource: ExternalNetwork}
- allocation_pools: {get_param: ExternalAllocationPools}
- gateway_ip: {get_param: ExternalInterfaceDefaultRoute}
-
-outputs:
- OS::stack_id:
- description: Neutron external network
- value: {get_resource: ExternalNetwork}
- subnet_cidr:
- value: {get_attr: [ExternalSubnet, cidr]}
diff --git a/network/internal_api_v6.yaml b/network/internal_api_v6.yaml
deleted file mode 100644
index 6a0912e2..00000000
--- a/network/internal_api_v6.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-heat_template_version: pike
-
-description: >
- Internal API network. Used for most APIs, Database, RPC.
-
-parameters:
- # the defaults here work for static IP assignment (IPAM) only
- InternalApiNetCidr:
- # OpenStack uses the EUI-64 address format, which requires a /64 prefix
- default: 'fd00:fd00:fd00:2000::/64'
- description: Cidr for the internal_api network.
- type: string
- InternalApiNetValueSpecs:
- default: {'provider:physical_network': 'internal_api', 'provider:network_type': 'flat'}
- description: Value specs for the internal_api network.
- type: json
- InternalApiNetAdminStateUp:
- default: false
- description: The admin state of the network.
- type: boolean
- InternalApiNetShared:
- default: false
- description: Whether this network is shared across all tenants.
- type: boolean
- InternalApiNetName:
- default: internal_api
- description: The name of the internal_api network.
- type: string
- InternalApiSubnetName:
- default: internal_api_subnet
- description: The name of the internal_api subnet in Neutron.
- type: string
- InternalApiAllocationPools:
- default: [{'start': 'fd00:fd00:fd00:2000::10', 'end': 'fd00:fd00:fd00:2000:ffff:ffff:ffff:fffe'}]
- description: Ip allocation pool range for the internal_api network.
- type: json
- IPv6AddressMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 address mode
- type: string
- IPv6RAMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 router advertisement mode
- type: string
-
-resources:
- InternalApiNetwork:
- type: OS::Neutron::Net
- properties:
- admin_state_up: {get_param: InternalApiNetAdminStateUp}
- name: {get_param: InternalApiNetName}
- shared: {get_param: InternalApiNetShared}
- value_specs: {get_param: InternalApiNetValueSpecs}
-
- InternalApiSubnet:
- type: OS::Neutron::Subnet
- properties:
- ip_version: 6
- ipv6_address_mode: {get_param: IPv6AddressMode}
- ipv6_ra_mode: {get_param: IPv6RAMode}
- cidr: {get_param: InternalApiNetCidr}
- name: {get_param: InternalApiSubnetName}
- network: {get_resource: InternalApiNetwork}
- allocation_pools: {get_param: InternalApiAllocationPools}
- gateway_ip: null
-
-outputs:
- OS::stack_id:
- description: Neutron internal network
- value: {get_resource: InternalApiNetwork}
- subnet_cidr:
- value: {get_attr: [InternalApiSubnet, cidr]}
diff --git a/network/network.j2 b/network/network.j2
new file mode 100644
index 00000000..61a5b57c
--- /dev/null
+++ b/network/network.j2
@@ -0,0 +1,105 @@
+heat_template_version: pike
+
+description: >
+ {{network.name}} network definition (automatically generated).
+
+parameters:
+ # the defaults here work for static IP assignment (IPAM) only
+ {{network.name}}NetCidr:
+{%- if network.ipv6 or ipv6_override %}
+ default: "{{network.ipv6_subnet|default(network.ip_subnet|default(""))}}"
+{%- else %}
+ default: "{{network.ip_subnet|default("")}}"
+{%- endif %}
+ description: Cidr for the {{network.name_lower}} network.
+ type: string
+ {{network.name}}NetValueSpecs:
+ default: {'provider:physical_network': '{{network.name_lower}}', 'provider:network_type': 'flat'}
+ description: Value specs for the {{network.name_lower}} network.
+ type: json
+{%- if not ":" in network.ip_subnet and not network.ipv6 and not ipv6_override %}
+ {{network.name}}NetEnableDHCP:
+ default: false
+ description: Whether to enable DHCP on the associated subnet (IPv4 only).
+ type: boolean
+{%- endif %}
+ {{network.name}}NetAdminStateUp:
+ default: false
+ description: The admin state of the network.
+ type: boolean
+ {{network.name}}NetShared:
+ default: false
+ description: Whether this network is shared across all tenants.
+ type: boolean
+ {{network.name}}NetName:
+ default: {{network.name_lower}}
+ description: The name of the {{network.name_lower}} network.
+ type: string
+ {{network.name}}SubnetName:
+ default: {{network.name_lower}}_subnet
+ description: The name of the {{network.name_lower}} subnet in Neutron.
+ type: string
+ {{network.name}}AllocationPools:
+{%- if ":" in network.ip_subnet or network.ipv6 or ipv6_override %}
+ default: {{network.ipv6_allocation_pools|default(network.allocation_pools|default([]))}}
+{%- else %}
+ default: {{network.allocation_pools|default([])}}
+{%- endif %}
+ description: Ip allocation pool range for the {{network.name_lower}} network.
+ type: json
+{%- if ":" in network.ip_subnet or network.ipv6 or ipv6_override %}
+ IPv6AddressMode:
+ default: dhcpv6-stateful
+ description: Neutron subnet IPv6 address mode
+ type: string
+ IPv6RAMode:
+ default: dhcpv6-stateful
+ description: Neutron subnet IPv6 router advertisement mode
+ type: string
+{%- endif %}
+ {{network.name}}InterfaceDefaultRoute:
+{%- if network.ipv6 or ipv6_override %}
+ default: "{{network.gateway_ipv6|default(network.gateway_ip|default(''))}}"
+{%- else %}
+ default: "{{network.gateway_ip|default('')}}"
+{%- endif %}
+ description: default route for the {{network.name_lower}} network
+ type: string
+{%- if network.vlan %}
+ {{network.name}}NetworkVlanID:
+ default: {{network.vlan}}
+ description: Vlan ID for the {{network.name}} network traffic.
+ type: number
+{%- endif %}
+
+resources:
+ {{network.name}}Network:
+ type: OS::Neutron::Net
+ properties:
+ admin_state_up: {get_param: {{network.name}}NetAdminStateUp}
+ name: {get_param: {{network.name}}NetName}
+ shared: {get_param: {{network.name}}NetShared}
+ value_specs: {get_param: {{network.name}}NetValueSpecs}
+
+ {{network.name}}Subnet:
+ type: OS::Neutron::Subnet
+ properties:
+{%- if ":" in network.ip_subnet or network.ipv6 or ipv6_override %}
+ ip_version: 6
+ ipv6_address_mode: {get_param: IPv6AddressMode}
+ ipv6_ra_mode: {get_param: IPv6RAMode}
+{%- else %}
+ enable_dhcp: {get_param: {{network.name}}NetEnableDHCP}
+{%- endif %}
+ cidr: {get_param: {{network.name}}NetCidr}
+ name: {get_param: {{network.name}}SubnetName}
+ network: {get_resource: {{network.name}}Network}
+ allocation_pools: {get_param: {{network.name}}AllocationPools}
+ gateway_ip: {get_param: {{network.name}}InterfaceDefaultRoute}
+
+outputs:
+ OS::stack_id:
+ description: {{network.name_lower}} network
+ value: {get_resource: {{network.name}}Network}
+ subnet_cidr:
+ value: {get_attr: [{{network.name}}Subnet, cidr]}
diff --git a/network/network.network.j2.yaml b/network/network.network.j2.yaml
index 29d58cd5..d9ff6169 100644
--- a/network/network.network.j2.yaml
+++ b/network/network.network.j2.yaml
@@ -1,91 +1 @@
-heat_template_version: pike
-
-description: >
- {{network.name}} network definition (automatically generated).
-
-parameters:
- # the defaults here work for static IP assignment (IPAM) only
- {{network.name}}NetCidr:
- default: {{network.ip_subnet|default("")}}
- description: Cidr for the {{network.name_lower}} network.
- type: string
- {{network.name}}NetValueSpecs:
- default: {'provider:physical_network': '{{network.name_lower}}', 'provider:network_type': 'flat'}
- description: Value specs for the {{network.name_lower}} network.
- type: json
- {{network.name}}NetAdminStateUp:
- default: false
- description: The admin state of the network.
- type: boolean
- {{network.name}}NetEnableDHCP:
- default: false
- description: Whether to enable DHCP on the associated subnet.
- type: boolean
- {{network.name}}NetShared:
- default: false
- description: Whether this network is shared across all tenants.
- type: boolean
- {{network.name}}NetName:
- default: {{network.name_lower}}
- description: The name of the {{network.name_lower}} network.
- type: string
- {{network.name}}SubnetName:
- default: {{network.name_lower}}_subnet
- description: The name of the {{network.name_lower}} subnet in Neutron.
- type: string
- {{network.name}}AllocationPools:
- default: {{network.allocation_pools|default([])}}
- description: Ip allocation pool range for the {{network.name_lower}} network.
- type: json
- {{network.name}}InterfaceDefaultRoute:
- default: {{network.gateway_ip|default('""')}}
- description: default route for the {{network.name_lower}} network
- type: string
-{%- if network.vlan %}
- {{network.name}}NetworkVlanID:
- default: {{network.vlan}}
- description: Vlan ID for the {{network.name}} network traffic.
- type: number
-{%- endif %}
-{%- if network.ipv6 %}
- IPv6AddressMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 address mode
- type: string
- IPv6RAMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 router advertisement mode
- type: string
-{%- endif %}
-
-resources:
- {{network.name}}Network:
- type: OS::Neutron::Net
- properties:
- admin_state_up: {get_param: {{network.name}}NetAdminStateUp}
- name: {get_param: {{network.name}}NetName}
- shared: {get_param: {{network.name}}NetShared}
- value_specs: {get_param: {{network.name}}NetValueSpecs}
-
- {{network.name}}Subnet:
- type: OS::Neutron::Subnet
- properties:
- cidr: {get_param: {{network.name}}NetCidr}
- name: {get_param: {{network.name}}SubnetName}
- network: {get_resource: {{network.name}}Network}
- allocation_pools: {get_param: {{network.name}}AllocationPools}
- gateway_ip: {get_param: {{network.name}}InterfaceDefaultRoute}
-{%- if network.ipv6 %}
- ip_version: 6
- ipv6_address_mode: {get_param: IPv6AddressMode}
- ipv6_ra_mode: {get_param: IPv6RAMode}
-{%- else %}
- enable_dhcp: {get_param: {{network.name}}NetEnableDHCP}
-{%- endif %}
-
-outputs:
- OS::stack_id:
- description: {{network.name_lower}} network
- value: {get_resource: {{network.name}}Network}
- subnet_cidr:
- value: {get_attr: [{{network.name}}Subnet, cidr]}
+{% include 'network.j2' %}
diff --git a/network/network_v6.network.j2.yaml b/network/network_v6.network.j2.yaml
new file mode 100644
index 00000000..809d145c
--- /dev/null
+++ b/network/network_v6.network.j2.yaml
@@ -0,0 +1,2 @@
+{% set ipv6_override = true -%}
+{% include 'network.j2' %}
diff --git a/network/storage_mgmt_v6.yaml b/network/storage_mgmt_v6.yaml
deleted file mode 100644
index 7ed4c92e..00000000
--- a/network/storage_mgmt_v6.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-heat_template_version: pike
-
-description: >
- Storage management network. Storage replication, etc.
-
-parameters:
- # the defaults here work for static IP assignment (IPAM) only
- StorageMgmtNetCidr:
- # OpenStack uses the EUI-64 address format, which requires a /64 prefix
- default: 'fd00:fd00:fd00:4000::/64'
- description: Cidr for the storage_mgmt network.
- type: string
- StorageMgmtNetValueSpecs:
- default: {'provider:physical_network': 'storage_mgmt', 'provider:network_type': 'flat'}
- description: Value specs for the storage_mgmt network.
- type: json
- StorageMgmtNetAdminStateUp:
- default: false
- description: The admin state of the network.
- type: boolean
- StorageMgmtNetShared:
- default: false
- description: Whether this network is shared across all tenants.
- type: boolean
- StorageMgmtNetName:
- default: storage_mgmt
- description: The name of the storage_mgmt network.
- type: string
- StorageMgmtSubnetName:
- default: storage_mgmt_subnet
- description: The name of the storage_mgmt subnet in Neutron.
- type: string
- StorageMgmtAllocationPools:
- default: [{'start': 'fd00:fd00:fd00:4000::10', 'end': 'fd00:fd00:fd00:4000:ffff:ffff:ffff:fffe'}]
- description: Ip allocation pool range for the storage_mgmt network.
- type: json
- IPv6AddressMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 address mode
- type: string
- IPv6RAMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 router advertisement mode
- type: string
-
-resources:
- StorageMgmtNetwork:
- type: OS::Neutron::Net
- properties:
- admin_state_up: {get_param: StorageMgmtNetAdminStateUp}
- name: {get_param: StorageMgmtNetName}
- shared: {get_param: StorageMgmtNetShared}
- value_specs: {get_param: StorageMgmtNetValueSpecs}
-
- StorageMgmtSubnet:
- type: OS::Neutron::Subnet
- properties:
- ip_version: 6
- ipv6_address_mode: {get_param: IPv6AddressMode}
- ipv6_ra_mode: {get_param: IPv6RAMode}
- cidr: {get_param: StorageMgmtNetCidr}
- name: {get_param: StorageMgmtSubnetName}
- network: {get_resource: StorageMgmtNetwork}
- allocation_pools: {get_param: StorageMgmtAllocationPools}
- gateway_ip: null
-
-outputs:
- OS::stack_id:
- description: Neutron storage management network
- value: {get_resource: StorageMgmtNetwork}
- subnet_cidr:
- value: {get_attr: [StorageMgmtSubnet, cidr]}
diff --git a/network/storage_v6.yaml b/network/storage_v6.yaml
deleted file mode 100644
index 51edd4b3..00000000
--- a/network/storage_v6.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-heat_template_version: pike
-
-description: >
- Storage network.
-
-parameters:
- # the defaults here work for static IP assignment (IPAM) only
- StorageNetCidr:
- # OpenStack uses the EUI-64 address format, which requires a /64 prefix
- default: 'fd00:fd00:fd00:3000::/64'
- description: Cidr for the storage network.
- type: string
- StorageNetValueSpecs:
- default: {'provider:physical_network': 'storage', 'provider:network_type': 'flat'}
- description: Value specs for the storage network.
- type: json
- StorageNetAdminStateUp:
- default: false
- description: The admin state of the network.
- type: boolean
- StorageNetShared:
- default: false
- description: Whether this network is shared across all tenants.
- type: boolean
- StorageNetName:
- default: storage
- description: The name of the storage network.
- type: string
- StorageSubnetName:
- default: storage_subnet
- description: The name of the storage subnet in Neutron.
- type: string
- StorageAllocationPools:
- default: [{'start': 'fd00:fd00:fd00:3000::10', 'end': 'fd00:fd00:fd00:3000:ffff:ffff:ffff:fffe'}]
- description: Ip allocation pool range for the storage network.
- type: json
- IPv6AddressMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 address mode
- type: string
- IPv6RAMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 router advertisement mode
- type: string
-
-resources:
- StorageNetwork:
- type: OS::Neutron::Net
- properties:
- admin_state_up: {get_param: StorageNetAdminStateUp}
- name: {get_param: StorageNetName}
- shared: {get_param: StorageNetShared}
- value_specs: {get_param: StorageNetValueSpecs}
-
- StorageSubnet:
- type: OS::Neutron::Subnet
- properties:
- ip_version: 6
- ipv6_address_mode: {get_param: IPv6AddressMode}
- ipv6_ra_mode: {get_param: IPv6RAMode}
- cidr: {get_param: StorageNetCidr}
- name: {get_param: StorageSubnetName}
- network: {get_resource: StorageNetwork}
- allocation_pools: {get_param: StorageAllocationPools}
- gateway_ip: null
-
-outputs:
- OS::stack_id:
- description: Neutron storage network
- value: {get_resource: StorageNetwork}
- subnet_cidr:
- value: {get_attr: [StorageSubnet, cidr]}
diff --git a/network/tenant_v6.yaml b/network/tenant_v6.yaml
deleted file mode 100644
index 9f139cb1..00000000
--- a/network/tenant_v6.yaml
+++ /dev/null
@@ -1,72 +0,0 @@
-heat_template_version: pike
-
-description: >
- Tenant IPv6 network.
-
-parameters:
- # the defaults here work for static IP assignment (IPAM) only
- TenantNetCidr:
- # OpenStack uses the EUI-64 address format, which requires a /64 prefix
- default: 'fd00:fd00:fd00:5000::/64'
- description: Cidr for the tenant network.
- type: string
- TenantNetValueSpecs:
- default: {'provider:physical_network': 'tenant', 'provider:network_type': 'flat'}
- description: Value specs for the tenant network.
- type: json
- TenantNetAdminStateUp:
- default: false
- description: The admin state of the network.
- type: boolean
- TenantNetShared:
- default: false
- description: Whether this network is shared across all tenants.
- type: boolean
- TenantNetName:
- default: tenant
- description: The name of the tenant network.
- type: string
- TenantSubnetName:
- default: tenant_subnet
- description: The name of the tenant subnet in Neutron.
- type: string
- TenantAllocationPools:
- default: [{'start': 'fd00:fd00:fd00:5000::10', 'end': 'fd00:fd00:fd00:5000:ffff:ffff:ffff:fffe'}]
- description: Ip allocation pool range for the tenant network.
- type: json
- IPv6AddressMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 address mode
- type: string
- IPv6RAMode:
- default: dhcpv6-stateful
- description: Neutron subnet IPv6 router advertisement mode
- type: string
-
-resources:
- TenantNetwork:
- type: OS::Neutron::Net
- properties:
- admin_state_up: {get_param: TenantNetAdminStateUp}
- name: {get_param: TenantNetName}
- shared: {get_param: TenantNetShared}
- value_specs: {get_param: TenantNetValueSpecs}
-
- TenantSubnet:
- type: OS::Neutron::Subnet
- properties:
- ip_version: 6
- ipv6_address_mode: {get_param: IPv6AddressMode}
- ipv6_ra_mode: {get_param: IPv6RAMode}
- cidr: {get_param: TenantNetCidr}
- name: {get_param: TenantSubnetName}
- network: {get_resource: TenantNetwork}
- allocation_pools: {get_param: TenantAllocationPools}
- gateway_ip: null
-
-outputs:
- OS::stack_id:
- description: Neutron tenant network
- value: {get_resource: TenantNetwork}
- subnet_cidr:
- value: {get_attr: [TenantSubnet, cidr]}
diff --git a/network_data.yaml b/network_data.yaml
index 6ad37dfe..fed11576 100644
--- a/network_data.yaml
+++ b/network_data.yaml
@@ -6,19 +6,22 @@
# name_lower: lowercase version of name used for filenames
# (optional, defaults to name.lower())
# enabled: Is the network enabled (optional, defaults to true)
-# ipv6: Does this network use IPv6 IPs? (optional, defaults to false)
-# (optional, may use parameter defaults in environment to set)
# vlan: vlan for the network (optional)
# vip: Enable creation of a virtual IP on this network
-# [TODO] (dsneddon@redhat.com) - Enable dynamic creation of VIP ports,
-# to support VIPs on non-default networks.
-# See https://bugs.launchpad.net/tripleo/+bug/1667104
-# ip_subnet: IP/CIDR, e.g. '192.168.24.0/24' (optional, may use parameter defaults)
-# allocation_pools: IP range list e.g. [{'start':'10.0.0.4', 'end':'10.0.0.250}]
+# 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)
-# NOTE: IP-related values set parameter defaults in templates, may be overridden.
-# compat_name: for existing stack you may need to override the default transformation
-# for the resource's name.
+# 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
@@ -27,8 +30,17 @@
# allocation_pools: [{'start': '10.0.2.4', 'end': '10.0.2.250'}]
# gateway_ip: '10.0.2.254'
#
-# TODO (dsneddon) remove existing templates from j2_excludes.yaml
-# and generate all templates dynamically.
+# 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
@@ -36,27 +48,38 @@
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'}]
compat_name: Internal
- 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 disabled by default
enabled: false
@@ -64,3 +87,5 @@
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'}]
diff --git a/releasenotes/notes/ipv6_defaults-7dbb62113f4e5084.yaml b/releasenotes/notes/ipv6_defaults-7dbb62113f4e5084.yaml
new file mode 100644
index 00000000..bbc67563
--- /dev/null
+++ b/releasenotes/notes/ipv6_defaults-7dbb62113f4e5084.yaml
@@ -0,0 +1,10 @@
+---
+other:
+ - |
+ Network templates are now rendered with jinja2 based on network_data.yaml.
+ The only required parameter for each network is the name, optional params
+ will populate the defaults in the network template. Network templates
+ will be generated for both IPv4 and IPv6 versions of the networks, setting
+ ipv6: true on the network will generate only IPv6 templates. An example for
+ overriding default IP addresses for IPv6 has been added in
+ environments/network-environment-v6.yaml.