[noha] Parameterize network configuration 23/60623/6
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Sat, 4 Aug 2018 05:29:15 +0000 (07:29 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 16 Aug 2018 14:29:59 +0000 (16:29 +0200)
- odl01: Use a bridge for br-ctl to allow tagged mgmt;
- ctl01: Use bridges for br-ctl, br-ext;
- ctl01: Use mtu 1500 since jumbo frames seems to break nova cell
  discovery;

JIRA: FUEL-382

Change-Id: I9bf48711930cac77a089e4d7b7ba98924dd161ee
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
13 files changed:
mcp/reclass/classes/cluster/.gitignore
mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml
mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-odl-noha/opendaylight/control_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2
mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml with 78% similarity]
mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2
mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2
mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/gateway.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/gateway.yml with 91% similarity]
mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml.j2
mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml with 77% similarity]

index 437712e..7336893 100644 (file)
@@ -27,3 +27,4 @@ mcp-odl-noha/infra/config.yml
 mcp-*-noha/openstack/compute.yml
 mcp-common-noha/infra/init.yml
 mcp-common-noha/init_options.yml
+mcp-*-noha/openstack/gateway.yml
index b6cba0c..38f5768 100644 (file)
@@ -7,6 +7,11 @@
 ##############################################################################
 {#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
 {%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.cmp001.nic_mgmt: True, nm.cmp001.nic_private: True } %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
+{%- set vlans = { nm.vlan_mgmt: nm.cmp001.nic_mgmt, vlan_private_start: nm.cmp001.nic_private } %}
 ---
 parameters:
   _param:
@@ -19,9 +24,6 @@ parameters:
 {%- else %}
     ~cinder_lvm_devices: ['/dev/sda1']
 {%- endif %}
-    primary_interface: {{ nm.cmp001.nic_mgmt }}
-    tenant_interface: {{ nm.cmp001.nic_private }}
-    external_interface: {{ nm.cmp001.nic_public }}
   linux:
     network:
       bridge: openvswitch
@@ -35,17 +37,16 @@ parameters:
           netmask: ${_param:opnfv_net_admin_mask}
           mtu: ${_param:interface_mtu}
           noifupdown: true
-        primary_interface:
-          enabled: true
-          name: ${_param:primary_interface}
-          proto: manual
-          type: eth
-        tenant_interface:
-          enabled: true
-          name: ${_param:tenant_interface}
-          mtu: ${_param:interface_mtu}
-          proto: manual
-          type: eth
+
+{#- prevent duplicates for tagged mgmt on the same physical interface as PXE/admin #}
+{%- if nm.cmp001.nic_admin in nics %}
+  {%- do nics.pop(nm.cmp001.nic_admin) %}
+{%- endif %}
+
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
+
         br-mgmt:
           enabled: true
           type: bridge
@@ -53,4 +54,4 @@ parameters:
           address: ${_param:single_address}
           netmask: ${_param:opnfv_net_mgmt_mask}
           use_interfaces:
-            - ${_param:primary_interface}
+            - {{ ma.interface_str(nm.cmp001.nic_mgmt, nm.vlan_mgmt) }}
index 8ba9c69..c39249b 100644 (file)
@@ -67,6 +67,7 @@ classes:
   - cluster.mcp-common-noha.openstack_control_pdf
 parameters:
   _param:
+    interface_mtu: 1500
     linux_system_codename: xenial
     ceilometer_create_gnocchi_resources: 'True'
   linux:
index 503bbec..7a1c353 100644 (file)
@@ -6,6 +6,10 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.ctl01.nic_mgmt: True, nm.ctl01.nic_public: True } %}
+{%- set vlans = { nm.vlan_mgmt: nm.ctl01.nic_mgmt, nm.vlan_public: nm.ctl01.nic_public } %}
 ---
 parameters:
   linux:
@@ -19,19 +23,33 @@ parameters:
           address: ${_param:pxe_admin_address}
           netmask: ${_param:opnfv_net_admin_mask}
           noifupdown: true
