tripleo-heat-templates/net-config-standalone.j2.yaml
Harald Jensås 2f38880744 Use /32 or /128 netmask for VIPs
Commit 1ebf115f85 hard code
the netmask for VIPs to /32. This will not work for IPv6.

Add a conditional checking for ':' in the IP addresses for
control_virtual_ip and public_virtual_ip and set netmask
correctly based on IP version.

Related-Bug: #1878101
Change-Id: I00718cf436ba438ef19c1a42aa2d2004fe73dcd2
2020-05-21 16:21:51 +02:00

163 lines
6.4 KiB
YAML

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
{%- 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
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::SoftwareConfig
properties:
group: script
inputs:
- name: disable_configure_safe_defaults
default: true
config:
str_replace:
template:
get_file: network/scripts/run-os-net-config.sh
params:
$network_config:
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: interface_name
# force the MAC address of the bridge to this interface
primary: true
mtu: {get_param: InterfaceLocalMtu}
outputs:
OS::stack_id:
description: The OsNetConfigImpl resource.
value:
get_resource: OsNetConfigImpl