Restore network_data net order nicX contract

With the Heat multi-nic example templates the
loop.index was used to set the nicX for each
interface, and ordered iteration was done over
all networks in network_data.yaml. The ctlplane
was always nic1, then nic2 was mapped to the
first network in the network_data.yaml definition.

When converting multi-nic templates to ansible
the ordering contract between network_data.yaml
and the nicX for each network was broken because
iteration happens only over networks associated
with the role.

This change restores the ordering contract in
the multi-nic templates by iterating over the
'networks_all' group_var which holds all enabled
networks in the order of apperance in
network_data.yaml.

Depends-On: https://review.opendev.org/763497
Closes-Bug: #1904894
Change-Id: I9d2767d7ce4f24645684fde6044c38a4b920dbb1
This commit is contained in:
Harald Jensås 2020-11-20 00:36:01 +01:00
parent 2018260328
commit 15c280787e
6 changed files with 55 additions and 57 deletions

View File

@ -9,8 +9,8 @@ network_config:
use_dhcp: false use_dhcp: false
addresses: addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }} - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
{% for network in role_networks if network not in networks_skip_config %} {% for network in networks_all if network not in networks_skip_config %}
{% if network not in ["External", "Tenant"] %} {% if network not in ["External", "Tenant"] and network in role_networks %}
- type: interface - type: interface
name: nic{{ loop.index +1 }} name: nic{{ loop.index +1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -19,7 +19,7 @@ network_config:
- ip_netmask: - ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% elif 'external_bridge' in role_tags %} {% elif network in role_networks or 'external_bridge' in role_tags %}
- type: ovs_bridge - type: ovs_bridge
{% if network == 'External' %} {% if network == 'External' %}
name: {{ neutron_physical_bridge_name }} name: {{ neutron_physical_bridge_name }}

View File

@ -10,8 +10,8 @@ network_config:
addresses: addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }} - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
{% set nics_used = [1] %} {% set nics_used = [1] %}
{% for network in role_networks if network not in networks_skip_config %} {% for network in networks_all if network not in networks_skip_config %}
{% if network not in ["External", "Tenant"] %} {% if network not in ["External", "Tenant"] and network in role_networks %}
- type: interface - type: interface
name: nic{{ loop.index +1 }} name: nic{{ loop.index +1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -20,7 +20,7 @@ network_config:
- ip_netmask: - ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% elif 'external_bridge' in role_tags %} {% elif network in role_networks or 'external_bridge' in role_tags %}
- type: ovs_bridge - type: ovs_bridge
{% if network == 'External' %} {% if network == 'External' %}
name: {{ neutron_physical_bridge_name }} name: {{ neutron_physical_bridge_name }}

View File

@ -9,9 +9,25 @@ network_config:
use_dhcp: false use_dhcp: false
addresses: addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }} - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
{% set nics_used = [1] %} {% for network in networks_all if network not in networks_skip_config|default([]) %}
{% for network in role_networks if network not in networks_skip_config %} {% if network == 'External' %}
{% if network not in ["External", "Tenant"] %} - type: ovs_bridge
name: {{ neutron_physical_bridge_name }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
dns_servers: {{ ctlplane_dns_nameservers }}
use_dhcp: false
{% if network in role_networks %}
addresses:
- ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% endif %}
members:
- type: interface
name: nic{{ loop.index +1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
primary: true
{% elif network not in ["External", "Tenant"] and network in role_networks %}
- type: interface - type: interface
name: nic{{ loop.index +1 }} name: nic{{ loop.index +1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -20,7 +36,7 @@ network_config:
- ip_netmask: - ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% elif network == 'Tenant' %} {% elif network == 'Tenant' and network in role_networks %}
- type: ovs_bridge - type: ovs_bridge
name: {{ 'br-' ~ networks_lower[network] }} name: {{ 'br-' ~ networks_lower[network] }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -37,21 +53,4 @@ network_config:
use_dhcp: false use_dhcp: false
primary: true primary: true
{% endif %} {% endif %}
{% set _ = nics_used.append(loop.index) %}
{% endfor %} {% endfor %}
- type: ovs_bridge
name: {{ neutron_physical_bridge_name }}
mtu: {{ lookup('vars', networks_lower['External'] ~ '_mtu') }}
dns_servers: {{ ctlplane_dns_nameservers }}
use_dhcp: false
{% if 'External' in role_networks %}
addresses:
- ip_netmask:
{{ lookup('vars', networks_lower['External'] ~ '_ip') }}/{{ lookup('vars', networks_lower['External'] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower['External'] ~ '_host_routes') }}
{% endif %}
members:
- type: interface
name: nic{{nics_used[-1] + 1}}
mtu: {{ lookup('vars', networks_lower['External'] ~ '_mtu') }}
primary: true

View File

@ -9,8 +9,8 @@ network_config:
use_dhcp: false use_dhcp: false
addresses: addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }} - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
{% for network in role_networks if network not in networks_skip_config %} {% for network in networks_all if network not in networks_skip_config %}
{% if network not in ["External", "Tenant"] %} {% if network not in ["External", "Tenant"] and network in role_networks %}
- type: interface - type: interface
name: nic{{ loop.index + 1 }} name: nic{{ loop.index + 1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -23,7 +23,7 @@ network_config:
- ip_netmask: - ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% elif 'external_bridge' in role_tags %} {% elif network in role_networks or 'external_bridge' in role_tags %}
- type: ovs_bridge - type: ovs_bridge
{% if network == 'External' %} {% if network == 'External' %}
name: {{ neutron_physical_bridge_name }} name: {{ neutron_physical_bridge_name }}

View File

@ -10,8 +10,8 @@ network_config:
addresses: addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }} - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
{% set nics_used = [1] %} {% set nics_used = [1] %}
{% for network in role_networks if network not in networks_skip_config %} {% for network in networks_all if network not in networks_skip_config %}
{% if network not in ["External", "Tenant"] %} {% if network not in ["External", "Tenant"] and network in role_networks %}
- type: interface - type: interface
name: nic{{ loop.index + 1 }} name: nic{{ loop.index + 1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -24,7 +24,7 @@ network_config:
- ip_netmask: - ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% elif 'external_bridge' in role_tags %} {% elif network in role_networks or 'external_bridge' in role_tags %}
- type: ovs_bridge - type: ovs_bridge
{% if network == 'External' %} {% if network == 'External' %}
name: {{ neutron_physical_bridge_name }} name: {{ neutron_physical_bridge_name }}

View File

@ -9,9 +9,28 @@ network_config:
use_dhcp: false use_dhcp: false
addresses: addresses:
- ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }} - ip_netmask: {{ ctlplane_ip }}/{{ ctlplane_subnet_cidr }}
{% set nics_used = [1] %} {% for network in networks_all if network not in networks_skip_config|default([]) %}
{% for network in role_networks if network not in networks_skip_config %} {% if network == 'External' %}
{% if network not in ["External", "Tenant"] %} - type: ovs_bridge
name: {{ neutron_physical_bridge_name }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
dns_servers: {{ ctlplane_dns_nameservers }}
use_dhcp: false
members:
- type: interface
name: nic{{ loop.index + 1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
primary: true
{% if network in role_networks %}
- type: vlan
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }}
addresses:
- ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% endif %}
{% elif network not in ["External", "Tenant"] and network in role_networks %}
- type: interface - type: interface
name: nic{{ loop.index + 1 }} name: nic{{ loop.index + 1 }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -24,7 +43,7 @@ network_config:
- ip_netmask: - ip_netmask:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% elif network == 'Tenant' %} {% elif network == 'Tenant' and network in role_networks %}
- type: ovs_bridge - type: ovs_bridge
name: {{ 'br-' ~ networks_lower[network] }} name: {{ 'br-' ~ networks_lower[network] }}
mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }}
@ -44,24 +63,4 @@ network_config:
{{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }} {{ lookup('vars', networks_lower[network] ~ '_ip') }}/{{ lookup('vars', networks_lower[network] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }}
{% endif %} {% endif %}
{% set _ = nics_used.append(loop.index) %}
{% endfor %} {% endfor %}
- type: ovs_bridge
name: {{ neutron_physical_bridge_name }}
mtu: {{ lookup('vars', networks_lower['External'] ~ '_mtu') }}
dns_servers: {{ ctlplane_dns_nameservers }}
use_dhcp: false
members:
- type: interface
name: nic{{nics_used[-1] + 1}}
mtu: {{ lookup('vars', networks_lower['External'] ~ '_mtu') }}
primary: true
{% if 'External' in role_networks %}
- type: vlan
mtu: {{ lookup('vars', networks_lower['External'] ~ '_mtu') }}
vlan_id: {{ lookup('vars', networks_lower['External'] ~ '_vlan_id') }}
addresses:
- ip_netmask:
{{ lookup('vars', networks_lower['External'] ~ '_ip') }}/{{ lookup('vars', networks_lower['External'] ~ '_cidr') }}
routes: {{ lookup('vars', networks_lower['External'] ~ '_host_routes') }}
{% endif %}