-        single_int:
+
+{#- prevent duplicates for tagged mgmt on the same physical interface as PXE/admin #}
+{%- if nm.ctl01.nic_admin in nics %}
+  {%- do nics.pop(nm.ctl01.nic_admin) %}
+{%- endif %}
+
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
+
+        br-ctl:
           enabled: true
-          name: {{ nm.ctl01.nic_mgmt }}
-          type: eth
+          type: bridge
           proto: static
           address: ${_param:single_address}
           netmask: ${_param:opnfv_net_mgmt_mask}
-        public_int:
+          noifupdown: true
+          use_interfaces:
+            - {{ ma.interface_str(nm.ctl01.nic_mgmt, nm.vlan_mgmt) }}
+        br-ext:
           enabled: true
-          name: {{ nm.ctl01.nic_public }}
-          type: eth
+          type: bridge
           proto: static
           address: ${_param:cluster_public_host}
           netmask: ${_param:opnfv_net_public_mask}
           gateway: ${_param:opnfv_net_public_gw}
           name_servers: {{ nm.dns_public }}
+          use_interfaces:
+            - {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }}
+          noifupdown: true
index 5b10442..972069e 100644 (file)
@@ -7,11 +7,12 @@
 ##############################################################################
 ---
 {%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.ctl01.nic_mgmt: True, nm.ctl01.nic_private: True } %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
+{%- set vlans = { nm.vlan_mgmt: nm.ctl01.nic_mgmt, vlan_private_start: nm.ctl01.nic_private } %}
 parameters:
-  _param:
-    primary_interface: {{ nm.ctl01.nic_mgmt }}
-    tenant_interface: {{ nm.ctl01.nic_private }}
-    external_interface: {{ nm.ctl01.nic_public }}
   linux:
     network:
       bridge: openvswitch
@@ -25,21 +26,19 @@ parameters:
           netmask: ${_param:opnfv_net_admin_mask}
           mtu: ${_param:interface_mtu}
           noifupdown: true
-        primary_interface:
+
+{#- prevent duplicates for tagged mgmt on the same physical interface as PXE/admin #}
+{%- if nm.ctl01.nic_admin in nics %}
+  {%- do nics.pop(nm.ctl01.nic_admin) %}
+{%- endif %}
+
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
+
+        ovs_port_{{ nm.ctl01.nic_public }}:
           enabled: true
-          name: ${_param:primary_interface}
-          mtu: ${_param:interface_mtu}
-          proto: manual
-          type: eth
-        tenant_interface:
-          enabled: true
-          name: ${_param:tenant_interface}
-          mtu: ${_param:interface_mtu}
-          proto: manual
-          type: eth
-        external_interface:
-          enabled: true
-          name: ${_param:external_interface}
+          name: {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }}
           proto: manual
           ovs_port_type: OVSPort
           type: ovs_port
@@ -53,7 +52,7 @@ parameters:
           address: ${_param:external_address}
           netmask: ${_param:opnfv_net_public_mask}
           use_interfaces:
-            - ${_param:external_interface}
+            - {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }}
           gateway: ${_param:opnfv_net_public_gw}
           name_servers: {{ nm.dns_public }}
         br-mgmt:
@@ -64,4 +63,4 @@ parameters:
           netmask: ${_param:opnfv_net_mgmt_mask}
           mtu: ${_param:interface_mtu}
           use_interfaces:
