Remove old nic config templates
This removes all in-tree nic config templates as we've migrated them. Users can still use copy of those (modified/un-modified). Change-Id: Ie0be19e416058d33dbe758ebb2a06e55c651a7e9
This commit is contained in:
parent
42c5fa16ad
commit
3c246d15d8
@ -1,108 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config with 2 bonded nics on a bridge.
|
|
||||||
parameters:
|
|
||||||
BondInterfaceOvsOptions:
|
|
||||||
default: ''
|
|
||||||
description: The ovs_options or bonding_options string for the bond
|
|
||||||
interface. Set things like lacp=active and/or bond_mode=balance-slb
|
|
||||||
for OVS bonds or like mode=4 for Linux bonds using this option.
|
|
||||||
type: string
|
|
||||||
constraints:
|
|
||||||
- allowed_pattern: ^((?!balance.tcp).)*$
|
|
||||||
description: The balance-tcp bond mode is known to cause packet loss and
|
|
||||||
should not be used in BondInterfaceOvsOptions.
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
use_dhcp: true
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
members:
|
|
||||||
- type: ovs_bond
|
|
||||||
name: bond1
|
|
||||||
use_dhcp: true
|
|
||||||
ovs_options:
|
|
||||||
get_param: BondInterfaceOvsOptions
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
- type: interface
|
|
||||||
name: nic2
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
@ -1,105 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config for a simple interface on a bridge.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
use_dhcp: true
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,113 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config for a simple linux bridge.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
default: 192.168.24.1
|
|
||||||
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
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: linux_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: ControlPlaneIp
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
routes:
|
|
||||||
- ip_netmask: 0.0.0.0/0
|
|
||||||
next_hop:
|
|
||||||
get_param: ControlPlaneDefaultRoute
|
|
||||||
default: true
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
|
|
||||||
description: >
|
|
||||||
Software Config to no-op for os-net-config. Using this will allow you
|
|
||||||
to use the parameter driven (init-neutron-ovs) configuration instead.
|
|
||||||
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value: {}
|
|
||||||
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value: {get_attr: [OsNetConfigImpl, value]}
|
|
@ -1,161 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config for a simple bridge configured with a
|
|
||||||
static IP address for the ctlplane network with optionally the admin and
|
|
||||||
public IPs too.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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: # Here for compatability, not used.
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
InterfaceLocalMtu: # Override this via parameter_defaults
|
|
||||||
default: 1500
|
|
||||||
description: MTU to use for the local_interface.
|
|
||||||
type: number
|
|
||||||
constraints:
|
|
||||||
- range: { min: 1000, max: 65536 }
|
|
||||||
StandaloneNetConfigOverride:
|
|
||||||
default: {}
|
|
||||||
description: >
|
|
||||||
Custom JSON data to be used to override the os-net-config data in this
|
|
||||||
template. This is meant to be used by net_config_override parameter in
|
|
||||||
tripleoclient to provide an easy means to pass in custom net configs
|
|
||||||
for a standalone node.
|
|
||||||
type: json
|
|
||||||
DeployedServerPortMap:
|
|
||||||
default: {}
|
|
||||||
type: json
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
conditions:
|
|
||||||
standalone_net_config_override:
|
|
||||||
not:
|
|
||||||
equals: [{get_param: StandaloneNetConfigOverride}, {}]
|
|
||||||
control_virtual_ip_unset: {equals : [{get_param: [DeployedServerPortMap, 'control_virtual_ip', fixed_ips, 0, ip_address]}, '']}
|
|
||||||
public_virtual_ip_unset: {equals : [{get_param: [DeployedServerPortMap, 'public_virtual_ip', fixed_ips, 0, ip_address]}, '']}
|
|
||||||
control_virtual_ip_is_ipv6: {contains: [':', {get_param: [DeployedServerPortMap, 'control_virtual_ip', fixed_ips, 0, ip_address]}]}
|
|
||||||
public_virtual_ip_is_ipv6: {contains: [':', {get_param: [DeployedServerPortMap, 'public_virtual_ip', fixed_ips, 0, ip_address]}]}
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
if:
|
|
||||||
- standalone_net_config_override
|
|
||||||
- {get_param: StandaloneNetConfigOverride}
|
|
||||||
- network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: br-ctlplane
|
|
||||||
mtu: {get_param: InterfaceLocalMtu}
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
ovs_extra:
|
|
||||||
- "br-set-external-id br-ctlplane bridge-id br-ctlplane"
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
-
|
|
||||||
if:
|
|
||||||
- control_virtual_ip_unset
|
|
||||||
- {}
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - {get_param: [DeployedServerPortMap, 'control_virtual_ip', fixed_ips, 0, ip_address]}
|
|
||||||
- {if: [control_virtual_ip_is_ipv6, '128', '32']}
|
|
||||||
-
|
|
||||||
if:
|
|
||||||
- public_virtual_ip_unset
|
|
||||||
- {}
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - {get_param: [DeployedServerPortMap, 'public_virtual_ip', fixed_ips, 0, ip_address]}
|
|
||||||
- {if: [public_virtual_ip_is_ipv6, '128', '32']}
|
|
||||||
routes: {get_param: ControlPlaneStaticRoutes}
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
mtu: {get_param: InterfaceLocalMtu}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,117 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config for a simple bridge configured with
|
|
||||||
external DHCP and a static IP address for the ctlplane network.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
use_dhcp: true
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
- type: interface
|
|
||||||
name: br-ex:0
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
- default: true
|
|
||||||
next_hop:
|
|
||||||
get_param: ControlPlaneDefaultRoute
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
@ -1,116 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config for a simple bridge configured with a
|
|
||||||
static IP address for the ctlplane network.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
- default: true
|
|
||||||
next_hop:
|
|
||||||
get_param: ControlPlaneDefaultRoute
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,105 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config for a simple interface with DHCP.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
- default: true
|
|
||||||
next_hop:
|
|
||||||
get_param: ControlPlaneDefaultRoute
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
get_attr:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
@ -1,155 +0,0 @@
|
|||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config for a simple bridge configured with a
|
|
||||||
static IP address for the ctlplane network with optionally the admin and
|
|
||||||
public IPs too.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
{%- for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endfor %}
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
UndercloudLocalMtu: # Override this via parameter_defaults
|
|
||||||
default: 1500
|
|
||||||
description: MTU to use for the Undercloud local_interface.
|
|
||||||
type: number
|
|
||||||
constraints:
|
|
||||||
- range: { min: 1000, max: 65536 }
|
|
||||||
UndercloudNetConfigOverride:
|
|
||||||
default: {}
|
|
||||||
description: Custom JSON data to be used to override the os-net-config data in this template. This is meant to be used by net_config_override parameter in tripleoclient to provide an easy means to pass in custom net configs for the Undercloud.
|
|
||||||
type: json
|
|
||||||
DeployedServerPortMap:
|
|
||||||
default: {}
|
|
||||||
type: json
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
conditions:
|
|
||||||
undercloud_net_config_override:
|
|
||||||
not:
|
|
||||||
equals: [{get_param: UndercloudNetConfigOverride}, {}]
|
|
||||||
control_virtual_ip_unset: {equals : [{get_param: [DeployedServerPortMap, 'control_virtual_ip', fixed_ips, 0, ip_address]}, '']}
|
|
||||||
public_virtual_ip_unset: {equals : [{get_param: [DeployedServerPortMap, 'public_virtual_ip', fixed_ips, 0, ip_address]}, '']}
|
|
||||||
control_virtual_ip_is_ipv6: {contains: [':', {get_param: [DeployedServerPortMap, 'control_virtual_ip', fixed_ips, 0, ip_address]}]}
|
|
||||||
public_virtual_ip_is_ipv6: {contains: [':', {get_param: [DeployedServerPortMap, 'public_virtual_ip', fixed_ips, 0, ip_address]}]}
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
if:
|
|
||||||
- undercloud_net_config_override
|
|
||||||
- {get_param: UndercloudNetConfigOverride}
|
|
||||||
- network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: br-ctlplane
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
ovs_extra:
|
|
||||||
- "br-set-external-id br-ctlplane bridge-id br-ctlplane"
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
-
|
|
||||||
if:
|
|
||||||
- control_virtual_ip_unset
|
|
||||||
- {}
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - {get_param: [DeployedServerPortMap, 'control_virtual_ip', fixed_ips, 0, ip_address]}
|
|
||||||
- {if: [control_virtual_ip_is_ipv6, '128', '32']}
|
|
||||||
-
|
|
||||||
if:
|
|
||||||
- public_virtual_ip_unset
|
|
||||||
- {}
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - {get_param: [DeployedServerPortMap, 'public_virtual_ip', fixed_ips, 0, ip_address]}
|
|
||||||
- {if: [public_virtual_ip_is_ipv6, '128', '32']}
|
|
||||||
routes: {get_param: ControlPlaneStaticRoutes}
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
mtu: {get_param: UndercloudLocalMtu}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
@ -1,38 +0,0 @@
|
|||||||
This directory contains Heat templates to demonstrate configuration of
|
|
||||||
VLANs on 2 Linux bonds, each with a pair of NICs, for each Overcloud role.
|
|
||||||
The Tenant network does not need to be on a bridge in order for VXLAN to
|
|
||||||
function, but the Tenant network appears on the bridge interface in order
|
|
||||||
to group tenant VLAN traffic and VXLAN traffic together.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To make use of these templates create a Heat environment that looks
|
|
||||||
something like this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::BlockStorage::Net::SoftwareConfig: network/config/2-linux-bonds-vlans/cinder-storage.yaml
|
|
||||||
OS::TripleO::Compute::Net::SoftwareConfig: network/config/2-linux-bonds-vlans/compute.yaml
|
|
||||||
OS::TripleO::Controller::Net::SoftwareConfig: network/config/2-linux-bonds-vlans/controller.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/2-linux-bonds-vlans/swift-storage.yaml
|
|
||||||
OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/2-linux-bonds-vlans/ceph-storage.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/net-2-bonds-with-vlans.yaml
|
|
||||||
|
|
||||||
Configuration with no External Network
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
Edit roles_data.yaml to remove the External network from the Controller role.
|
|
||||||
|
|
||||||
Configuration with System Management Network
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
The Management network is enabled for backwards-compatibility, but
|
|
||||||
is not included in any roles by default.
|
|
||||||
|
|
||||||
Add the network to the list of networks used by each role in the role
|
|
||||||
definition file (e.g. roles_data.yaml). Refer to installation documentation
|
|
||||||
for procedure to generate a role file for custom roles.
|
|
||||||
|
|
@ -1,266 +0,0 @@
|
|||||||
{#- Convert net map or net list to internal list of networks #}
|
|
||||||
{#- NOTE(hjensas): For backward compatibility support role data with both #}
|
|
||||||
{#- networks map (new schema) and network list (old schema). #}
|
|
||||||
{%- if role.networks is mapping %}
|
|
||||||
{%- set _role_networks = [] %}
|
|
||||||
{%- for key, val in role.networks.items() %}
|
|
||||||
{%- set _ = _role_networks.append(key) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
{%- set _role_networks = role.networks %}
|
|
||||||
{%- endif %}
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config with 2 Linux bonds. One bond is on a
|
|
||||||
bridge with VLANs attached for the {{role.name}} role.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{%- if network.name in role.default_route_networks %}
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
BondInterfaceOvsOptions:
|
|
||||||
default: bond_mode=active-backup
|
|
||||||
description: 'The ovs_options or bonding_options string for the bond
|
|
||||||
interface. Set things like lacp=active and/or bond_mode=balance-slb
|
|
||||||
for OVS bonds or like mode=4 for Linux bonds using this option.'
|
|
||||||
type: string
|
|
||||||
{%- if 'ovsdpdk' in role.tags %}
|
|
||||||
NumDpdkInterfaceRxQueues:
|
|
||||||
description: Number of Rx Queues required for DPDK bond or DPDK ports
|
|
||||||
default: 1
|
|
||||||
type: number
|
|
||||||
{%- endif %}
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
|
|
||||||
MinViableMtuBondApi:
|
|
||||||
# This resource resolves the minimum viable MTU for interfaces, bonds and
|
|
||||||
# bridges that carry multiple VLANs. Each VLAN may have different MTU. The
|
|
||||||
# bridge, bond or interface must have an MTU to allow the VLAN with the
|
|
||||||
# largest MTU.
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
type: number
|
|
||||||
value:
|
|
||||||
yaql:
|
|
||||||
expression: $.data.max()
|
|
||||||
data:
|
|
||||||
- {get_param: ControlPlaneMtu}
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks and not network.name.startswith('Tenant') %}
|
|
||||||
- {get_param: {{network.name}}Mtu}
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
MinViableMtuBondData:
|
|
||||||
# This resource resolves the minimum viable MTU for interfaces, bonds and
|
|
||||||
# bridges that carry multiple VLANs. Each VLAN may have different MTU. The
|
|
||||||
# bridge, bond or interface must have an MTU to allow the VLAN with the
|
|
||||||
# largest MTU.
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
type: number
|
|
||||||
value:
|
|
||||||
yaql:
|
|
||||||
expression: $.data.max()
|
|
||||||
data:
|
|
||||||
- {get_param: ControlPlaneMtu}
|
|
||||||
{%- for network in networks if network.name.startswith('Tenant') and network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
- {get_param: {{network.name}}Mtu}
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
mtu:
|
|
||||||
get_param: ControlPlaneMtu
|
|
||||||
use_dhcp: false
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
- type: linux_bond
|
|
||||||
name: bond_api
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtuBondApi, value]
|
|
||||||
use_dhcp: false
|
|
||||||
bonding_options:
|
|
||||||
get_param: BondInterfaceOvsOptions
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic2
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtuBondApi, value]
|
|
||||||
primary: true
|
|
||||||
- type: interface
|
|
||||||
name: nic3
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtuBondApi, value]
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks and not network.name.startswith('Tenant') %}
|
|
||||||
- type: vlan
|
|
||||||
device: bond_api
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
{%- if not 'ovsdpdk' in role.tags %}
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
members:
|
|
||||||
- type: linux_bond
|
|
||||||
name: bond-data
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtuBondData, value]
|
|
||||||
bonding_options:
|
|
||||||
get_param: BondInterfaceOvsOptions
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic4
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtuBondData, value]
|
|
||||||
primary: true
|
|
||||||
- type: interface
|
|
||||||
name: nic5
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtuBondData, value]
|
|
||||||
{%- for network in networks if network.name.startswith('Tenant') and network.name in _role_networks and network.enabled|default(true) %}
|
|
||||||
- type: vlan
|
|
||||||
device: bond-data
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
- type: ovs_user_bridge
|
|
||||||
name: br-dpdk0
|
|
||||||
use_dhcp: false
|
|
||||||
{%- for network in networks if network.name.startswith('Tenant') and network.name in _role_networks and network.enabled|default(true) %}
|
|
||||||
ovs_extra:
|
|
||||||
- str_replace:
|
|
||||||
template: set port br-dpdk0 tag=_VLAN_TAG_
|
|
||||||
params:
|
|
||||||
_VLAN_TAG_: {get_param: {{network.name}}NetworkVlanID}
|
|
||||||
addresses:
|
|
||||||
- ip_netmask: {get_param: {{network.name}}IpSubnet}
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_bond
|
|
||||||
name: dpdkbond0
|
|
||||||
rx_queue:
|
|
||||||
get_param: NumDpdkInterfaceRxQueues
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk0
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic4
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk1
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic5
|
|
||||||
{%- endif %}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,64 +0,0 @@
|
|||||||
This directory contains Heat templates to help configure
|
|
||||||
VLANs on a bonded pair of NICs for each Overcloud role.
|
|
||||||
|
|
||||||
There are two versions of the controller role template, one with
|
|
||||||
an external network interface, and another without. If the
|
|
||||||
external network interface is not configured, the ctlplane address
|
|
||||||
ranges will be used for external (public) network traffic.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To make use of these templates create a Heat environment that looks
|
|
||||||
something like this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::BlockStorage::Net::SoftwareConfig: network/config/bond-with-vlans/cinder-storage.yaml
|
|
||||||
OS::TripleO::Compute::Net::SoftwareConfig: network/config/bond-with-vlans/compute.yaml
|
|
||||||
OS::TripleO::Controller::Net::SoftwareConfig: network/config/bond-with-vlans/controller.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/bond-with-vlans/swift-storage.yaml
|
|
||||||
OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/bond-with-vlans/ceph-storage.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/net-bond-with-vlans.yaml
|
|
||||||
|
|
||||||
Configuration with no External Network
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
Same as above except set the following value for the controller role:
|
|
||||||
|
|
||||||
OS::TripleO::Controller::Net::SoftwareConfig: network/config/bond-with-vlans/controller-no-external.yaml
|
|
||||||
|
|
||||||
Configuration with IPv6 Networks
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
There is no longer a requirement to use controller-v6.yaml for Controller nodes
|
|
||||||
when deploying with IPv6. You may now define both an IPv4 network and an IPv6
|
|
||||||
network as default routes by adding both networks to the default_route_networks
|
|
||||||
list for the Controller role in roles_data.yaml.
|
|
||||||
|
|
||||||
Configuration with System Management Network
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
The Management network is enabled for backwards-compatibility, but
|
|
||||||
is not included in any roles by default. To enable the optional System
|
|
||||||
Management network, create a Heat environment that looks something like
|
|
||||||
this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::Network::Management: ../network/management.yaml
|
|
||||||
OS::TripleO::Controller::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::Compute::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::CephStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::BlockStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/network-management.yaml
|
|
||||||
|
|
||||||
Or, add the network to the list of networks used by each role in the role
|
|
||||||
definition file (e.g. roles_data.yaml). Refer to installation documentation
|
|
||||||
for procedure to generate a role file for custom roles.
|
|
||||||
|
|
@ -1,175 +0,0 @@
|
|||||||
# NOTE: This template is now deprecated, and is only included for compatibility
|
|
||||||
# when upgrading a deployment where this template was originally used. For new
|
|
||||||
# deployments, remove the External network from the Controller role and set
|
|
||||||
# default_route_networks to ['ControlPlane'].
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config with 2 bonded nics on a bridge with VLANs attached for the controller role.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
ExternalInterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the external network
|
|
||||||
type: string
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
BondInterfaceOvsOptions:
|
|
||||||
default: ''
|
|
||||||
description: 'The ovs_options or bonding_options string for the bond
|
|
||||||
interface. Set things like lacp=active and/or bond_mode=balance-slb
|
|
||||||
for OVS bonds or like mode=4 for Linux bonds using this option.'
|
|
||||||
type: string
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
use_dhcp: true
|
|
||||||
members:
|
|
||||||
- type: ovs_bond
|
|
||||||
name: bond1
|
|
||||||
ovs_options:
|
|
||||||
get_param: BondInterfaceOvsOptions
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic2
|
|
||||||
primary: true
|
|
||||||
- type: interface
|
|
||||||
name: nic3
|
|
||||||
- type: vlan
|
|
||||||
vlan_id:
|
|
||||||
get_param: InternalApiNetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: InternalApiIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: InternalApiInterfaceRoutes
|
|
||||||
- type: vlan
|
|
||||||
vlan_id:
|
|
||||||
get_param: StorageNetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: StorageIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: StorageInterfaceRoutes
|
|
||||||
- type: vlan
|
|
||||||
vlan_id:
|
|
||||||
get_param: StorageMgmtNetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: StorageMgmtIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: StorageMgmtInterfaceRoutes
|
|
||||||
- type: vlan
|
|
||||||
vlan_id:
|
|
||||||
get_param: TenantNetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: TenantIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: TenantInterfaceRoutes
|
|
||||||
# Uncomment when including environments/network-management.yaml
|
|
||||||
# If setting default route on the Management interface, comment
|
|
||||||
# out the default route on the Control Plane.
|
|
||||||
#- type: vlan
|
|
||||||
# vlan_id:
|
|
||||||
# get_param: ManagementNetworkVlanID
|
|
||||||
# addresses:
|
|
||||||
# - ip_netmask:
|
|
||||||
# get_param: ManagementIpSubnet
|
|
||||||
# routes:
|
|
||||||
# list_concat_unique:
|
|
||||||
# - get_param: ManagementInterfaceRoutes
|
|
||||||
# - - default: true
|
|
||||||
# next_hop:
|
|
||||||
# get_param: ManagementInterfaceDefaultRoute
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,239 +0,0 @@
|
|||||||
{#- Convert net map or net list to internal list of networks #}
|
|
||||||
{#- NOTE(hjensas): For backward compatibility support role data with both #}
|
|
||||||
{#- networks map (new schema) and network list (old schema). #}
|
|
||||||
{%- if role.networks is mapping %}
|
|
||||||
{%- set _role_networks = [] %}
|
|
||||||
{%- for key, val in role.networks.items() %}
|
|
||||||
{%- set _ = _role_networks.append(key) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
{%- set _role_networks = role.networks %}
|
|
||||||
{%- endif %}
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config with 2 bonded nics on a bridge with VLANs attached for the {{role.name}} role.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks if network.enabled|default(true) and network.name in role.networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{%- if network.name in role.default_route_networks %}
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
BondInterfaceOvsOptions:
|
|
||||||
default: bond_mode=active-backup
|
|
||||||
description: 'The ovs_options or bonding_options string for the bond
|
|
||||||
interface. Set things like lacp=active and/or bond_mode=balance-slb
|
|
||||||
for OVS bonds or like mode=4 for Linux bonds using this option.'
|
|
||||||
type: string
|
|
||||||
{%- if 'ovsdpdk' in role.tags %}
|
|
||||||
NumDpdkInterfaceRxQueues:
|
|
||||||
description: Number of Rx Queues required for DPDK bond or DPDK ports
|
|
||||||
default: 1
|
|
||||||
type: number
|
|
||||||
{%- endif %}
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
|
|
||||||
MinViableMtu:
|
|
||||||
# This resource resolves the minimum viable MTU for interfaces, bonds and
|
|
||||||
# bridges that carry multiple VLANs. Each VLAN may have different MTU. The
|
|
||||||
# bridge, bond or interface must have an MTU to allow the VLAN with the
|
|
||||||
# largest MTU.
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
type: number
|
|
||||||
value:
|
|
||||||
yaql:
|
|
||||||
expression: $.data.max()
|
|
||||||
data:
|
|
||||||
- {get_param: ControlPlaneMtu}
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in role.networks %}
|
|
||||||
- {get_param: {{network.name}}Mtu}
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
mtu:
|
|
||||||
get_param: ControlPlaneMtu
|
|
||||||
use_dhcp: false
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
{%- if not 'ovsdpdk' in role.tags %}
|
|
||||||
- type: ovs_bridge
|
|
||||||
{%- if 'ceph' in role.tags or 'storage' in role.tags %}
|
|
||||||
name: br-bond
|
|
||||||
{%- else %}
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
{%- endif %}
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
members:
|
|
||||||
- type: ovs_bond
|
|
||||||
name: bond1
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
ovs_options:
|
|
||||||
get_param: BondInterfaceOvsOptions
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic2
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
primary: true
|
|
||||||
- type: interface
|
|
||||||
name: nic3
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
- type: vlan
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
# Linux bond for non-DPDK traffic required when using DPDK
|
|
||||||
- type: linux_bond
|
|
||||||
name: bond_api
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
bonding_options:
|
|
||||||
get_param: BondInterfaceOvsOptions
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic2
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
primary: true
|
|
||||||
- type: interface
|
|
||||||
name: nic3
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
- type: vlan
|
|
||||||
device: bond_api
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
# Used as a provider network with external DHCP
|
|
||||||
- type: ovs_user_bridge
|
|
||||||
name: br-dpdk0
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_bond
|
|
||||||
name: dpdkbond0
|
|
||||||
rx_queue:
|
|
||||||
get_param: NumDpdkInterfaceRxQueues
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk0
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic4
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk1
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic5
|
|
||||||
{%- endif %}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
This directory contains Heat templates to help configure
|
|
||||||
multiple NICs for each Overcloud role, where it is
|
|
||||||
assumed that each NIC is running a specific network
|
|
||||||
traffic type with tagged VLANs.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To make use of these templates create a Heat environment that looks
|
|
||||||
something like this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::BlockStorage::Net::SoftwareConfig: network/config/multiple-nics/cinder-storage.yaml
|
|
||||||
OS::TripleO::Compute::Net::SoftwareConfig: network/config/multiple-nics/compute.yaml
|
|
||||||
OS::TripleO::Controller::Net::SoftwareConfig: network/config/multiple-nics/controller.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/multiple-nics/swift-storage.yaml
|
|
||||||
OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/multiple-nics/ceph-storage.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/net-multiple-nics-vlans.yaml
|
|
||||||
|
|
||||||
Configuration with System Management Network
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
The Management network is enabled for backwards-compatibility, but
|
|
||||||
is not included in any roles by default. To enable the optional System
|
|
||||||
Management network, create a Heat environment that looks something like
|
|
||||||
this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::Network::Management: ../network/management.yaml
|
|
||||||
OS::TripleO::Controller::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::Compute::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::CephStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::BlockStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/network-management.yaml
|
|
||||||
|
|
||||||
Or, add the network to the list of networks used by each role in the role
|
|
||||||
definition file (e.g. roles_data.yaml). Refer to installation documentation
|
|
||||||
for procedure to generate a role file for custom roles.
|
|
||||||
|
|
@ -1,192 +0,0 @@
|
|||||||
# FIXME: This legacy template should be converted to a composable role
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config to configure multiple interfaces for the
|
|
||||||
compute role with external bridge for DVR.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
# Uncomment when including environments/network-management.yaml and setting
|
|
||||||
# default route on the Management interface. Also comment out the default
|
|
||||||
# route on the Control Plane and add the Management network to the roles
|
|
||||||
# default_route_networks in roles data.
|
|
||||||
# ManagementInterfaceDefaultRoute:
|
|
||||||
# default: ''
|
|
||||||
# description: default route for the management network
|
|
||||||
# type: string
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
mtu:
|
|
||||||
get_param: ControlPlaneMtu
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
- type: interface
|
|
||||||
name: nic2
|
|
||||||
mtu:
|
|
||||||
get_param: StorageMtu
|
|
||||||
use_dhcp: false
|
|
||||||
- type: vlan
|
|
||||||
device: nic2
|
|
||||||
mtu:
|
|
||||||
get_param: StorageMtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: StorageNetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: StorageIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: StorageInterfaceRoutes
|
|
||||||
- type: interface
|
|
||||||
name: nic4
|
|
||||||
mtu:
|
|
||||||
get_param: InternalApiMtu
|
|
||||||
use_dhcp: false
|
|
||||||
- type: vlan
|
|
||||||
device: nic4
|
|
||||||
mtu:
|
|
||||||
get_param: InternalApiMtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: InternalApiNetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: InternalApiIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: InternalApiInterfaceRoutes
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: br-tenant
|
|
||||||
mtu:
|
|
||||||
get_param: TenantMtu
|
|
||||||
use_dhcp: false
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: TenantIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: TenantInterfaceRoutes
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic5
|
|
||||||
mtu:
|
|
||||||
get_param: TenantMtu
|
|
||||||
use_dhcp: false
|
|
||||||
primary: true
|
|
||||||
# External bridge for DVR (no IP address required)
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
mtu:
|
|
||||||
get_param: ExternalMtu
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
use_dhcp: false
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic6
|
|
||||||
mtu:
|
|
||||||
get_param: ExternalMtu
|
|
||||||
primary: true
|
|
||||||
# Uncomment when including environments/network-management.yaml
|
|
||||||
# If setting default route on the Management interface, comment
|
|
||||||
# out the default route on the Control Plane.
|
|
||||||
#- type: interface
|
|
||||||
# name: nic7
|
|
||||||
# mtu:
|
|
||||||
# get_param: ManagementMtu
|
|
||||||
# use_dhcp: false
|
|
||||||
# addresses:
|
|
||||||
# - ip_netmask:
|
|
||||||
# get_param: ManagementIpSubnet
|
|
||||||
# routes:
|
|
||||||
# list_concat_unique:
|
|
||||||
# - get_param: ManagementInterfaceRoutes
|
|
||||||
# - - default: true
|
|
||||||
# next_hop:
|
|
||||||
# get_param: ManagementInterfaceDefaultRoute
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,212 +0,0 @@
|
|||||||
{#- Convert net map or net list to internal list of networks #}
|
|
||||||
{#- NOTE(hjensas): For backward compatibility support role data with both #}
|
|
||||||
{#- networks map (new schema) and network list (old schema). #}
|
|
||||||
{%- if role.networks is mapping %}
|
|
||||||
{%- set _role_networks = [] %}
|
|
||||||
{%- for key, val in role.networks.items() %}
|
|
||||||
{%- set _ = _role_networks.append(key) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
{%- set _role_networks = role.networks %}
|
|
||||||
{%- endif %}
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config to configure multiple interfaces for the {{role.name}} role.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- if network.vlan %}
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{%- if network.name in role.default_route_networks %}
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
{% for network in networks if network.name == "External" and 'external_bridge' in role.tags and not network.name in _role_networks %}
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{% endfor %}
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
{%- if 'ovsdpdk' in role.tags %}
|
|
||||||
NumDpdkInterfaceRxQueues:
|
|
||||||
description: Number of Rx Queues required for DPDK bond or DPDK ports
|
|
||||||
default: 1
|
|
||||||
type: number
|
|
||||||
{%- endif %}
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
mtu:
|
|
||||||
get_param: ControlPlaneMtu
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
{%- set nics_used = [1] %}
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name not in role.networks_skip_config|default([]) %}
|
|
||||||
{%- if network.name not in ["External", "Tenant"] %}
|
|
||||||
{%- if network.name in _role_networks %}
|
|
||||||
- type: interface
|
|
||||||
name: nic{{loop.index + 1}}
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
use_dhcp: false
|
|
||||||
- type: vlan
|
|
||||||
device: nic{{loop.index + 1}}
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endif %}
|
|
||||||
{#- We need bridge also for ComputeDVR and Computes with OVN #}
|
|
||||||
{%- elif network.name in role.networks or 'external_bridge' in role.tags %}
|
|
||||||
- type: ovs_bridge
|
|
||||||
{%- if network.name == "External" %}
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
{%- else %}
|
|
||||||
name: br-{{network.name_lower}}
|
|
||||||
{%- endif %}
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
use_dhcp: false
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic{{loop.index + 1}}
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
use_dhcp: false
|
|
||||||
primary: true
|
|
||||||
{%- if network.name in _role_networks %}
|
|
||||||
- type: vlan
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endif %}
|
|
||||||
{%- endif %}
|
|
||||||
{#- This hack gets around Jinja scope limitations to update nics_used within loop. #}
|
|
||||||
{%- set _ = nics_used.append(loop.index) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- if 'ovsdpdk' in role.tags %}
|
|
||||||
# Used as a provider network with external DHCP
|
|
||||||
- type: ovs_user_bridge
|
|
||||||
name: br-dpdk0
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_bond
|
|
||||||
name: dpdkbond0
|
|
||||||
rx_queue:
|
|
||||||
get_param: NumDpdkInterfaceRxQueues
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk0
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic{{nics_used[-1] + 1}}
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk1
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic{{nics_used[-1] + 2}}
|
|
||||||
{%- endif %}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
@ -1,54 +0,0 @@
|
|||||||
This directory contains Heat templates to help configure
|
|
||||||
multiple NICs for each Overcloud role, where it is
|
|
||||||
assumed that each NIC is running a specific network
|
|
||||||
traffic type and that VLANs are not being used.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To make use of these templates create a Heat environment that looks
|
|
||||||
something like this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::BlockStorage::Net::SoftwareConfig: network/config/multiple-nics/cinder-storage.yaml
|
|
||||||
OS::TripleO::Compute::Net::SoftwareConfig: network/config/multiple-nics/compute.yaml
|
|
||||||
OS::TripleO::Controller::Net::SoftwareConfig: network/config/multiple-nics/controller.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/multiple-nics/swift-storage.yaml
|
|
||||||
OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/multiple-nics/ceph-storage.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/net-multiple-nics.yaml
|
|
||||||
|
|
||||||
Configuration with IPv6 Networks
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
There is no longer a requirement to use controller-v6.yaml for Controller nodes
|
|
||||||
when deploying with IPv6. You may now define both an IPv4 network and an IPv6
|
|
||||||
network as default routes by adding both networks to the default_route_networks
|
|
||||||
list for the Controller role in roles_data.yaml.
|
|
||||||
|
|
||||||
Configuration with System Management Network
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
The Management network is enabled for backwards-compatibility, but
|
|
||||||
is not included in any roles by default. To enable the optional System
|
|
||||||
Management network, create a Heat environment that looks something like
|
|
||||||
this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::Network::Management: ../network/management.yaml
|
|
||||||
OS::TripleO::Controller::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::Compute::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::CephStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::BlockStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/network-management.yaml
|
|
||||||
|
|
||||||
Or, add the network to the list of networks used by each role in the role
|
|
||||||
definition file (e.g. roles_data.yaml). Refer to installation documentation
|
|
||||||
for procedure to generate a role file for custom roles.
|
|
||||||
|
|
@ -1,180 +0,0 @@
|
|||||||
# FIXME: This legacy template should be converted to a composable role
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config to configure multiple interfaces for the
|
|
||||||
compute role with external bridge for DVR.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
# Uncomment when including environments/network-management.yaml and setting
|
|
||||||
# default route on the Management interface. Also comment out the default
|
|
||||||
# route on the Control Plane and add the Management network to the roles
|
|
||||||
# default_route_networks in roles data.
|
|
||||||
# ManagementInterfaceDefaultRoute:
|
|
||||||
# default: ''
|
|
||||||
# description: default route for the management network
|
|
||||||
# type: string
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
mtu:
|
|
||||||
get_param: ControlPlaneMtu
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
- type: interface
|
|
||||||
name: nic2
|
|
||||||
mtu:
|
|
||||||
get_param: StorageMtu
|
|
||||||
use_dhcp: false
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: StorageIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: StorageInterfaceRoutes
|
|
||||||
- type: interface
|
|
||||||
name: nic4
|
|
||||||
mtu:
|
|
||||||
get_param: InternalApiMtu
|
|
||||||
use_dhcp: false
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: InternalApiIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: InternalApiInterfaceRoutes
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: br-tenant
|
|
||||||
mtu:
|
|
||||||
get_param: TenantMtu
|
|
||||||
use_dhcp: false
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: TenantIpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: TenantInterfaceRoutes
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic5
|
|
||||||
mtu:
|
|
||||||
get_param: TenantMtu
|
|
||||||
use_dhcp: false
|
|
||||||
primary: true
|
|
||||||
# External bridge for DVR (no IP address required)
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
mtu:
|
|
||||||
get_param: ExternalMtu
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
use_dhcp: false
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic6
|
|
||||||
mtu:
|
|
||||||
get_param: ExternalMtu
|
|
||||||
primary: true
|
|
||||||
# Uncomment when including environments/network-management.yaml
|
|
||||||
# If setting default route on the Management interface, comment
|
|
||||||
# out the default route on the Control Plane.
|
|
||||||
#- type: interface
|
|
||||||
# name: nic7
|
|
||||||
# mtu:
|
|
||||||
# get_param: ManagementMtu
|
|
||||||
# use_dhcp: false
|
|
||||||
# addresses:
|
|
||||||
# - ip_netmask:
|
|
||||||
# get_param: ManagementIpSubnet
|
|
||||||
# routes:
|
|
||||||
# list_concat_unique:
|
|
||||||
# - get_param: ManagementInterfaceRoutes
|
|
||||||
# - - default: true
|
|
||||||
# next_hop:
|
|
||||||
# get_param: ManagementInterfaceDefaultRoute
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,201 +0,0 @@
|
|||||||
{#- Convert net map or net list to internal list of networks #}
|
|
||||||
{#- NOTE(hjensas): For backward compatibility support role data with both #}
|
|
||||||
{#- networks map (new schema) and network list (old schema). #}
|
|
||||||
{%- if role.networks is mapping %}
|
|
||||||
{%- set _role_networks = [] %}
|
|
||||||
{%- for key, val in role.networks.items() %}
|
|
||||||
{%- set _ = _role_networks.append(key) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
{%- set _role_networks = role.networks %}
|
|
||||||
{%- endif %}
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config to configure multiple interfaces for the {{role.name}} role.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- if network.vlan %}
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{%- if network.name in role.default_route_networks %}
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
{% for network in networks if network.name == "External" and 'external_bridge' in role.tags and not network.name in _role_networks %}
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{% endfor %}
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
{%- if 'ovsdpdk' in role.tags %}
|
|
||||||
NumDpdkInterfaceRxQueues:
|
|
||||||
description: Number of Rx Queues required for DPDK bond or DPDK ports
|
|
||||||
default: 1
|
|
||||||
type: number
|
|
||||||
{%- endif %}
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
mtu:
|
|
||||||
get_param: ControlPlaneMtu
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
{%- set nics_used = [1] %}
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name not in role.networks_skip_config|default([]) %}
|
|
||||||
{%- if network.name not in ["External", "Tenant"] %}
|
|
||||||
{%- if network.name in _role_networks %}
|
|
||||||
- type: interface
|
|
||||||
name: nic{{loop.index + 1}}
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
use_dhcp: false
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endif %}
|
|
||||||
{#- We need bridge also for ComputeDVR and Computes with OVN #}
|
|
||||||
{%- elif network.name in _role_networks or 'external_bridge' in role.tags %}
|
|
||||||
- type: ovs_bridge
|
|
||||||
{%- if network.name == "External" %}
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
{%- else %}
|
|
||||||
name: br-{{network.name_lower}}
|
|
||||||
{%- endif %}
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
use_dhcp: false
|
|
||||||
{%- if network.name in _role_networks %}
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endif %}
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic{{loop.index + 1}}
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
use_dhcp: false
|
|
||||||
primary: true
|
|
||||||
{%- endif %}
|
|
||||||
{#- This hack gets around Jinja scope limitations to update nics_used within loop. #}
|
|
||||||
{%- set _ = nics_used.append(loop.index) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- if 'ovsdpdk' in role.tags %}
|
|
||||||
# Used as a provider network with external DHCP
|
|
||||||
- type: ovs_user_bridge
|
|
||||||
name: br-dpdk0
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_bond
|
|
||||||
name: dpdkbond0
|
|
||||||
rx_queue:
|
|
||||||
get_param: NumDpdkInterfaceRxQueues
|
|
||||||
members:
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk0
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic{{nics_used[-1] + 1}}
|
|
||||||
- type: ovs_dpdk_port
|
|
||||||
name: dpdk1
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic{{nics_used[-1] + 2}}
|
|
||||||
{%- endif %}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
@ -1,27 +0,0 @@
|
|||||||
This directory contains Heat templates to help configure
|
|
||||||
Vlans on a single NICs for each Overcloud role.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To make use of these templates create a Heat environment that looks
|
|
||||||
something like this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::BlockStorage::Net::SoftwareConfig: network/config/single-nic-linux-bridge-vlans/cinder-storage.yaml
|
|
||||||
OS::TripleO::Compute::Net::SoftwareConfig: network/config/single-nic-linux-bridge-vlans/compute.yaml
|
|
||||||
OS::TripleO::Controller::Net::SoftwareConfig: network/config/single-nic-linux-bridge-vlans/controller.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Net::SoftwareConfig: network/config/single-nic-linux-bridge-vlans/swift-storage.yaml
|
|
||||||
OS::TripleO::CephStorage::Net::SoftwareConfig: network/config/single-nic-linux-bridge-vlans/ceph-storage.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/net-single-nic-linux-bridge-with-vlans.yaml
|
|
||||||
|
|
||||||
Configuration with IPv6 Networks
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
There is no longer a requirement to use controller-v6.yaml for Controller nodes
|
|
||||||
when deploying with IPv6. You may now define both an IPv4 network and an IPv6
|
|
||||||
network as default routes by adding both networks to the default_route_networks
|
|
||||||
list for the Controller role in roles_data.yaml.
|
|
@ -1,168 +0,0 @@
|
|||||||
{#- Convert net map or net list to internal list of networks #}
|
|
||||||
{#- NOTE(hjensas): For backward compatibility support role data with both #}
|
|
||||||
{#- networks map (new schema) and network list (old schema). #}
|
|
||||||
{%- if role.networks is mapping %}
|
|
||||||
{%- set _role_networks = [] %}
|
|
||||||
{%- for key, val in role.networks.items() %}
|
|
||||||
{%- set _ = _role_networks.append(key) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
{%- set _role_networks = role.networks %}
|
|
||||||
{%- endif %}
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config to configure VLANs for the {{role.name}} role.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{%- if network.name in role.default_route_networks %}
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPublicInterface:
|
|
||||||
default: nic1
|
|
||||||
description: Which interface to add to the NeutronPhysicalBridge.
|
|
||||||
type: string
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
|
|
||||||
MinViableMtu:
|
|
||||||
# This resource resolves the minimum viable MTU for interfaces, bonds and
|
|
||||||
# bridges that carry multiple VLANs. Each VLAN may have different MTU. The
|
|
||||||
# bridge, bond or interface must have an MTU to allow the VLAN with the
|
|
||||||
# largest MTU.
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
type: number
|
|
||||||
value:
|
|
||||||
yaql:
|
|
||||||
expression: $.data.max()
|
|
||||||
data:
|
|
||||||
- {get_param: ControlPlaneMtu}
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
- {get_param: {{network.name}}Mtu}
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: linux_bridge
|
|
||||||
{%- if 'ceph' in role.tags or 'storage' in role.tags %}
|
|
||||||
name: br-storage
|
|
||||||
{%- else %}
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
{%- endif %}
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: {get_param: NeutronPublicInterface}
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
primary: true
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks
|
|
||||||
and network.name not in role.networks_skip_config|default([]) %}
|
|
||||||
- type: vlan
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
{%- if 'ceph' in role.tags or 'storage' in role.tags %}
|
|
||||||
device: br-storage
|
|
||||||
{%- else %}
|
|
||||||
device: {get_param: NeutronPhysicalBridge}
|
|
||||||
{%- endif %}
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
@ -1,63 +0,0 @@
|
|||||||
This directory contains Heat templates to help configure
|
|
||||||
VLANs on a single NIC for each Overcloud role.
|
|
||||||
|
|
||||||
There are two versions of the controller role template, one with
|
|
||||||
an external network interface, and another without. If the
|
|
||||||
external network interface is not configured, the ctlplane address
|
|
||||||
ranges will be used for external (public) network traffic.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
-------------
|
|
||||||
|
|
||||||
To make use of these templates create a Heat environment that looks
|
|
||||||
something like this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
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
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/net-single-nic-with-vlans.yaml
|
|
||||||
|
|
||||||
Configuration with no External Network
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
Same as above except set the following value for the controller role:
|
|
||||||
|
|
||||||
OS::TripleO::Controller::Net::SoftwareConfig: network/config/single-nic-vlans/controller-no-external.yaml
|
|
||||||
|
|
||||||
Configuration with IPv6 Networks
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
There is no longer a requirement to use controller-v6.yaml for Controller nodes
|
|
||||||
when deploying with IPv6. You may now define both an IPv4 network and an IPv6
|
|
||||||
network as default routes by adding both networks to the default_route_networks
|
|
||||||
list for the Controller role in roles_data.yaml.
|
|
||||||
|
|
||||||
Configuration with System Management Network
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
The Management network is enabled for backwards-compatibility, but
|
|
||||||
is not included in any roles by default. To enable the optional System
|
|
||||||
Management network, create a Heat environment that looks something like
|
|
||||||
this:
|
|
||||||
|
|
||||||
resource\_registry:
|
|
||||||
OS::TripleO::Network::Management: ../network/management.yaml
|
|
||||||
OS::TripleO::Controller::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::Compute::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::CephStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::ObjectStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
OS::TripleO::BlockStorage::Ports::ManagementPort: ../network/ports/management.yaml
|
|
||||||
|
|
||||||
Or use this Heat environment file:
|
|
||||||
|
|
||||||
environments/network-management.yaml
|
|
||||||
|
|
||||||
Or, add the network to the list of networks used by each role in the role
|
|
||||||
definition file (e.g. roles_data.yaml). Refer to installation documentation
|
|
||||||
for procedure to generate a role file for custom roles.
|
|
@ -1,123 +0,0 @@
|
|||||||
# NOTE: This template is now deprecated, and is only included for compatibility
|
|
||||||
# when upgrading a deployment where this template was originally used. For new
|
|
||||||
# deployments, remove the External network from the Controller role and set
|
|
||||||
# default_route_networks to ['ControlPlane'].
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config to configure VLANs for the controller role. No external IP is configured.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
ExternalInterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the external network
|
|
||||||
type: string
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
- get_param: ControlPlaneStaticRoutes
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name != 'External' %}
|
|
||||||
- type: vlan
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
||||||
|
|
@ -1,159 +0,0 @@
|
|||||||
{#- Convert net map or net list to internal list of networks #}
|
|
||||||
{#- NOTE(hjensas): For backward compatibility support role data with both #}
|
|
||||||
{#- networks map (new schema) and network list (old schema). #}
|
|
||||||
{%- if role.networks is mapping %}
|
|
||||||
{%- set _role_networks = [] %}
|
|
||||||
{%- for key, val in role.networks.items() %}
|
|
||||||
{%- set _ = _role_networks.append(key) %}
|
|
||||||
{%- endfor %}
|
|
||||||
{%- else %}
|
|
||||||
{%- set _role_networks = role.networks %}
|
|
||||||
{%- endif %}
|
|
||||||
heat_template_version: rocky
|
|
||||||
description: >
|
|
||||||
Software Config to drive os-net-config to configure VLANs for the {{role.name}} role.
|
|
||||||
parameters:
|
|
||||||
ControlPlaneIp:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the ctlplane network
|
|
||||||
type: string
|
|
||||||
ControlPlaneSubnetCidr:
|
|
||||||
default: ''
|
|
||||||
description: >
|
|
||||||
The subnet CIDR of the control plane network. (The parameter is
|
|
||||||
automatically resolved from the ctlplane subnet's cidr attribute.)
|
|
||||||
type: string
|
|
||||||
ControlPlaneDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: The default route of the control plane network. (The parameter
|
|
||||||
is automatically resolved from the ctlplane subnet's gateway_ip attribute.)
|
|
||||||
type: string
|
|
||||||
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
|
|
||||||
{% for network in networks if network.enabled|default(true) and network.name in role.networks %}
|
|
||||||
{{network.name}}IpSubnet:
|
|
||||||
default: ''
|
|
||||||
description: IP address/subnet on the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{{network.name}}NetworkVlanID:
|
|
||||||
default: {{network.vlan|default(1)}}
|
|
||||||
description: Vlan ID for the {{network.name_lower}} network traffic.
|
|
||||||
type: number
|
|
||||||
{{network.name}}Mtu:
|
|
||||||
default: {{network.mtu|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.name}} network.
|
|
||||||
type: number
|
|
||||||
{%- if network.name in role.default_route_networks %}
|
|
||||||
{{network.name}}InterfaceDefaultRoute:
|
|
||||||
default: ''
|
|
||||||
description: default route for the {{network.name_lower}} network
|
|
||||||
type: string
|
|
||||||
{%- endif %}
|
|
||||||
{{network.name}}InterfaceRoutes:
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
Routes for the {{network.name_lower}} 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
|
|
||||||
{%- endfor %}
|
|
||||||
DnsServers: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: >
|
|
||||||
DNS servers to use for the Overcloud (2 max for some implementations).
|
|
||||||
If not set the nameservers configured in the ctlplane subnet's
|
|
||||||
dns_nameservers attribute will be used.
|
|
||||||
type: comma_delimited_list
|
|
||||||
DnsSearchDomains: # Override this via parameter_defaults
|
|
||||||
default: []
|
|
||||||
description: A list of DNS search domains to be added (in order) to resolv.conf.
|
|
||||||
type: comma_delimited_list
|
|
||||||
NeutronPhysicalBridge:
|
|
||||||
default: 'br-ex'
|
|
||||||
description: An OVS bridge to create for accessing external networks.
|
|
||||||
type: string
|
|
||||||
|
|
||||||
resources:
|
|
||||||
|
|
||||||
MinViableMtu:
|
|
||||||
# This resource resolves the minimum viable MTU for interfaces, bonds and
|
|
||||||
# bridges that carry multiple VLANs. Each VLAN may have different MTU. The
|
|
||||||
# bridge, bond or interface must have an MTU to allow the VLAN with the
|
|
||||||
# largest MTU.
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
type: number
|
|
||||||
value:
|
|
||||||
yaql:
|
|
||||||
expression: $.data.max()
|
|
||||||
data:
|
|
||||||
- {get_param: ControlPlaneMtu}
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in role.networks %}
|
|
||||||
- {get_param: {{network.name}}Mtu}
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
OsNetConfigImpl:
|
|
||||||
type: OS::Heat::Value
|
|
||||||
properties:
|
|
||||||
value:
|
|
||||||
network_config:
|
|
||||||
- type: ovs_bridge
|
|
||||||
{%- if 'ceph' in role.tags or 'storage' in role.tags %}
|
|
||||||
name: br-storage
|
|
||||||
{%- else %}
|
|
||||||
name: {get_param: NeutronPhysicalBridge}
|
|
||||||
{%- endif %}
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
use_dhcp: false
|
|
||||||
dns_servers:
|
|
||||||
get_param: DnsServers
|
|
||||||
domain:
|
|
||||||
get_param: DnsSearchDomains
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
list_join:
|
|
||||||
- /
|
|
||||||
- - get_param: ControlPlaneIp
|
|
||||||
- get_param: ControlPlaneSubnetCidr
|
|
||||||
routes:
|
|
||||||
get_param: ControlPlaneStaticRoutes
|
|
||||||
members:
|
|
||||||
- type: interface
|
|
||||||
name: nic1
|
|
||||||
mtu:
|
|
||||||
get_attr: [MinViableMtu, value]
|
|
||||||
# force the MAC address of the bridge to this interface
|
|
||||||
primary: true
|
|
||||||
{%- for network in networks if network.enabled|default(true) and network.name in _role_networks %}
|
|
||||||
- type: vlan
|
|
||||||
mtu:
|
|
||||||
get_param: {{network.name}}Mtu
|
|
||||||
vlan_id:
|
|
||||||
get_param: {{network.name}}NetworkVlanID
|
|
||||||
addresses:
|
|
||||||
- ip_netmask:
|
|
||||||
get_param: {{network.name}}IpSubnet
|
|
||||||
routes:
|
|
||||||
get_param: {{network.name}}InterfaceRoutes
|
|
||||||
{%- endfor %}
|
|
||||||
outputs:
|
|
||||||
config:
|
|
||||||
description: The OsNetConfigImpl resource.
|
|
||||||
value:
|
|
||||||
get_attr: [OsNetConfigImpl, value]
|
|
Loading…
Reference in New Issue
Block a user