Browse Source

Concatenate host_routes and default route in overcloud.yaml

Previoously the default route was concatenated with the
host_routes in the NetworkConfig. This change moves that
concatenation to overcloud.yaml.

GroupVars {{network.name_lower}}_host_routes and
ctlplane_host_routes will have the default route appended
based on role.default_route_networks setting.

For heat base NetworkConfig the parameters
ControlPlaneStaticRoutes and {{network.name}}InterfaceRoutes
will have the default route appropriately appended.

Doing the concatenation in overcloud.yaml enable simplified
user-facing NetworkConfig templates.

For standalone and undercloud define the default_route_networks
with an empty list. Cannot leave it undefined as this will
default the default route to the ctlplane's gateway. Undercloud
and Standalone uses the management interface as the gateway by
default, so we should not set a default gateway for these roles.

Change-Id: I3a35c4b46536fa2916d9fa387278077884adaf68
changes/15/755715/6
Harald Jensås 9 months ago
parent
commit
34fae762aa
15 changed files with 61 additions and 142 deletions
  1. +4
    -28
      network/config/2-linux-bonds-vlans/role.role.j2.yaml
  2. +1
    -5
      network/config/bond-with-vlans/controller-no-external.j2.yaml
  3. +3
    -21
      network/config/bond-with-vlans/role.role.j2.yaml
  4. +1
    -5
      network/config/multiple-nics-vlans/compute-dvr.j2.yaml
  5. +3
    -21
      network/config/multiple-nics-vlans/role.role.j2.yaml
  6. +1
    -5
      network/config/multiple-nics/compute-dvr.j2.yaml
  7. +3
    -21
      network/config/multiple-nics/role.role.j2.yaml
  8. +2
    -14
      network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml
  9. +0
    -4
      network/config/single-nic-vlans/controller-no-external.j2.yaml
  10. +2
    -14
      network/config/single-nic-vlans/role.role.j2.yaml
  11. +28
    -4
      overcloud.j2.yaml
  12. +4
    -0
      roles/Standalone.yaml
  13. +4
    -0
      roles/Undercloud.yaml
  14. +1
    -0
      roles/UndercloudMinion.yaml
  15. +4
    -0
      roles_data_undercloud.yaml

+ 4
- 28
network/config/2-linux-bonds-vlans/role.role.j2.yaml View File

@ -156,13 +156,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
{%- endif %}
get_param: ControlPlaneStaticRoutes
- type: linux_bond
name: bond_api
mtu:
@ -195,13 +189,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endfor %}
{%- if not role.name.startswith('ComputeOvsDpdk') %}
- type: ovs_bridge
@ -236,13 +224,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endfor %}
{%- else %}
- type: ovs_user_bridge
@ -257,13 +239,7 @@ resources:
addresses:
- ip_netmask: {get_param: {{network.name}}IpSubnet}
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endfor %}
members:
- type: ovs_dpdk_bond


+ 1
- 5
network/config/bond-with-vlans/controller-no-external.j2.yaml View File

@ -105,11 +105,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
- - default: true # NOTE(hjensas): This is the IPv4 default route
next_hop:
get_param: ControlPlaneDefaultRoute
get_param: ControlPlaneStaticRoutes
- type: ovs_bridge
name: {get_param: NeutronPhysicalBridge}
use_dhcp: true


+ 3
- 21
network/config/bond-with-vlans/role.role.j2.yaml View File

@ -136,13 +136,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
{%- endif %}
get_param: ControlPlaneStaticRoutes
{%- if not role.name.startswith('ComputeOvsDpdk') %}
- type: ovs_bridge
{%- if role.name.startswith('CephStorage') or role.name.startswith('ObjectStorage') or role.name.startswith('BlockStorage') %}
@ -181,13 +175,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endfor %}
{%- else %}
# Linux bond for non-DPDK traffic required when using DPDK
@ -221,13 +209,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endfor %}
# Used as a provider network with external DHCP
- type: ovs_user_bridge


+ 1
- 5
network/config/multiple-nics-vlans/compute-dvr.j2.yaml View File

@ -103,11 +103,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
get_param: ControlPlaneStaticRoutes
- type: interface
name: nic2
mtu:


+ 3
- 21
network/config/multiple-nics-vlans/role.role.j2.yaml View File

@ -126,13 +126,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
{%- endif %}
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"] %}
@ -152,13 +146,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
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 %}
@ -190,13 +178,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endif %}
{%- endif %}
{#- This hack gets around Jinja scope limitations to update nics_used within loop. #}


+ 1
- 5
network/config/multiple-nics/compute-dvr.j2.yaml View File

@ -103,11 +103,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
get_param: ControlPlaneStaticRoutes
- type: interface
name: nic2
mtu:


+ 3
- 21
network/config/multiple-nics/role.role.j2.yaml View File

@ -126,13 +126,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
{%- endif %}
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"] %}
@ -146,13 +140,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
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 %}
@ -172,13 +160,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endif %}
members:
- type: interface


+ 2
- 14
network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml View File

@ -136,13 +136,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
{%- endif %}
get_param: ControlPlaneStaticRoutes
members:
- type: interface
name: {get_param: NeutronPublicInterface}
@ -165,13 +159,7 @@ and network.name not in role.networks_skip_config|default([]) %}
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endfor %}
outputs:
config:


+ 0
- 4
network/config/single-nic-vlans/controller-no-external.j2.yaml View File

@ -99,11 +99,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
members:
- type: interface
name: nic1


+ 2
- 14
network/config/single-nic-vlans/role.role.j2.yaml View File

@ -132,13 +132,7 @@ resources:
- - get_param: ControlPlaneIp
- get_param: ControlPlaneSubnetCidr
routes:
list_concat_unique:
- get_param: ControlPlaneStaticRoutes
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop:
get_param: ControlPlaneDefaultRoute
{%- endif %}
get_param: ControlPlaneStaticRoutes
members:
- type: interface
name: nic1
@ -156,13 +150,7 @@ resources:
- ip_netmask:
get_param: {{network.name}}IpSubnet
routes:
list_concat_unique:
- get_param: {{network.name}}InterfaceRoutes
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop:
get_param: {{network.name}}InterfaceDefaultRoute
{%- endif %}
get_param: {{network.name}}InterfaceRoutes
{%- endfor %}
outputs:
config:


+ 28
- 4
overcloud.j2.yaml View File

@ -969,7 +969,13 @@ resources:
- {get_param: DnsServers}
- {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, dns_nameservers]}
ctlplane_subnet_cidr: {str_split: ['/', {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, cidr]}, 1]}
ctlplane_host_routes: {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, host_routes]}
ctlplane_host_routes:
list_concat_unique:
- {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, host_routes]}
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop: {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, gateway_ip]}
{%- endif %}
{%- for network in networks if network.enabled|default(true) and network.name in role.networks|default([]) %}
{%- if role.networks is mapping %}
{%- set _role_net_subnet = role.networks[network.name]['subnet'] %}
@ -978,7 +984,13 @@ resources:
{%- endif %}
{{network.name_lower}}_mtu: {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, network, mtu]}
{{network.name_lower}}_gateway_ip: {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, gateway_ip]}
{{network.name_lower}}_host_routes: {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, host_routes]}
{{network.name_lower}}_host_routes:
list_concat_unique:
- {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, host_routes]}
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop: {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, gateway_ip]}
{%- endif %}
{{network.name_lower}}_cidr: {str_split: ['/', {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, cidr]}, 1]}
{{network.name_lower}}_vlan_id:
yaql:
@ -1020,7 +1032,13 @@ resources:
ControlPlaneIp: "{{ '{{' }} ctlplane_ip {{ '}}' }}"
ControlPlaneSubnetCidr: {str_split: ['/', {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, cidr]}, 1]}
ControlPlaneDefaultRoute: {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, gateway_ip]}
ControlPlaneStaticRoutes: {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, host_routes]}
ControlPlaneStaticRoutes:
list_concat_unique:
- {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, host_routes]}
{%- if role.default_route_networks is not defined or 'ControlPlane' in role.default_route_networks %}
- - default: true
next_hop: {get_attr: [Networks, net_attributes_map, ctlplane, subnets, {get_param: {{role.name}}ControlPlaneSubnet}, gateway_ip]}
{%- endif %}
ControlPlaneMtu: {get_attr: [Networks, net_attributes_map, ctlplane, network, mtu]}
DnsServers:
if:
@ -1034,7 +1052,13 @@ resources:
{%- set _role_net_subnet = network.name_lower + '_subnet' %}
{%- endif %}
{{network.name}}IpSubnet: "{{ '{{' }} {{network.name_lower}}_ip ~ '/' ~ {{network.name_lower}}_cidr {{ '}}' }}"
{{network.name}}InterfaceRoutes: {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, host_routes]}
{{network.name}}InterfaceRoutes:
list_concat_unique:
- {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, host_routes]}
{%- if network.name in role.default_route_networks %}
- - default: true
next_hop: {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, subnets, {{_role_net_subnet}}, gateway_ip]}
{%- endif %}
{{network.name}}Mtu: {get_attr: [Networks, net_attributes_map, {{network.name_lower}}, network, mtu]}
{{network.name}}NetworkVlanID:
yaql:


+ 4
- 0
roles/Standalone.yaml View File

@ -12,6 +12,10 @@
- primary
- controller
- standalone
# Define default_route_networks as empty for standalone where management
# interface is used. On single nic systems ControlPlaneStaticRoutes must
# be set in standalone_parameters.yaml.
default_route_networks: []
networks:
External:
subnet: external_subnet


+ 4
- 0
roles/Undercloud.yaml View File

@ -9,6 +9,10 @@
tags:
- primary
- controller
# Define default_route_networks as empty for undercloud where management
# interface is used. On single nic a default route must configured in the
# local subnet definition in undercloud.conf
default_route_networks: []
networks:
External:
subnet: external_subnet


+ 1
- 0
roles/UndercloudMinion.yaml View File

@ -7,6 +7,7 @@
and ironic-conductor via heat using the 'openstack undercloud
minion deploy' command.
CountDefault: 1
default_route_networks: []
tags:
- primary
ServicesDefault:


+ 4
- 0
roles_data_undercloud.yaml View File

@ -12,6 +12,10 @@
tags:
- primary
- controller
# Define default_route_networks as empty for undercloud where management
# interface is used. On single nic a default route must configured in the
# local subnet definition in undercloud.conf
default_route_networks: []
networks:
External:
subnet: external_subnet


Loading…
Cancel
Save