-            - ${_param:primary_interface}
+            - {{ ma.interface_str(nm.ctl01.nic_mgmt, nm.vlan_mgmt) }}
index bd7c910..5e647d0 100644 (file)
@@ -6,6 +6,10 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{#- Filter-out NIC duplicates by constructing a dict (used NICs only) #}
+{%- set nics = { nm.ctl01.nic_mgmt: True } %}
+{%- set vlans = { nm.vlan_mgmt: nm.ctl01.nic_mgmt } %}
 ---
 parameters:
   linux:
@@ -18,14 +22,26 @@ parameters:
           type: eth
           address: ${_param:pxe_admin_address}
           netmask: ${_param:opnfv_net_admin_mask}
+          mtu: ${_param:interface_mtu}
+          noifupdown: true
           gateway: {{ nm.net_admin_gw }}
           name_servers:
             - {{ nm.net_admin_gw }}
-          noifupdown: true
-        single_int:
+
+{#- prevent duplicates for tagged mgmt on the same physical interface as PXE/admin #}
+{%- if nm.ctl01.nic_admin in nics %}
+  {%- do nics.pop(nm.ctl01.nic_admin) %}
+{%- endif %}
+
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
+
+        br-ctl:
           enabled: true
-          name: {{ nm.ctl01.nic_mgmt }}
-          type: eth
+          type: bridge
           proto: static
           address: ${_param:single_address}
           netmask: ${_param:opnfv_net_mgmt_mask}
+          use_interfaces:
+            - {{ ma.interface_str(nm.ctl01.nic_mgmt, nm.vlan_mgmt) }}
index 65792e3..e9c91ea 100644 (file)
@@ -6,6 +6,8 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
 ---
 classes:
   - service.neutron.compute.single
@@ -35,7 +37,7 @@ parameters:
           proto: static
           address: ${_param:tenant_address}
           netmask: ${_param:opnfv_net_private_mask}
-        tenant_interface:
+        {{ nm.cmp001.nic_private }}:
           type: dpdk  # Not a meaningful type, just match 'dpdk' for filtering
 {%- else %}
         br-mesh:
@@ -45,11 +47,11 @@ parameters:
           address: ${_param:tenant_address}
           netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
-            - ${_param:tenant_interface}
+            - {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
 {%- endif %}
-        external_interface:
+        ovs_port_{{ nm.cmp001.nic_public }}:
           enabled: true
-          name: ${_param:external_interface}
+          name: {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
           proto: manual
           ovs_port_type: OVSPort
           type: ovs_port
@@ -63,6 +65,6 @@ parameters:
           address: ${_param:external_address}
           netmask: ${_param:opnfv_net_public_mask}
           use_interfaces:
-            - ${_param:external_interface}
+            - {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
           gateway: ${_param:opnfv_net_public_gw}
           name_servers: {{ nm.dns_public }}
@@ -5,6 +5,9 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+{%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
 ---
 classes:
   - cluster.mcp-common-noha.openstack_gateway
@@ -22,4 +25,4 @@ parameters:
           address: ${_param:tenant_address}
           netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
-            - ${_param:tenant_interface}
+            - {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
index a6b6164..ac35556 100644 (file)
@@ -6,6 +6,8 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
 ---
 classes:
   - service.neutron.compute.ovn.single
@@ -18,9 +20,9 @@ parameters:
   linux:
     network:
       interface:
-        external_interface:
+        ovs_port_{{ nm.cmp001.nic_public }}:
           enabled: true
-          name: ${_param:external_interface}
+          name: {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
           proto: manual
           ovs_port_type: OVSPort
           type: ovs_port
@@ -33,7 +35,7 @@ parameters:
           address: ${_param:tenant_address}
           netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
-            - ${_param:tenant_interface}
+            - {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
         br-floating:
           enabled: true
           type: ovs_bridge
@@ -42,6 +44,6 @@ parameters:
           address: ${_param:external_address}
           netmask: ${_param:opnfv_net_public_mask}
           use_interfaces:
-            - ${_param:external_interface}
+            - {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
           gateway: ${_param:opnfv_net_public_gw}
           name_servers: {{ nm.dns_public }}
index 3e4eece..df29111 100644 (file)
@@ -37,5 +37,5 @@ parameters:
         br-prv:
           enabled: true
           type: dpdk_ovs_bridge
-        tenant_interface:
+        {{ nm.cmp001.nic_private }}:
           type: dpdk  # Not a meaningful type, just match 'dpdk' for filtering
@@ -5,6 +5,7 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+{%- import 'net_map.j2' as nm with context %}
 ---
 classes:
   - cluster.mcp-common-noha.openstack_gateway
@@ -18,7 +19,7 @@ parameters:
   linux:
     network:
       interface:
-        tenant_interface:
+        {{ nm.cmp001.nic_private }}:
           ovs_bridge: br-prv
         br-prv:
           enabled: true
index c949de4..767b308 100644 (file)
@@ -6,6 +6,8 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
 ---
 classes:
   - service.neutron.compute.single
@@ -27,4 +29,4 @@ parameters:
           address: ${_param:tenant_address}
           netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
-            - ${_param:tenant_interface}
+            - {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
@@ -5,6 +5,9 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+{%- import 'net_map.j2' as nm with context %}
+{%- import 'net_macros.j2' as ma with context %}
+{%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
 ---
 classes:
   - cluster.mcp-common-noha.openstack_gateway
@@ -22,4 +25,4 @@ parameters:
           address: ${_param:tenant_address}
           netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
-            - ${_param:tenant_interface}
+            - {{ ma.interface_str(nm.ctl01.nic_private, vlan_private_start) }}