diff --git a/network/config/2-linux-bonds-vlans/role.role.j2.yaml b/network/config/2-linux-bonds-vlans/role.role.j2.yaml index 56aa91dbee..4155e56023 100644 --- a/network/config/2-linux-bonds-vlans/role.role.j2.yaml +++ b/network/config/2-linux-bonds-vlans/role.role.j2.yaml @@ -59,14 +59,9 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} +{%- if network.name in role.default_route_networks %} {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' + default: '' description: default route for the {{network.name_lower}} network type: string {%- endif %} diff --git a/network/config/bond-with-vlans/controller-no-external.j2.yaml b/network/config/bond-with-vlans/controller-no-external.j2.yaml index a3add89b41..8dd8950fd2 100644 --- a/network/config/bond-with-vlans/controller-no-external.j2.yaml +++ b/network/config/bond-with-vlans/controller-no-external.j2.yaml @@ -50,17 +50,6 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -70,6 +59,10 @@ parameters: 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: > diff --git a/network/config/bond-with-vlans/controller-v6.j2.yaml b/network/config/bond-with-vlans/controller-v6.j2.yaml index 0adbf78745..44a77ad29b 100644 --- a/network/config/bond-with-vlans/controller-v6.j2.yaml +++ b/network/config/bond-with-vlans/controller-v6.j2.yaml @@ -48,17 +48,6 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -68,6 +57,10 @@ parameters: 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: > diff --git a/network/config/bond-with-vlans/role.role.j2.yaml b/network/config/bond-with-vlans/role.role.j2.yaml index 6bfbe3d9ff..1510b18668 100644 --- a/network/config/bond-with-vlans/role.role.j2.yaml +++ b/network/config/bond-with-vlans/role.role.j2.yaml @@ -57,17 +57,12 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} +{%- if network.name in role.default_route_networks %} {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' + default: '' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > diff --git a/network/config/multiple-nics/compute-dvr.j2.yaml b/network/config/multiple-nics/compute-dvr.j2.yaml index 915f44c234..8819e19de9 100644 --- a/network/config/multiple-nics/compute-dvr.j2.yaml +++ b/network/config/multiple-nics/compute-dvr.j2.yaml @@ -48,17 +48,6 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -68,6 +57,14 @@ parameters: 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: > diff --git a/network/config/multiple-nics/controller-v6.j2.yaml b/network/config/multiple-nics/controller-v6.j2.yaml index c41ae4be37..7bf39f2c16 100644 --- a/network/config/multiple-nics/controller-v6.j2.yaml +++ b/network/config/multiple-nics/controller-v6.j2.yaml @@ -47,17 +47,6 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -67,6 +56,10 @@ parameters: 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: > diff --git a/network/config/multiple-nics/role.role.j2.yaml b/network/config/multiple-nics/role.role.j2.yaml index 49580ce468..5a1cc1707b 100644 --- a/network/config/multiple-nics/role.role.j2.yaml +++ b/network/config/multiple-nics/role.role.j2.yaml @@ -57,17 +57,12 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} +{%- if network.name in role.default_route_networks %} {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' + default: '' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > diff --git a/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml b/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml index 082ba12f54..ea97af006e 100644 --- a/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml +++ b/network/config/single-nic-linux-bridge-vlans/controller-v6.j2.yaml @@ -47,17 +47,6 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -67,6 +56,10 @@ parameters: 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: > diff --git a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml index 9bbc582d04..d19d423643 100644 --- a/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml +++ b/network/config/single-nic-linux-bridge-vlans/role.role.j2.yaml @@ -57,17 +57,12 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} +{%- if network.name in role.default_route_networks %} {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' + default: '' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > diff --git a/network/config/single-nic-vlans/controller-no-external.j2.yaml b/network/config/single-nic-vlans/controller-no-external.j2.yaml index 31af97cc94..e745040cde 100644 --- a/network/config/single-nic-vlans/controller-no-external.j2.yaml +++ b/network/config/single-nic-vlans/controller-no-external.j2.yaml @@ -50,17 +50,6 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -70,6 +59,10 @@ parameters: 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: > diff --git a/network/config/single-nic-vlans/controller-v6.j2.yaml b/network/config/single-nic-vlans/controller-v6.j2.yaml index 1ce361ecd7..cc8f1340ec 100644 --- a/network/config/single-nic-vlans/controller-v6.j2.yaml +++ b/network/config/single-nic-vlans/controller-v6.j2.yaml @@ -47,17 +47,6 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' - description: default route for the {{network.name_lower}} network - type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > @@ -67,6 +56,10 @@ parameters: 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: > diff --git a/network/config/single-nic-vlans/role.role.j2.yaml b/network/config/single-nic-vlans/role.role.j2.yaml index 5701c0e4b2..76b1de9a17 100644 --- a/network/config/single-nic-vlans/role.role.j2.yaml +++ b/network/config/single-nic-vlans/role.role.j2.yaml @@ -57,17 +57,12 @@ parameters: guaranteed to pass through the data path of the segments in the {{network.name}} network. type: number -{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} +{%- if network.name in role.default_route_networks %} {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ipv6}}' + default: '' description: default route for the {{network.name_lower}} network type: string -{%- elif network.gateway_ip|default(false) %} - {{network.name}}InterfaceDefaultRoute: - default: '{{network.gateway_ip}}' - description: default route for the {{network.name_lower}} network - type: string -{%- endif %} +{%- endif %} {{network.name}}InterfaceRoutes: default: [] description: > diff --git a/network/ports/noop.yaml b/network/ports/noop.yaml index 7b4ee2ebe5..d572371aeb 100644 --- a/network/ports/noop.yaml +++ b/network/ports/noop.yaml @@ -76,3 +76,6 @@ outputs: description: The maximum transmission unit (MTU) value: get_param: ControlPlaneMtu + gateway_ip: # Here for compatibility + description: Gateway IP of the ports subnet + value: '' diff --git a/network/ports/port.j2 b/network/ports/port.j2 index 587da45b32..5fee4f2018 100644 --- a/network/ports/port.j2 +++ b/network/ports/port.j2 @@ -107,3 +107,7 @@ outputs: description: The maximum transmission unit (MTU) value: get_attr: [{{network.name}}Port, network, mtu] + gateway_ip: + description: Gateway IP of the ports subnet + value: + get_attr: [{{network.name}}Port, subnets, 0, gateway_ip] \ No newline at end of file diff --git a/network/ports/port_from_pool.j2 b/network/ports/port_from_pool.j2 index cdcd554a1a..d20e6d74b4 100644 --- a/network/ports/port_from_pool.j2 +++ b/network/ports/port_from_pool.j2 @@ -84,4 +84,11 @@ outputs: mtu: description: The maximum transmission unit (MTU) value: {{network.mtu|default('1500')}} + gateway_ip: + description: Gateway IP of the ports subnet +{%- if network.ipv6|default(false) and network.gateway_ipv6|default(false) %} + value: {{network.gateway_ipv6|default('')}} +{%- else %} + value: {{network.gateway_ip|default('')}} +{%- endif %} diff --git a/puppet/role.role.j2.yaml b/puppet/role.role.j2.yaml index 60281aa770..eec4d9e1dc 100644 --- a/puppet/role.role.j2.yaml +++ b/puppet/role.role.j2.yaml @@ -542,6 +542,9 @@ resources: - {get_param: {{network.name}}InterfaceRoutes} - {get_attr: [{{network.name}}Port, host_routes]} {{network.name}}Mtu: {get_attr: [{{network.name}}Port, mtu]} + {%- if network.name in role.default_route_networks %} + {{network.name}}InterfaceDefaultRoute: {get_attr: [{{network.name}}Port, gateway_ip]} + {%- endif %} {%- endif %} {%- endfor %} diff --git a/releasenotes/notes/use-subnet-attr-interface-default-route-2578a4d292901024.yaml b/releasenotes/notes/use-subnet-attr-interface-default-route-2578a4d292901024.yaml new file mode 100644 index 0000000000..a95bd430e6 --- /dev/null +++ b/releasenotes/notes/use-subnet-attr-interface-default-route-2578a4d292901024.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + The *get_attr* function is now used to read the ``gateway_ip`` of a ports + subnet. The gateway_ip value is passed to nic config templates using the + ``%network%InterfaceDefaultRoute`` parameter. (This parameter is only used + if the network is present in the roles ``default_route_networks``.) Using + *get_attr* ensures that the correct gateway ip address is used when + networks have multiple subnets.