Enforce static configuration instead of DHCP 95/56795/21
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Sat, 7 Apr 2018 03:27:48 +0000 (05:27 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Tue, 19 Jun 2018 13:47:11 +0000 (15:47 +0200)
- noha: 'accept_policy: open_mode' to align with ha scenarios;
- s/cmp01/cmp001/g to align all scenarios and allow code reuse;
- rename network params: s/dhcp/mcpcontrol/g, cleanup;
- computes XDF data: drop 'opnfv_*' layer of params, cleanup;
- local vPDF: add comments with default roles by node index;
- parameterize all netmasks;
- drop unused address/netmask for 'proto: manual' interfaces;
- virsh_net: cleanup definitions, remove hardcodes, align IP on
  jumpserver and DHCP range with MaaS for pxebr;
- maas: parameterize hardcoded '/24' cidr for PXE/admin, refactor
  maas.region.machines parameterization;
- merge <all-mcp-arch-common/infra/config_*pdf.yaml.j2> templates;
- move reclass.storage definitions of compute nodes to common dir;
- drop 'openstack_compute_*' reclass params in favor of expanding
  them via j2 directly in reclass.storage params;
- adopt `nm.cluster.has_*_nodes` where possible;
- obsolete `runtime.yml` from reclass model;
- refactor arch-specific reclass param selection;
- remove unused defaults in favor of mandatory IDF properties;
- noha: prepare for baremetal node support in cinder_lvm_devices;
- interfaces: add interface_mtu and 'noifupdown: true' everywhere;
- interfaces: use j2 macros to generate eth/vlan config;
- states cleanup: remove DHCP route disable workaround on prx/cmp;
- allow configuring NTP servers via:
  `idf.fuel.network.ntp_strata_host{1,2}`;
- ovs_bridge: Allow setting gateway, dns-nameservers
- apache: Adjust module list for novcp class inheritance;
- glusterfs PPA: pin with same prio of MCP repos for novcp scenario;

JIRA: FUEL-319
JIRA: FUEL-326
JIRA: FUEL-337

Change-Id: Ia6ad64ba8cade85a75fb22c9a2505decc3834360
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
71 files changed:
docs/release/installation/installation.instruction.rst
mcp/config/labs/local/idf-virtual1.yaml
mcp/config/labs/local/virtual1.yaml
mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2
mcp/config/scenario/os-nosdn-nofeature-noha.yaml
mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2
mcp/config/scenario/os-nosdn-ovs-noha.yaml
mcp/config/scenario/os-odl-nofeature-ha.yaml.j2
mcp/config/scenario/os-odl-nofeature-noha.yaml
mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2
mcp/config/scenario/os-ovn-nofeature-noha.yaml
mcp/config/states/baremetal_init
mcp/config/states/virtual_control_plane
mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch
mcp/patches/reclass-system-salt-model/0003-system.repo-Pin-glusterfs-with-higher-prio.patch [new file with mode: 0644]
mcp/reclass/classes/cluster/.gitignore
mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2 [deleted file]
mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2
mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml [deleted file]
mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml.j2 [moved from mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml with 68% similarity]
mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml [deleted file]
mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml.j2 [new file with mode: 0644]
mcp/reclass/classes/cluster/all-mcp-arch-common/x86_64/init.yml [deleted file]
mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml with 95% similarity]
mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml with 66% similarity]
mcp/reclass/classes/cluster/mcp-common-ha/infra/init.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_novcp.yml.j2 [moved from mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.j2 with 57% similarity]
mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml [deleted file]
mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-common-ha/infra/maas_pdf.yml.j2 with 56% similarity]
mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute.yml
mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/openstack_init.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_biport.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_triport.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/openstack_proxy.yml.j2
mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml with 96% similarity]
mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml with 53% similarity]
mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml
mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml
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-common-noha/openstack_init.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml with 92% similarity]
mcp/reclass/classes/cluster/mcp-odl-ha/infra/config.yml
mcp/reclass/classes/cluster/mcp-odl-ha/infra/maas.yml.j2
mcp/reclass/classes/cluster/mcp-odl-ha/openstack/compute_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-odl-noha/infra/config.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
mcp/reclass/classes/cluster/mcp-ovn-ha/openstack/compute_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml with 86% similarity]
mcp/reclass/classes/cluster/mcp-ovs-dpdk-ha/infra/config.yml
mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/infra/config.yml
mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml with 83% similarity]
mcp/reclass/classes/cluster/mcp-ovs-ha/openstack/compute_pdf.yml.j2
mcp/reclass/classes/cluster/mcp-ovs-noha/infra/config.yml
mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml.j2 [moved from mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml with 73% similarity]
mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml
mcp/salt-formulas/maas/pxe_nat.sls
mcp/scripts/lib_template.sh
mcp/scripts/pharos
mcp/scripts/salt.sh
mcp/scripts/user-data.admin.sh.j2
mcp/scripts/virsh_net/net_mcpcontrol.xml.j2
mcp/scripts/virsh_net/net_mgmt.xml.j2
mcp/scripts/virsh_net/net_public.xml.j2
mcp/scripts/virsh_net/net_pxebr.xml.j2

index 5d4c2cb..94d67c1 100644 (file)
@@ -296,7 +296,7 @@ For virtual deploys all the targets are VMs on the Jumpserver. The deploy script
    +-----------------------+------------------------------------------------------------------------+
    | ctl01                 | Controller VM                                                          |
    +-----------------------+------------------------------------------------------------------------+
-   | cmp01/cmp02           | Compute VMs                                                            |
+   | cmp001/cmp002         | Compute VMs                                                            |
    +-----------------------+------------------------------------------------------------------------+
    | gtw01                 | Gateway VM with neutron services (dhcp agent, L3 agent, metadata, etc) |
    +-----------------------+------------------------------------------------------------------------+
index 79a5fa0..402af98 100644 (file)
@@ -57,6 +57,8 @@ idf:
         private: ~
         public: ~
     network:
+      ntp_strata_host1: 1.se.pool.ntp.org
+      ntp_strata_host2: 0.se.pool.ntp.org
       node:
         # Ordered-list, index should be in sync with node index in PDF
         - interfaces: &interfaces
index e46a2c6..b293b97 100644 (file)
@@ -58,7 +58,7 @@ jumphost:
       vlan: native
 ##############################################################################
 nodes:
-  - name: node-1
+  - name: node-1  # noha ctl01 or ha (novcp) kvm01
     node: &nodeparams
       # Fuel overrides certain params (e.g. cpus, mem) based on node role later
       type: virtual
@@ -102,25 +102,25 @@ nodes:
         mac_address: "00:00:00:00:00:00"
         vlan: native
   ############################################################################
-  - name: node-2
+  - name: node-2  # noha gtw01 or ha (novcp) kvm02
     node: *nodeparams
     disks: *disks
     remote_management: *remotemgmt
     interfaces: *interfaces
   ############################################################################
-  - name: node-3
+  - name: node-3  # noha odl01 / unused or ha (novcp) kvm02
     node: *nodeparams
     disks: *disks
     remote_management: *remotemgmt
     interfaces: *interfaces
   ############################################################################
-  - name: node-4
+  - name: node-4  # cmp001
     node: *nodeparams
     disks: *disks
     remote_management: *remotemgmt
     interfaces: *interfaces
   ############################################################################
-  - name: node-5
+  - name: node-5  # cmp002
     node: *nodeparams
     disks: *disks
     remote_management: *remotemgmt
index a6a641c..2693826 100644 (file)
@@ -6,17 +6,11 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
-{%- set cluster = {'has_virtual_nodes': False} %}
-{%- for node in conf.nodes %}
-  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
-    {%- do cluster.update({'has_baremetal_nodes': True}) %}
-  {%- endif %}
-{%- endfor %}
 ---
 cluster:
   domain: mcp-ovs-ha.local
   states:
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - maas
     - baremetal_init
 {%- endif %}
@@ -28,7 +22,7 @@ cluster:
 virtual:
   nodes:
     - cfg01
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - mas01
 {%- endif %}
 {#- Most likely, controllers will always have the same type and number (3) #}
index 1926d49..5c5e77c 100644 (file)
@@ -16,8 +16,8 @@ virtual:
   nodes:
     - cfg01
     - ctl01
-    - cmp01
-    - cmp02
+    - cmp001
+    - cmp002
     - gtw01
   ctl01:
     vcpus: 4
index f434330..f9ab7c3 100644 (file)
@@ -6,17 +6,11 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
-{%- set cluster = {'has_virtual_nodes': False} %}
-{%- for node in conf.nodes %}
-  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
-    {%- do cluster.update({'has_baremetal_nodes': True}) %}
-  {%- endif %}
-{%- endfor %}
 ---
 cluster:
   domain: mcp-ovs-dpdk-ha.local
   states:
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - maas
     - baremetal_init
 {%- endif %}
@@ -29,7 +23,7 @@ cluster:
 virtual:
   nodes:
     - cfg01
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - mas01
 {%- endif %}
 {#- Most likely, controllers will always have the same type and number (3) #}
index b44647c..19e7946 100644 (file)
@@ -17,17 +17,17 @@ virtual:
   nodes:
     - cfg01
     - ctl01
-    - cmp01
-    - cmp02
+    - cmp001
+    - cmp002
     - gtw01
   ctl01:
     vcpus: 4
     ram: 14336
   gtw01:
     ram: 2048
-  cmp01:
+  cmp001:
     vcpus: 4
     ram: 8192
-  cmp02:
+  cmp002:
     vcpus: 4
     ram: 8192
index 9018adb..c48f18c 100644 (file)
@@ -6,17 +6,11 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
-{%- set cluster = {'has_virtual_nodes': False} %}
-{%- for node in conf.nodes %}
-  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
-    {%- do cluster.update({'has_baremetal_nodes': True}) %}
-  {%- endif %}
-{%- endfor %}
 ---
 cluster:
   domain: mcp-odl-ha.local
   states:
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - maas
     - baremetal_init
 {%- endif %}
@@ -29,7 +23,7 @@ cluster:
 virtual:
   nodes:
     - cfg01
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - mas01
 {%- endif %}
 {#- Most likely, controllers will always have the same type and number (3) #}
index c61abd5..ec04ee8 100644 (file)
@@ -17,8 +17,8 @@ virtual:
   nodes:
     - cfg01
     - ctl01
-    - cmp01
-    - cmp02
+    - cmp001
+    - cmp002
     - gtw01
     - odl01
   ctl01:
index 2f6bd86..218b5de 100644 (file)
@@ -6,17 +6,11 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
-{%- set cluster = {'has_virtual_nodes': False} %}
-{%- for node in conf.nodes %}
-  {%- if not cluster.has_virtual_nodes and node.node.type == 'baremetal' %}
-    {%- do cluster.update({'has_baremetal_nodes': True}) %}
-  {%- endif %}
-{%- endfor %}
 ---
 cluster:
   domain: mcp-ovn-ha.local
   states:
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - maas
     - baremetal_init
 {%- endif %}
@@ -28,7 +22,7 @@ cluster:
 virtual:
   nodes:
     - cfg01
-{%- if cluster.has_baremetal_nodes %}
+{%- if nm.cluster.has_baremetal_nodes %}
     - mas01
 {%- endif %}
 {#- Most likely, controllers will always have the same type and number (3) #}
index d201575..7036340 100644 (file)
@@ -15,14 +15,14 @@ virtual:
   nodes:
     - cfg01
     - ctl01
-    - cmp01
-    - cmp02
+    - cmp001
+    - cmp002
   ctl01:
     vcpus: 4
     ram: 14336
-  cmp01:
+  cmp001:
     vcpus: 5
     ram: 8192
-  cmp02:
+  cmp002:
     vcpus: 5
     ram: 8192
index c023338..6a44b78 100755 (executable)
@@ -31,10 +31,6 @@ wait_for 5.0 "salt -C 'kvm* or cmp*' state.apply opnfv.route_wrapper"
 wait_for 5.0 "salt -C 'cmp*' state.apply linux.network"
 wait_for 30.0 "salt -C 'kvm* or cmp*' test.ping"
 
-# disable dhcp offered routes on compute nodes
-salt -C 'cmp*' file.write /etc/dhcp/dhclient-enter-hooks.d/no-default-route \
-  args='unset new_routers'
-
 salt -C 'kvm* or cmp*' system.reboot
 wait_for 90.0 "salt -C 'kvm* or cmp*' test.ping"
 
index c391cfe..18e6d1c 100755 (executable)
@@ -54,9 +54,6 @@ wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply linux,ntp"
 wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' ssh.set_auth_key ${SUDO_USER} \
   $(awk 'NR==1{print $2}' "$(eval echo "~${SUDO_USER}/.ssh/authorized_keys")")"
 
-# Disable proxy dhcp routes after installation
-salt -C 'prx*' file.write /etc/dhcp/dhclient-enter-hooks.d/no-default-route \
-  args='unset new_routers'
 salt -C 'prx*' state.apply opnfv.route_wrapper
 salt -C 'prx*' system.reboot
 wait_for 30.0 "salt -C 'prx*' test.ping"
index d840e9f..a7b366b 100644 (file)
@@ -17,7 +17,7 @@ new file mode 100644
 index 0000000..c609e45
 --- /dev/null
 +++ b/linux/files/ovs_bridge
-@@ -0,0 +1,13 @@
+@@ -0,0 +1,19 @@
 +auto {{ bridge_name }}
 +allow-ovs {{ bridge_name }}
 +iface {{ bridge_name }} inet static
@@ -31,6 +31,12 @@ index 0000000..c609e45
 +  {%- if bridge.datapath_type is defined %}
 +  ovs_extra set Bridge ${IFACE} datapath_type={{ bridge.datapath_type }}
 +  {%- endif %}
++  {%- if bridge.gateway is defined %}
++  gateway {{ bridge.gateway }}
++  {%- endif %}
++  {%- if bridge.name_servers is defined %}
++  dns-nameservers {{ bridge.name_servers | join(' ') }}
++  {%- endif %}
 diff --git a/linux/files/ovs_port b/linux/files/ovs_port
 index 222ca8e..efb0307 100644
 --- a/linux/files/ovs_port
diff --git a/mcp/patches/reclass-system-salt-model/0003-system.repo-Pin-glusterfs-with-higher-prio.patch b/mcp/patches/reclass-system-salt-model/0003-system.repo-Pin-glusterfs-with-higher-prio.patch
new file mode 100644 (file)
index 0000000..91219f6
--- /dev/null
@@ -0,0 +1,33 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: Copyright (c) 2018 Mirantis Inc., Enea AB and others.
+:
+: All rights reserved. This program and the accompanying materials
+: are made available under the terms of the Apache License, Version 2.0
+: which accompanies this distribution, and is available at
+: http://www.apache.org/licenses/LICENSE-2.0
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 18 Jun 2018 15:53:31 +0200
+Subject: [PATCH] system.repo: Pin glusterfs with higher prio
+
+When both glusterfs PPA repo and MCP repos are used on the same node,
+the MCP repos used to take priority and install a predefined version
+no matter the configuration for GlusterFS PPA.
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ linux/system/repo/glusterfs.yml | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/linux/system/repo/glusterfs.yml b/linux/system/repo/glusterfs.yml
+index fb331f0f..71d063ac 100644
+--- a/linux/system/repo/glusterfs.yml
++++ b/linux/system/repo/glusterfs.yml
+@@ -9,3 +9,7 @@ parameters:
+           architectures: amd64
+           key_id: 3FE869A9
+           key_server: keyserver.ubuntu.com
++          pin:
++          - package: '*'
++            pin: release o=LP-PPA-gluster-glusterfs-${_param:glusterfs_version}
++            priority: 1100
index bc812c2..a7efc57 100644 (file)
@@ -1,7 +1,14 @@
 **/*_pdf.yml
+all-mcp-arch-common/init.yml
+all-mcp-arch-common/opnfv/init.yml
+mcp*common-*/infra/config.yml
 mcp-common-ha/infra/init.yml
+mcp-common-ha/infra/maas.yml
+mcp-common-ha/infra/kvm_novcp.yml
+mcp-common-ha/include/maas_proxy.yml
 mcp-common-ha/openstack_control.yml
-mcp-common-ha/openstack_init.yml
+mcp-common-ha/openstack_telemetry.yml
+mcp*common-*/openstack_init.yml
 mcp-common-ha/openstack_interface_vcp_biport.yml
 mcp-common-ha/openstack_interface_vcp_triport.yml
 mcp-common-ha/openstack_proxy.yml
@@ -11,9 +18,10 @@ mcp-ovs-dpdk-ha/infra/init_vcp.yml
 mcp-ovs-dpdk-ha/infra/kvm.yml
 mcp-odl-ha/infra/init_vcp.yml
 mcp-odl-ha/infra/kvm.yml
+mcp-odl-ha/infra/maas.yml
 mcp-ovn-ha/infra/init_vcp.yml
 mcp-ovn-ha/infra/kvm.yml
 mcp-odl-ha/opendaylight/control.yml
 mcp-odl-ha/openstack/init.yml
 mcp-odl-noha/infra/config.yml
-mcp-odl-noha/openstack/compute.yml
+mcp-*-noha/openstack/compute.yml
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2 b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2
deleted file mode 100644 (file)
index 703d535..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-{%- import 'net_map.j2' as nm with context %}
----
-parameters:
-  reclass:
-    storage:
-      node:
-        # NOTE: Until SDF is in place, assume all computes are identical
-        openstack_compute_node01: &openstack_compute_node01
-          params:
-{#- No partial defaults, all or nothing. Defaults tuned for lf-pod2. #}
-{%- if conf.idf.fuel.reclass is defined %}
-{%- if conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.dpdk is defined %}
-{#- Can't dump json here due to dpdk0_* below, explicitly create yaml #}
-{%- set _dpdk = conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.dpdk %}
-{%- for _i in _dpdk %}
-            {{ _i }}: '"{{ _dpdk[_i] }}"'
-{%- endfor %}
-{%- endif %}
-{%- else %}
-            compute_hugepages_size: 2M
-            compute_hugepages_count: 8192
-            compute_hugepages_mount: /mnt/hugepages_2M
-            compute_kernel_isolcpu: 2,3,10,11
-            compute_dpdk_driver: uio
-            compute_ovs_pmd_cpu_mask: '"0xc04"'
-            compute_ovs_dpdk_socket_mem: '"2048,2048"'
-            compute_ovs_dpdk_lcore_mask: '"0x8"'
-            compute_ovs_memory_channels: '"2"'
-            dpdk0_driver: igb_uio
-            dpdk0_n_rxq: 2
-{%- endif %}
-            dpdk0_name: {{ nm.cmp001.nic_private }}
-            dpdk0_pci: '"{{ nm.cmp001.bus_private }}"'
-        openstack_compute_node02:
-          <<: *openstack_compute_node01
index fb25cc6..82d446b 100644 (file)
@@ -7,27 +7,92 @@
 ##############################################################################
 {%- import 'net_map.j2' as nm with context %}
 ---
+classes:
+  - service.git.client
+  - system.linux.system.single
+  - system.linux.system.repo.mcp.salt
+  - system.reclass.storage.salt
+  - system.salt.master.api
+  - system.salt.master.pkg
+  - system.salt.minion.ca.salt_master
 parameters:
+  _param:
+    salt_master_environment_repository: "https://github.com/tcpcloud"
+    salt_master_environment_revision: master
+    reclass_data_repository: local
+    salt_master_base_environment: prd
+    # yamllint disable-line rule:line-length
+    salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
+  salt:
+    master:
+      accept_policy: open_mode
+      file_recv: true
   reclass:
     storage:
+      data_source:
+        engine: local
       node:
-        # NOTE: Until SDF is in place, assume all computes are identical
-        openstack_compute_node01: &openstack_compute_node01
+        # We support per-node (not only per-role) compute configuration via IDF
+{%- for cmp in range(1, nm.cmp_nodes + 1) %}
+  {%- set n = '%02d' | format(cmp) %}
+  {%- set i = nm.cmp001.idx + cmp - 1 %}
+
+  {%- set admin = nm.net_admin_hosts | length + nm.start_ip[nm.net_admin] + loop.index %}
+  {%- set mgmt = nm.net_mgmt_hosts | length + nm.start_ip[nm.net_mgmt] + loop.index %}
+  {%- set pub = nm.net_public_hosts | length + nm.start_ip[nm.net_public] + loop.index %}
+  {%- set pri = nm.net_private_hosts | length + nm.start_ip[nm.net_private] + loop.index %}
+        openstack_compute_node{{ n }}:
+          name: cmp{{ '%03d' | format(cmp) }}
+          domain: ${_param:cluster_domain}
+          classes:
+            - cluster.${_param:cluster_name}.openstack.compute
           params:
-{#- No partial defaults, all or nothing. Defaults tuned for lf-pod2. #}
-{%- if conf.idf.fuel.reclass is defined %}
-{%- if conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.common is defined %}
-{%- set _common = conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.common %}
-{%- for _i in _common %}
+            pxe_admin_address: {{ nm.net_admin | ipnet_hostaddr(admin) }}
+            control_address: {{ nm.net_mgmt | ipnet_hostaddr(mgmt) }}
+            tenant_address: {{ nm.net_private | ipnet_hostaddr(pri) }}
+            external_address: {{ nm.net_public | ipnet_hostaddr(pub) }}
+            salt_master_host: ${_param:reclass_config_master}
+            linux_system_codename: xenial
+
+  {#- No partial defaults, all or nothing. Defaults tuned for lf-pod2. #}
+  {%- if 'dpdk' in conf.cluster.domain %}
+    {%- if conf.idf.fuel.reclass is defined %}
+      {%- if conf.idf.fuel.reclass.node[i].compute_params.dpdk is defined %}
+        {#- Can't dump json here due to dpdk0_* below, explicitly create yaml #}
+        {%- set _dpdk = conf.idf.fuel.reclass.node[i].compute_params.dpdk %}
+        {%- for _i in _dpdk %}
+            {{ _i }}: '"{{ _dpdk[_i] }}"'
+        {%- endfor %}
+      {%- endif %}
+    {%- else %}
+            compute_hugepages_size: 2M
+            compute_hugepages_count: 8192
+            compute_hugepages_mount: /mnt/hugepages_2M
+            compute_kernel_isolcpu: 2,3,10,11
+            compute_dpdk_driver: uio
+            compute_ovs_pmd_cpu_mask: '"0xc04"'
+            compute_ovs_dpdk_socket_mem: '"2048,2048"'
+            compute_ovs_dpdk_lcore_mask: '"0x8"'
+            compute_ovs_memory_channels: '"2"'
+            dpdk0_driver: igb_uio
+            dpdk0_n_rxq: 2
+    {%- endif %}
+            dpdk0_name: {{ conf.idf.fuel.network.node[i].interfaces[nm.idx_private] }}
+            dpdk0_pci: '"{{ conf.idf.fuel.network.node[i].busaddr[nm.idx_private] }}"'
+  {%- else %}
+    {%- if conf.idf.fuel.reclass is defined %}
+      {%- if conf.idf.fuel.reclass.node[i].compute_params.common is defined %}
+        {%- set _common = conf.idf.fuel.reclass.node[i].compute_params.common %}
+        {%- for _i in _common %}
             {{ _i }}: '"{{ _common[_i] }}"'
-{%- endfor %}
-{%- else %}
+        {%- endfor %}
+      {%- else %}
             dummy_value: ~
-{%- endif %}
-{%- else %}
+      {%- endif %}
+    {%- else %}
             compute_hugepages_size: 1G
             compute_hugepages_count: 16
             compute_hugepages_mount: /mnt/hugepages_1G
-{%- endif %}
-        openstack_compute_node02:
-          <<: *openstack_compute_node01
+    {%- endif %}
+  {%- endif %}
+{%- endfor %}
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml
deleted file mode 100644 (file)
index f9aeb71..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.all-mcp-arch-common.arch
-  - cluster.all-mcp-arch-common.opnfv
@@ -6,19 +6,36 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 ---
+classes:
+  - cluster.all-mcp-arch-common.opnfv
 parameters:
   _param:
     salt_control_trusty_image: ''  # Dummy value, to keep reclass 1.5.2 happy
     salt_control_xenial_image: salt://salt/files/control/images/base_image_opnfv_fuel_vcp.img
 
     # VMs spawned on Foundation Node / Jump Host net ifaces (max 4)
+    # VCP VMs spawned on KVM Hosts net ifaces (max 3)
+    # NOTE(armband): Only x86 VCP VMs spawned via salt.control names differ
+
+{%- if conf.MCP_JUMP_ARCH == 'aarch64' %}
     opnfv_fn_vm_primary_interface: enp1s0
     opnfv_fn_vm_secondary_interface: enp2s0
     opnfv_fn_vm_tertiary_interface: enp3s0
     opnfv_fn_vm_quaternary_interface: enp4s0
 
-    # VCP VMs spawned on KVM Hosts net ifaces (max 3)
-    # NOTE(armband): Only x86 VCP VMs spawned via salt.control names differ
     opnfv_vcp_vm_primary_interface: ${_param:opnfv_fn_vm_primary_interface}
     opnfv_vcp_vm_secondary_interface: ${_param:opnfv_fn_vm_secondary_interface}
     opnfv_vcp_vm_tertiary_interface: ${_param:opnfv_fn_vm_tertiary_interface}
+{%- else %}
+    opnfv_fn_vm_primary_interface: ens3
+    opnfv_fn_vm_secondary_interface: ens4
+    opnfv_fn_vm_tertiary_interface: ens5
+    opnfv_fn_vm_quaternary_interface: ens6
+
+    opnfv_vcp_vm_primary_interface: ens2
+    opnfv_vcp_vm_secondary_interface: ens3
+    opnfv_vcp_vm_tertiary_interface: ens4
+{%- endif %}
+
+    ntp_strata_host1: {{ conf.idf.fuel.network.ntp_strata_host1 or '1.pool.ntp.org' }}
+    ntp_strata_host2: {{ conf.idf.fuel.network.ntp_strata_host2 or '0.pool.ntp.org' }}
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml
deleted file mode 100644 (file)
index 9a47b1c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - cluster.all-mcp-arch-common.opnfv.runtime
-  - cluster.all-mcp-arch-common.opnfv.pod_config
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml.j2 b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml.j2
new file mode 100644 (file)
index 0000000..894d3bc
--- /dev/null
@@ -0,0 +1,29 @@
+##############################################################################
+# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+{%- import 'net_map.j2' as nm with context %}
+---
+parameters:
+  _param:
+    opnfv_net_admin_mask: {{ nm.net_admin | ipnet_netmask }}
+    opnfv_net_mgmt_mask: {{ nm.net_admin | ipnet_netmask }}
+    opnfv_net_private_mask: {{ nm.net_admin | ipnet_netmask }}
+    opnfv_net_public_mask: {{ nm.net_public | ipnet_netmask }}
+
+    opnfv_net_public: {{ nm.net_public }}
+    opnfv_net_public_gw: {{ nm.net_public_gw }}
+    opnfv_net_public_pool_start: {{ nm.net_public_pool_start }}
+    opnfv_net_public_pool_end: {{ nm.net_public_pool_end }}
+
+    opnfv_net_tenant_vlan: "{{ nm.vlan_private | string | replace('-', ':') }}"
+
+{%- for network in nm.networks %}
+{%- for key in nm.hosts[network] %}
+{%- set i = loop.index  + nm.start_ip[network] %}
+    {{key}}: {{ network | ipnet_hostaddr(i) }}
+{%- endfor %}
+{%- endfor %}
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/x86_64/init.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/x86_64/init.yml
deleted file mode 100644 (file)
index a62dd04..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-parameters:
-  _param:
-    salt_control_trusty_image: ''  # Dummy value, to keep reclass 1.5.2 happy
-    salt_control_xenial_image: salt://salt/files/control/images/base_image_opnfv_fuel_vcp.img
-
-    # VMs spawned on Foundation Node / Jump Host net ifaces (max 4)
-    opnfv_fn_vm_primary_interface: ens3
-    opnfv_fn_vm_secondary_interface: ens4
-    opnfv_fn_vm_tertiary_interface: ens5
-    opnfv_fn_vm_quaternary_interface: ens6
-
-    # VCP VMs spawned on KVM Hosts net ifaces (max 3)
-    # NOTE(armband): Only x86 VCP VMs spawned via salt.control names differ
-    opnfv_vcp_vm_primary_interface: ens2
-    opnfv_vcp_vm_secondary_interface: ens3
-    opnfv_vcp_vm_tertiary_interface: ens4
@@ -6,6 +6,7 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 ---
+{%- if 'maas' in conf.cluster.states %}
 parameters:
   # NOTE: Apt proxy is set by curtin, Salt minion proxy is configured below,
   # only enable proxy via /etc/environment if you need it for smth else
@@ -23,3 +24,4 @@ parameters:
           enabled: true
           http: http://${_param:infra_maas_node01_deploy_address}:8000
           https: http://${_param:infra_maas_node01_deploy_address}:8000
+{%- endif %}
@@ -5,16 +5,10 @@
 # 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:
-  - service.git.client
-  - system.linux.system.single
-  - system.linux.system.repo.mcp.salt
   - system.linux.system.repo.saltstack.xenial
-  - system.salt.master.api
-  - system.salt.master.pkg
-  - system.salt.minion.ca.salt_master
-  - system.reclass.storage.salt
   - system.reclass.storage.system.physical_control_cluster
   - system.reclass.storage.system.openstack_control_cluster
   - system.reclass.storage.system.openstack_proxy_cluster
@@ -26,43 +20,38 @@ classes:
   # - system.reclass.storage.system.stacklight_telemetry_cluster
   - system.reclass.storage.system.infra_maas_single
   - cluster.mcp-common-ha.include.lab_proxy_pdf
+  - cluster.all-mcp-arch-common.infra.config_pdf
 parameters:
   _param:
-    salt_master_base_environment: prd
-    reclass_data_repository: local
-    salt_master_environment_repository: "https://github.com/tcpcloud"
-    salt_master_environment_revision: master
+    salt_master_host: ${_param:infra_config_deploy_address}
     single_address: ${_param:infra_config_address}
     deploy_address: ${_param:infra_config_deploy_address}
-    pxe_address: ${_param:opnfv_infra_config_pxe_address}
-    salt_master_host: ${_param:infra_config_deploy_address}
-    # yamllint disable rule:line-length
-    salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
-    dhcp_nic: ${_param:opnfv_fn_vm_primary_interface}
+    pxe_admin_address: ${_param:opnfv_infra_config_pxe_admin_address}
+    mcpcontrol_nic: ${_param:opnfv_fn_vm_primary_interface}
     single_nic: ${_param:opnfv_fn_vm_secondary_interface}
-    pxe_nic: ${_param:opnfv_fn_vm_tertiary_interface}
+    pxe_admin_nic: ${_param:opnfv_fn_vm_tertiary_interface}
   linux:
     network:
       interface:
-        dhcp:
+        mcpcontrol_int:
           enabled: true
           type: eth
           proto: dhcp
-          name: ${_param:dhcp_nic}
+          name: ${_param:mcpcontrol_nic}
         single:
           enabled: true
           type: eth
           proto: static
           name: ${_param:single_nic}
           address: ${_param:single_address}
-          netmask: 255.255.255.0
-        pxe:
+          netmask: ${_param:opnfv_net_mgmt_mask}
+        pxe_admin_int:
           enabled: true
           type: eth
           proto: static
-          name: ${_param:pxe_nic}
-          address: ${_param:pxe_address}
-          netmask: 255.255.255.0
+          name: ${_param:pxe_admin_nic}
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
   salt:
     master:
       accept_policy: open_mode
@@ -71,21 +60,27 @@ parameters:
       command_timeout: 20
   reclass:
     storage:
-      data_source:
-        engine: local
       node:
+        # NOTE: compute nodes definitions are defined in <all-mcp-arch-common/infra>
         infra_kvm_node01:
           params:
             keepalived_vip_priority: 100
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_infra_kvm_node01_pxe_admin_address}
         infra_kvm_node02:
+{%- if not conf.MCP_VCP %}
+          classes:
+            - cluster.mcp-common-ha.infra.kvm_novcp
+{%- endif %}
           params:
             keepalived_vip_priority: 101
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_infra_kvm_node02_pxe_admin_address}
         infra_kvm_node03:
           params:
             keepalived_vip_priority: 102
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_infra_kvm_node03_pxe_admin_address}
         openstack_telemetry_node01:
           params:
             linux_system_codename: xenial
@@ -93,29 +88,37 @@ parameters:
             # to prevent race conditions
             ceilometer_create_gnocchi_resources: true
             redis_cluster_role: 'master'
+            pxe_admin_address: ${_param:opnfv_openstack_telemetry_node01_pxe_admin_address}
         openstack_telemetry_node02:
           params:
             linux_system_codename: xenial
             redis_cluster_role: 'slave'
+            pxe_admin_address: ${_param:opnfv_openstack_telemetry_node02_pxe_admin_address}
         openstack_telemetry_node03:
           params:
             linux_system_codename: xenial
             redis_cluster_role: 'slave'
+            pxe_admin_address: ${_param:opnfv_openstack_telemetry_node03_pxe_admin_address}
         openstack_message_queue_node01:
           params:
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_openstack_message_queue_node01_pxe_admin_address}
         openstack_message_queue_node02:
           params:
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_openstack_message_queue_node02_pxe_admin_address}
         openstack_message_queue_node03:
           params:
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_openstack_message_queue_node03_pxe_admin_address}
         openstack_proxy_node01:
           params:
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_openstack_proxy_node01_pxe_admin_address}
         openstack_proxy_node02:
           params:
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_openstack_proxy_node02_pxe_admin_address}
         # stacklight_log_node01:
         #   classes:
         #     - system.elasticsearch.client.single
@@ -130,46 +133,28 @@ parameters:
             linux_system_codename: xenial
             # NOTE: When VCP is present, external_address is not used
             external_address: ${_param:openstack_proxy_node01_address}
+            pxe_admin_address: ${_param:opnfv_openstack_control_node01_pxe_admin_address}
         openstack_control_node02:
           params:
             linux_system_codename: xenial
             external_address: 0.0.0.0
+            pxe_admin_address: ${_param:opnfv_openstack_control_node02_pxe_admin_address}
         openstack_control_node03:
           params:
             linux_system_codename: xenial
             external_address: ${_param:openstack_proxy_node02_address}
+            pxe_admin_address: ${_param:opnfv_openstack_control_node03_pxe_admin_address}
         openstack_database_node01:
           classes:
             - cluster.mcp-common-ha.openstack_database_init
           params:
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_openstack_database_node01_pxe_admin_address}
         openstack_database_node02:
           params:
             linux_system_codename: xenial
+            pxe_admin_address: ${_param:opnfv_openstack_database_node02_pxe_admin_address}
         openstack_database_node03:
           params:
             linux_system_codename: xenial
-        openstack_compute_node01:
-          name: ${_param:openstack_compute_node01_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-            - cluster.${_param:cluster_name}.openstack.compute
-          params:
-            salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
-            control_address: ${_param:openstack_compute_node01_control_address}
-            single_address: ${_param:openstack_compute_node01_single_address}
-            tenant_address: ${_param:openstack_compute_node01_tenant_address}
-            external_address: ${_param:openstack_compute_node01_external_address}
-        openstack_compute_node02:
-          name: ${_param:openstack_compute_node02_hostname}
-          domain: ${_param:cluster_domain}
-          classes:
-            - cluster.${_param:cluster_name}.openstack.compute
-          params:
-            salt_master_host: ${_param:reclass_config_master}
-            linux_system_codename: xenial
-            control_address: ${_param:openstack_compute_node02_control_address}
-            single_address: ${_param:openstack_compute_node02_single_address}
-            tenant_address: ${_param:openstack_compute_node02_tenant_address}
-            external_address: ${_param:openstack_compute_node02_external_address}
+            pxe_admin_address: ${_param:opnfv_openstack_database_node03_pxe_admin_address}
index 8c601f6..c01042f 100644 (file)
@@ -19,14 +19,14 @@ parameters:
     cluster_domain: ${_param:cluster_name}.local
     # stacklight_environment: ${_param:cluster_domain}
     reclass_data_revision: master
-    reclass_config_master: ${_param:opnfv_infra_config_pxe_address}
+    reclass_config_master: ${_param:opnfv_infra_config_pxe_admin_address}
     cluster_public_host: ${_param:openstack_proxy_address}
     infra_config_hostname: cfg01
     infra_maas_database_password: opnfv_secret
 
     # infra service addresses
     infra_config_address: ${_param:opnfv_infra_config_address}
-    infra_config_deploy_address: ${_param:opnfv_salt_master_ip}
+    infra_config_deploy_address: {{ conf.SALT_MASTER }}
     infra_maas_node01_address: ${_param:opnfv_infra_maas_node01_address}
     infra_maas_node01_deploy_address: ${_param:opnfv_infra_maas_node01_deploy_address}
 
@@ -47,9 +47,6 @@ parameters:
     infra_kvm_node02_hostname: kvm02
     infra_kvm_node03_hostname: kvm03
 
-    ntp_strata_host1: 1.pool.ntp.org
-    ntp_strata_host2: 0.pool.ntp.org
-
     # Interface definitions
     reclass:
       storage:
@@ -64,9 +61,11 @@ parameters:
         openstack_proxy_node01:
           params:
             control_address: ${_param:openstack_proxy_node01_control_address}
+            pxe_admin_address: ${_param:opnfv_openstack_proxy_node01_pxe_admin_address}
         openstack_proxy_node02:
           params:
             control_address: ${_param:openstack_proxy_node02_control_address}
+            pxe_admin_address: ${_param:opnfv_openstack_proxy_node02_pxe_admin_address}
   linux:
     system:
       apt:
@@ -5,11 +5,15 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
+{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #}
+{#- This class should only be inherited in NOVCP scenarios for kvm02 #}
+{%- import 'net_map.j2' as nm with context %}
 ---
-{#- conf.MCPCONTROL_NET & co are mandatory, defaults are set via globals.sh #}
 parameters:
-  _param:
-    opnfv_salt_master_ip: {{ conf.SALT_MASTER }}
-    opnfv_maas_mcp_address: {{ conf.MAAS_IP }}
-    opnfv_net_mcpcontrol: {{ conf.MCPCONTROL_NET }}
-    opnfv_net_mcpcontrol_mask: {{ conf.MCPCONTROL_PREFIX | netmask }}
+  linux:
+    network:
+      interface:
+        br-mgmt:
+          gateway: {{ nm.net_admin_gw }}
+          name_servers:
+            - {{ nm.net_admin_gw }}
index 97166c6..6754d13 100644 (file)
@@ -7,60 +7,52 @@
 ##############################################################################
 {#- 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.ctl01.nic_admin: True, nm.ctl01.nic_mgmt: True, nm.ctl01.nic_public: True } %}
 {%- set vlans = { nm.vlan_admin: nm.ctl01.nic_admin, nm.vlan_mgmt: nm.ctl01.nic_mgmt, nm.vlan_public: nm.ctl01.nic_public } %}
 ---
 parameters:
+  _param:
+    interface_mtu: 1500
   linux:
     network:
       interface:
-{%- for nic in nics %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-          proto: manual
-          address: 0.0.0.0
-          netmask: 255.255.255.0
-          name: {{ nic }}
-          noifupdown: true
-{%- endfor %}
 
-{%- for vlan in vlans %}
-    {%- if vlan | int > 0 %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-          noifupdown: true
-    {%- endif %}
-{%- endfor %}
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
 
         br-mgmt:
           enabled: true
-          proto: dhcp
+          proto: static
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
+{%- if conf.MCP_VCP %}
+{#- For NOVCP scenarios, kvm02 gateway will be added via kvm_novcp class #}
+          gateway: {{ nm.net_admin_gw }}
+          name_servers:
+            - {{ nm.net_admin_gw }}
+{%- endif %}
           type: bridge
           use_interfaces:
-            - {{ nm.ctl01.nic_admin }}{% if nm.vlan_admin | int > 0 %}.{{ nm.vlan_admin }}{% endif %}
+            - {{ ma.interface_str(nm.ctl01.nic_admin, nm.vlan_admin) }}
           noifupdown: true
         br-ctl:
           enabled: true
           type: bridge
           proto: static
           address: ${_param:single_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_mgmt_mask}
           use_interfaces:
-            - {{ nm.ctl01.nic_mgmt }}{% if nm.vlan_mgmt | int > 0 %}.{{ nm.vlan_mgmt }}{% endif %}
+            - {{ ma.interface_str(nm.ctl01.nic_mgmt, nm.vlan_mgmt) }}
           noifupdown: true
+{#- For NOVCP scenarios, kvm{01,03} external gateway will be added via triport class #}
         br-ex:
           enabled: true
           proto: manual
-          address: 0.0.0.0
           netmask: ${_param:opnfv_net_public_mask}
           type: bridge
           use_interfaces:
-            - {{ nm.ctl01.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %}
+            - {{ ma.interface_str(nm.ctl01.nic_public, nm.vlan_public) }}
           noifupdown: true
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml
deleted file mode 100644 (file)
index 36c674b..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-##############################################################################
-# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-classes:
-  - system.maas.region.single
-  - service.maas.cluster.single
-  - cluster.mcp-common-ha.include.lab_proxy_pdf
-  - cluster.mcp-common-ha.infra.maas_pdf
-parameters:
-  _param:
-    dhcp_interface: ${_param:opnfv_fn_vm_primary_interface}
-    primary_interface: ${_param:opnfv_fn_vm_secondary_interface}
-    pxe_interface: ${_param:opnfv_fn_vm_tertiary_interface}
-    interface_mtu: 1500
-    # MaaS has issues using MTU > 1500 for PXE interface
-    pxe_interface_mtu: 1500
-    linux_system_codename: xenial
-    maas_admin_username: opnfv
-    maas_admin_password: opnfv_secret
-    maas_db_password: opnfv_secret
-    dns_server01: ${_param:opnfv_dns_server01}
-    single_address: ${_param:infra_maas_node01_deploy_address}
-    hwe_kernel: 'hwe-16.04'
-  maas:
-    region:
-      salt_master_ip: ${_param:reclass_config_master}
-      domain: ${_param:cluster_domain}
-      maas_config:
-        commissioning_distro_series: 'xenial'
-        default_distro_series: 'xenial'
-        default_osystem: 'ubuntu'
-        default_storage_layout: 'lvm'
-        enable_http_proxy: true
-        disk_erase_with_secure_erase: false
-        dnssec_validation: 'no'
-        enable_third_party_drivers: true
-        network_discovery: 'enabled'
-        default_min_hwe_kernel: ${_param:hwe_kernel}
-    cluster:
-      saltstack_repo_xenial: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/ xenial main"
-  linux:
-    network:
-      interface:
-        dhcp_interface:
-          enabled: true
-          name: ${_param:dhcp_interface}
-          type: eth
-          proto: dhcp
-        primary_interface:
-          enabled: true
-          name: ${_param:primary_interface}
-          mtu: ${_param:interface_mtu}
-          proto: static
-          address: ${_param:infra_maas_node01_address}
-          netmask: 255.255.255.0
-          type: eth
-        pxe_interface:
-          enabled: true
-          name: ${_param:pxe_interface}
-          mtu: ${_param:pxe_interface_mtu}
-          proto: static
-          address: ${_param:single_address}
-          netmask: 255.255.255.0
-          type: eth
@@ -5,26 +5,42 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
-{%- set cluster_arch = [] %}
-{%- for node in conf.nodes %}
-  {%- if node.node.arch not in cluster_arch %}
-    {%- do cluster_arch.append(node.node.arch) %}
-  {%- endif %}
-{%- endfor %}
-{%- set net_admin = [conf.idf.net_config.admin.network,
-                     conf.idf.net_config.admin.mask] | join("/") %}
+{%- import 'net_map.j2' as nm with context %}
 ---
+# NOTE: pod_config is generated and transferred into its final location on
+# cfg01 only during deployment to prevent leaking sensitive data
+classes:
+  - system.maas.region.single
+  - service.maas.cluster.single
+  - cluster.mcp-common-ha.include.lab_proxy_pdf
+  - cluster.all-mcp-arch-common.opnfv.pod_config
 parameters:
+  _param:
+    mcpcontrol_interface: ${_param:opnfv_fn_vm_primary_interface}
+    primary_interface: ${_param:opnfv_fn_vm_secondary_interface}
+    pxe_admin_interface: ${_param:opnfv_fn_vm_tertiary_interface}
+    interface_mtu: 1500
+    # MaaS has issues using MTU > 1500 for PXE interface
+    pxe_admin_interface_mtu: 1500
+    linux_system_codename: xenial
+    maas_admin_username: opnfv
+    maas_admin_password: opnfv_secret
+    maas_db_password: opnfv_secret
+    dns_server01: '{{ nm.dns_public[0] }}'
+    single_address: ${_param:infra_maas_node01_deploy_address}
+    hwe_kernel: 'hwe-16.04'
+    opnfv_maas_timeout_comissioning: {{ nm.maas_timeout_comissioning }}
+    opnfv_maas_timeout_deploying: {{ nm.maas_timeout_deploying }}
   maas:
     region:
       subnets:
-        {{ net_admin }}:
-          name: {{ net_admin }}
-          cidr: {{ net_admin }}
+        {{ nm.net_admin }}:
+          name: {{ nm.net_admin }}
+          cidr: {{ nm.net_admin }}
           gateway_ip: ${_param:single_address}
           iprange:
-            start: ${_param:opnfv_infra_maas_pxe_start_address}
-            end: ${_param:opnfv_infra_maas_pxe_end_address}
+            start: {{ nm.net_admin_pool_start }}
+            end: {{ nm.net_admin_pool_end }}
             type: dynamic
           vlans:
             untagged:
@@ -32,10 +48,10 @@ parameters:
               dhcp_on: true
               primary_rack: ${_param:infra_maas_node01_hostname}
       # Space-separated list of dpkg architectures to be supported by MaaS
-      opnfv_arches:{%- for arch in cluster_arch %} {{ arch | dpkg_arch }}{%- endfor %}
+      opnfv_arches:{%- for arch in nm.cluster.arch %} {{ arch | dpkg_arch }}{%- endfor %}
       sshprefs:
         - '{{ conf.MAAS_SSH_KEY }}'
-{%- if 'aarch64' in cluster_arch %}
+{%- if 'aarch64' in nm.cluster.arch %}
       package_repositories:
         armband:
           name: armband
@@ -92,3 +108,42 @@ parameters:
           {%- endif %}
       {%- endif %}
       {%- endfor %}
+      salt_master_ip: ${_param:reclass_config_master}
+      domain: ${_param:cluster_domain}
+      maas_config:
+        commissioning_distro_series: 'xenial'
+        default_distro_series: 'xenial'
+        default_osystem: 'ubuntu'
+        default_storage_layout: 'lvm'
+        enable_http_proxy: true
+        disk_erase_with_secure_erase: false
+        dnssec_validation: 'no'
+        enable_third_party_drivers: true
+        network_discovery: 'enabled'
+        default_min_hwe_kernel: ${_param:hwe_kernel}
+    cluster:
+      saltstack_repo_xenial: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2017.7/ xenial main"
+  linux:
+    network:
+      interface:
+        mcpcontrol_interface:
+          enabled: true
+          name: ${_param:mcpcontrol_interface}
+          type: eth
+          proto: dhcp
+        primary_interface:
+          enabled: true
+          name: ${_param:primary_interface}
+          mtu: ${_param:interface_mtu}
+          proto: static
+          address: ${_param:infra_maas_node01_address}
+          netmask: ${_param:opnfv_net_mgmt_mask}
+          type: eth
+        pxe_admin_interface:
+          enabled: true
+          name: ${_param:pxe_admin_interface}
+          mtu: ${_param:pxe_admin_interface_mtu}
+          proto: static
+          address: ${_param:single_address}
+          netmask: ${_param:opnfv_net_admin_mask}
+          type: eth
index c860546..4a0764f 100644 (file)
@@ -35,6 +35,7 @@ parameters:
     keepalived_vip_interface: br-ctl
     keepalived_vip_virtual_router_id: 69
     linux_system_codename: xenial
+    single_address: ${_param:control_address}
     glusterfs_version: '3.13'
   glusterfs:
     client:
index fd51f5f..396334c 100644 (file)
@@ -7,9 +7,10 @@
 ##############################################################################
 {#- 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_admin: True, nm.cmp001.nic_mgmt: True } %}
-{%- set vlans = { nm.vlan_admin: nm.cmp001.nic_admin, nm.vlan_mgmt: nm.cmp001.nic_mgmt } %}
+{%- set nics = { nm.cmp001.nic_mgmt: True } %}
+{%- set vlans = { nm.vlan_mgmt: nm.cmp001.nic_mgmt } %}
 ---
 parameters:
   _param:
@@ -26,49 +27,28 @@ parameters:
     network:
       bridge: openvswitch
       interface:
-{%- for nic in nics %}
-    {%- if nic == nm.cmp001.nic_admin %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-          proto: dhcp
-          name: {{ nic }}
-    {%- else %}
-        {{ nic }}:
+        # PXE/admin is always untagged on computes
+        pxe_admin_int:
           enabled: true
+          name: {{ nm.cmp001.nic_admin }}
+          proto: static
           type: eth
-          proto: manual
-          address: 0.0.0.0
-          {%- if nic == nm.cmp001.nic_public %}
-          netmask: ${_param:opnfv_net_public_mask}
-          {%- else %}
-          netmask: 255.255.255.0
-          {%- endif %}
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
           mtu: ${_param:interface_mtu}
-          name: {{ nic }}
-    {%- endif %}
-{%- endfor %}
 
-{%- for vlan in vlans %}
-    {%- if vlan | int > 0 %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
 
         br-ctl:
           enabled: true
           type: bridge
           proto: static
           address: ${_param:single_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_mgmt_mask}
           use_interfaces:
-            - {{ nm.cmp001.nic_mgmt }}{% if nm.vlan_mgmt | int > 0 %}.{{ nm.vlan_mgmt }}{% endif %}
+            - {{ ma.interface_str(nm.cmp001.nic_mgmt, nm.vlan_mgmt) }}
         br-floating:
           enabled: true
           type: ovs_bridge
@@ -77,15 +57,12 @@ parameters:
           address: ${_param:external_address}
           netmask: ${_param:opnfv_net_public_mask}
           use_interfaces:
-            - {{ nm.cmp001.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %}
-          route:
-            public:
-              address: 0.0.0.0
-              netmask: 0.0.0.0
-              gateway: ${_param:opnfv_net_public_gw}
+            - {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
+          gateway: ${_param:opnfv_net_public_gw}
+          name_servers: {{ nm.dns_public }}
         ovs_port_{{ nm.cmp001.nic_public }}:
           enabled: true
-          name: {{ nm.cmp001.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %}
+          name: {{ ma.interface_str(nm.cmp001.nic_public, nm.vlan_public) }}
           proto: manual
           ovs_port_type: OVSPort
           type: ovs_port
index 1870cc4..ceb3622 100644 (file)
@@ -99,9 +99,6 @@ parameters:
     server:
       bind:
         ~ports: ~
-      ~modules:
-        - rewrite
-        - wsgi
   # sync from common-ha kvm role
   glusterfs:
     server:
index 00f2408..9f05790 100644 (file)
@@ -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 %}
 ---
 parameters:
   _param:
@@ -63,19 +64,6 @@ parameters:
     openstack_telemetry_node03_address: ${_param:openstack_control_node03_address}
 {%- endif %}
 
-    # OpenStack Compute
-    openstack_compute_node01_single_address: ${_param:opnfv_openstack_compute_node01_single_address}
-    openstack_compute_node02_single_address: ${_param:opnfv_openstack_compute_node02_single_address}
-    openstack_compute_node03_single_address: ${_param:opnfv_openstack_compute_node03_single_address}
-    openstack_compute_node01_control_address: ${_param:opnfv_openstack_compute_node01_control_address}
-    openstack_compute_node02_control_address: ${_param:opnfv_openstack_compute_node02_control_address}
-    openstack_compute_node03_control_address: ${_param:opnfv_openstack_compute_node03_control_address}
-    openstack_compute_node01_tenant_address: ${_param:opnfv_openstack_compute_node01_tenant_address}
-    openstack_compute_node02_tenant_address: ${_param:opnfv_openstack_compute_node02_tenant_address}
-    openstack_compute_node03_tenant_address: ${_param:opnfv_openstack_compute_node03_tenant_address}
-    openstack_compute_node01_external_address: ${_param:opnfv_openstack_compute_node01_external_address}
-    openstack_compute_node02_external_address: ${_param:opnfv_openstack_compute_node02_external_address}
-
     # openstack service hostnames
 {%- if conf.MCP_VCP %}
     openstack_proxy_hostname: prx
@@ -387,13 +375,13 @@ parameters:
             - ${_param:openstack_control_node03_hostname}
             - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain}
 {%- endif %}
-        cmp001:
-          address: ${_param:openstack_compute_node01_control_address}
-          names:
-            - ${_param:openstack_compute_node01_hostname}
-            - ${_param:openstack_compute_node01_hostname}.${_param:cluster_domain}
-        cmp002:
-          address: ${_param:openstack_compute_node02_control_address}
+{#- For compute nodes, expand values in-place, bypassing reclass param expansion #}
+{%- for cmp in range(1, nm.cmp_nodes + 1) %}
+  {%- set h = 'cmp%03d' | format(cmp) %}
+  {%- set mgmt = nm.net_mgmt_hosts | length + nm.start_ip[nm.net_mgmt] + loop.index %}
+        {{ h }}:
+          address: {{ nm.net_mgmt | ipnet_hostaddr(mgmt) }}
           names:
-            - ${_param:openstack_compute_node02_hostname}
-            - ${_param:openstack_compute_node02_hostname}.${_param:cluster_domain}
+            - {{ h }}
+            - {{ h }}.${_param:cluster_domain}
+{%- endfor %}
index 18576b2..3576acc 100644 (file)
@@ -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 %}
 ---
 {%- if conf.MCP_VCP %}
 classes:
@@ -12,16 +13,21 @@ classes:
   - cluster.mcp-common-ha.include.lab_proxy_pdf
 parameters:
   _param:
-    dhcp_nic: ${_param:opnfv_vcp_vm_primary_interface}
+    pxe_admin_interface: ${_param:opnfv_vcp_vm_primary_interface}
     single_nic: ${_param:opnfv_vcp_vm_secondary_interface}
   linux:
     network:
       interface:
-        dhcp:
+        pxe_admin:
           enabled: true
           type: eth
-          proto: dhcp
-          name: ${_param:dhcp_nic}
+          proto: static
+          name: ${_param:pxe_admin_interface}
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
+          gateway: {{ nm.net_admin_gw }}
+          name_servers:
+            - {{ nm.net_admin_gw }}
         single:
           enabled: true
           type: eth
index 2cd7499..1fa22aa 100644 (file)
@@ -5,6 +5,8 @@
 # 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 %}
 ---
 {%- if conf.MCP_VCP %}
 classes:
@@ -12,17 +14,19 @@ classes:
   - cluster.mcp-common-ha.include.lab_proxy_pdf
 parameters:
   _param:
-    dhcp_nic: ${_param:opnfv_vcp_vm_primary_interface}
+    pxe_admin_interface: ${_param:opnfv_vcp_vm_primary_interface}
     single_nic: ${_param:opnfv_vcp_vm_secondary_interface}
     control_nic: ${_param:opnfv_vcp_vm_tertiary_interface}
   linux:
     network:
       interface:
-        dhcp_int:
+        pxe_admin:
           enabled: true
           type: eth
-          proto: dhcp
-          name: ${_param:dhcp_nic}
+          proto: static
+          name: ${_param:pxe_admin_interface}
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
         single_int:
           enabled: true
           type: eth
@@ -30,16 +34,23 @@ parameters:
           name: ${_param:single_nic}
           address: ${_param:single_address}
           netmask: ${_param:opnfv_net_public_mask}
-          route:
-            public:
-              address: 0.0.0.0
-              netmask: 0.0.0.0
-              gateway: ${_param:opnfv_net_public_gw}
+          gateway: ${_param:opnfv_net_public_gw}
+          name_servers: {{ nm.dns_public }}
         control_int:
           enabled: true
           type: eth
           proto: static
           name: ${_param:control_nic}
           address: ${_param:control_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_mgmt_mask}
+{%- else %}
+{#- For NOVCP scenarios, base config is in kvm_pdf, only add/override gw #}
+parameters:
+  linux:
+    network:
+      interface:
+        br-ex:
+          proto: static
+          gateway: ${_param:opnfv_net_public_gw}
+          name_servers: {{ nm.dns_public }}
 {%- endif %}
index 5ddb986..d7ccff5 100644 (file)
@@ -39,15 +39,6 @@ parameters:
         libapache2-mod-wsgi:
           version: latest
 {%- if not conf.MCP_VCP %}
-    # Set up routes similar to prx*ovs-ha
-    network:
-      interface:
-        br-ex:
-          route:
-            public:
-              address: 0.0.0.0
-              netmask: 0.0.0.0
-              gateway: ${_param:opnfv_net_public_gw}
   nginx:
     server:
       # NOTE(armband): Define host.address for all proxies for uniformity
@@ -67,6 +58,9 @@ parameters:
           <<: *nginx_openstack_proxy_address
         nginx_proxy_openstack_api_heat_cfn:
           <<: *nginx_openstack_proxy_address
+        nginx_proxy_openstack_api_heat_cloudwatch:
+          <<: *nginx_openstack_proxy_address
+          enabled: false
         nginx_proxy_openstack_api_keystone:
           <<: *nginx_openstack_proxy_address
         nginx_proxy_openstack_api_keystone_private:
@@ -75,8 +69,6 @@ parameters:
           <<: *nginx_openstack_proxy_address
         nginx_proxy_openstack_api_nova:
           <<: *nginx_openstack_proxy_address
-        nginx_proxy_openstack_api_nova_ec2:
-          <<: *nginx_openstack_proxy_address
         nginx_proxy_openstack_web:
           <<: *nginx_openstack_proxy_address
         nginx_ssl_redirect_openstack_web:
@@ -70,8 +70,10 @@ parameters:
   apache:
     server:
       ~modules:
-        - wsgi
         - rewrite
+{%- if conf.MCP_VCP %} {#- wsgi module will be enabled by a different class inherited later #}
+        - wsgi
+{%- endif %}
       site:
         gnocchi:
           wsgi:
@@ -5,34 +5,22 @@
 # 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:
-  - service.git.client
-  - system.linux.system.single
-  - system.linux.system.repo.mcp.salt
-  - system.salt.master.api
-  - system.salt.master.pkg
-  - system.reclass.storage.salt
-  - system.salt.minion.ca.salt_master
   - system.mysql.client.single
-  - system.reclass.storage.system.openstack_compute_multi
+  - cluster.all-mcp-arch-common.infra.config_pdf
 parameters:
   _param:
     openstack_control_node01_hostname: ctl01
-    reclass_data_repository: local
-    reclass_config_master: ${_param:opnfv_infra_config_pxe_address}
-    salt_master_environment_repository: "https://github.com/tcpcloud"
-    salt_master_environment_revision: master
+    reclass_config_master: ${_param:opnfv_infra_config_pxe_admin_address}
     single_address: ${_param:opnfv_infra_config_address}
     salt_master_host: 127.0.0.1
-    salt_master_base_environment: prd
     salt_minion_ca_host: ${linux:network:fqdn}
-    # yamllint disable-line rule:line-length
-    salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
   linux:
     network:
       interface:
-        dhcp:
+        mcpcontrol_int:
           enabled: true
           type: eth
           proto: dhcp
@@ -43,14 +31,14 @@ parameters:
           type: eth
           proto: static
           address: ${_param:single_address}
-          netmask: 255.255.255.0
-        pxe:
+          netmask: ${_param:opnfv_net_mgmt_mask}
+        pxe_admin_int:
           enabled: true
           type: eth
           proto: static
           name: ${_param:opnfv_fn_vm_tertiary_interface}
-          address: ${_param:opnfv_infra_config_pxe_address}
-          netmask: 255.255.255.0
+          address: ${_param:opnfv_infra_config_pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
   salt:
     master:
       file_recv: true
@@ -58,8 +46,6 @@ parameters:
       command_timeout: 20
   reclass:
     storage:
-      data_source:
-        engine: local
       node:
         openstack_control_node01:
           name: ${_param:openstack_control_node01_hostname}
@@ -70,13 +56,4 @@ parameters:
             linux_system_codename: xenial
             salt_master_host: ${_param:reclass_config_master}
             single_address: ${_param:openstack_control_node01_address}
-        openstack_compute_node01:
-          params:
-            single_address: ${_param:opnfv_openstack_compute_node01_control_address}
-            tenant_address: ${_param:opnfv_openstack_compute_node01_tenant_address}
-            external_address: ${_param:opnfv_openstack_compute_node01_external_address}
-        openstack_compute_node02:
-          params:
-            single_address: ${_param:opnfv_openstack_compute_node02_control_address}
-            tenant_address: ${_param:opnfv_openstack_compute_node02_tenant_address}
-            external_address: ${_param:opnfv_openstack_compute_node02_external_address}
+            pxe_admin_address: ${_param:opnfv_openstack_control_node01_pxe_admin_address}
index 69aba92..462ab83 100644 (file)
@@ -24,5 +24,3 @@ parameters:
     openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
     openstack_gateway_address: ${_param:opnfv_openstack_gateway_node01_address}
     control_address: ${_param:openstack_control_address}
-    ntp_strata_host1: 1.se.pool.ntp.org
-    ntp_strata_host2: 0.se.pool.ntp.org
index edd7f9f..671f6eb 100644 (file)
@@ -21,7 +21,7 @@ parameters:
   _param:
     interface_mtu: 9000
     linux_system_codename: xenial
-    ~cinder_lvm_devices: ['/dev/vdb']
+    single_address: ${_param:control_address}
   nova:
     compute:
       libvirt_service: libvirtd
index 64af148..aebd888 100644 (file)
 ---
 parameters:
   _param:
+    # Should later be determined via PDF/IDF, AArch64 has ESP on /dev/sda1
+{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %}
+    ~cinder_lvm_devices: ['/dev/vdb']
+{%- elif conf.nodes[nm.cmp001.idx].node.arch == 'aarch64' or
+         conf.nodes[nm.cmp001.idx].disks.0.disk_capacity | storage_size_num | float > 2000000000000 %}
+    ~cinder_lvm_devices: ['/dev/sda2']
+{%- 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 }}
@@ -17,11 +26,13 @@ parameters:
     network:
       bridge: openvswitch
       interface:
-        dhcp_int:
+        pxe_admin_int:
           enabled: true
           name: {{ nm.cmp001.nic_admin }}
-          proto: dhcp
+          proto: static
           type: eth
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
           mtu: ${_param:interface_mtu}
         primary_interface:
           enabled: true
@@ -39,6 +50,6 @@ parameters:
           type: bridge
           proto: static
           address: ${_param:single_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_mgmt_mask}
           use_interfaces:
             - ${_param:primary_interface}
index c4915c7..f458281 100644 (file)
@@ -150,7 +150,7 @@ parameters:
           path: /srv/nova/instances
           host:
             nova:
-              host: ${_param:single_address}/24
+              host: ${_param:single_address}/${_param:opnfv_net_mgmt_mask}
               params:
                 - rw
                 - no_root_squash
index 8219637..b0b55af 100644 (file)
@@ -11,22 +11,26 @@ parameters:
   linux:
     network:
       interface:
-        dhcp_int:
+        pxe_admin_int:
           enabled: true
           name: {{ nm.ctl01.nic_admin }}
-          proto: dhcp
+          proto: static
           type: eth
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
         single_int:
           enabled: true
           name: {{ nm.ctl01.nic_mgmt }}
           type: eth
           proto: static
           address: ${_param:single_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_mgmt_mask}
         public_int:
           enabled: true
           name: {{ nm.ctl01.nic_public }}
           type: eth
           proto: static
           address: ${_param:cluster_public_host}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_public_mask}
+          gateway: ${_param:opnfv_net_public_gw}
+          name_servers: {{ nm.dns_public }}
index 7067d59..6bd61a2 100644 (file)
@@ -16,11 +16,13 @@ parameters:
     network:
       bridge: openvswitch
       interface:
-        dhcp_int:
+        pxe_admin_int:
           enabled: true
           name: {{ nm.ctl01.nic_admin }}
-          proto: dhcp
+          proto: static
           type: eth
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
           mtu: ${_param:interface_mtu}
         primary_interface:
           enabled: true
@@ -40,6 +42,8 @@ parameters:
           mtu: ${_param:interface_mtu}
           proto: manual
           type: eth
+          gateway: ${_param:opnfv_net_public_gw}
+          name_servers: {{ nm.dns_public }}
         br-floating:
           enabled: true
           type: ovs_bridge
@@ -49,7 +53,7 @@ parameters:
           type: bridge
           proto: static
           address: ${_param:single_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_mgmt_mask}
           mtu: ${_param:interface_mtu}
           use_interfaces:
             - ${_param:primary_interface}
@@ -63,7 +67,7 @@ parameters:
           type: bridge
           mtu: ${_param:interface_mtu}
           address: ${_param:external_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_public_mask}
           use_interfaces:
             - ${_param:external_interface}
           use_ovs_ports:
@@ -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 %}
 ---
 parameters:
   _param:
@@ -122,13 +123,13 @@ parameters:
           names:
             - gtw01
             - gtw01.${_param:cluster_domain}
-        cmp01:
-          address: ${_param:opnfv_openstack_compute_node01_control_address}
+{#- For compute nodes, expand values in-place, bypassing reclass param expansion #}
+{%- for cmp in range(1, nm.cmp_nodes + 1) %}
+  {%- set h = 'cmp%03d' | format(cmp) %}
+  {%- set mgmt = nm.net_mgmt_hosts | length + nm.start_ip[nm.net_mgmt] + loop.index %}
+        {{ h }}:
+          address: {{ nm.net_mgmt | ipnet_hostaddr(mgmt) }}
           names:
-            - cmp01
-            - cmp01.${_param:cluster_domain}
-        cmp02:
-          address: ${_param:opnfv_openstack_compute_node02_control_address}
-          names:
-            - cmp02
-            - cmp02.${_param:cluster_domain}
+            - {{ h }}
+            - {{ h }}.${_param:cluster_domain}
+{%- endfor %}
index 58e4cd0..f72993f 100644 (file)
@@ -10,7 +10,6 @@ classes:
   - system.reclass.storage.system.opendaylight_control_single
   - cluster.mcp-common-ha.infra.config
   - cluster.mcp-odl-ha.infra
-  - cluster.all-mcp-arch-common.infra.config_pdf
 parameters:
   reclass:
     storage:
@@ -21,3 +20,4 @@ parameters:
           params:
             linux_system_codename: xenial
             single_address: ${_param:opendaylight_server_node01_single_address}
+            pxe_admin_address: ${_param:opnfv_opendaylight_server_node01_pxe_admin_address}
index 30d7126..c066430 100644 (file)
@@ -5,17 +5,12 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
-{%- set cluster_arch = [] %}
-{%- for node in conf.nodes %}
-  {%- if node.node.arch not in cluster_arch %}
-    {%- do cluster_arch.append(node.node.arch) %}
-  {%- endif %}
-{%- endfor %}
+{%- import 'net_map.j2' as nm with context %}
 ---
 classes:
   - cluster.mcp-common-ha.infra.maas
   - cluster.mcp-odl-ha.infra
-{%- if 'aarch64' not in cluster_arch %}
+{%- if 'aarch64' not in nm.cluster.arch %}
 parameters:
   _param:
     hwe_kernel: 'ga-16.04'
index 7cf4c88..cc39db1 100644 (file)
@@ -6,6 +6,7 @@
 # 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.cmp001.nic_private: True } %}
 {%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
@@ -15,35 +16,16 @@ parameters:
   linux:
     network:
       interface:
-{%- for nic in nics %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-    {%- if nic == nm.cmp001.nic_admin %}
-          proto: dhcp
-    {%- else %}
-          proto: manual
-    {%- endif %}
-          name: {{ nic }}
-{%- endfor %}
 
-{%- for vlan in vlans %}
-    {%- if vlan | int > 0 %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
 
         br-mesh:
           enabled: true
           type: bridge
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           mtu: 1500
           use_interfaces:
-            - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %}
+            - {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
index 43e8c1f..f25dd60 100644 (file)
@@ -22,7 +22,9 @@ parameters:
           params:
             linux_system_codename: xenial
             single_address: ${_param:opendaylight_service_host}
+            pxe_admin_address: ${_param:opnfv_opendaylight_server_node01_pxe_admin_address}
         openstack_gateway_node01:
           params:
             tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address}
             external_address: ${_param:opnfv_openstack_gateway_node01_external_address}
+            pxe_admin_address: ${_param:opnfv_openstack_gateway_node01_pxe_admin_address}
index fbb7de8..5bb5917 100644 (file)
@@ -11,15 +11,20 @@ parameters:
   linux:
     network:
       interface:
-        dhcp_int:
+        pxe_admin_int:
           enabled: true
           name: {{ nm.ctl01.nic_admin }}
-          proto: dhcp
+          proto: static
           type: eth
+          address: ${_param:pxe_admin_address}
+          netmask: ${_param:opnfv_net_admin_mask}
+          gateway: {{ nm.net_admin_gw }}
+          name_servers:
+            - {{ nm.net_admin_gw }}
         single_int:
           enabled: true
           name: {{ nm.ctl01.nic_mgmt }}
           type: eth
           proto: static
           address: ${_param:single_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_mgmt_mask}
index d0ee3a3..c3e79e5 100644 (file)
@@ -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:
   - service.neutron.compute.single
@@ -33,7 +34,7 @@ parameters:
           type: dpdk_ovs_bridge
           proto: static
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
         tenant_interface:
           type: dpdk  # Not a meaningful type, just match 'dpdk' for filtering
 {%- endif %}
@@ -48,7 +49,7 @@ parameters:
           type: bridge
           proto: static
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
             - ${_param:tenant_interface}
         br-floating:
@@ -70,3 +71,5 @@ parameters:
             - ${_param:external_interface}
           use_ovs_ports:
             - float-to-ex
+          gateway: ${_param:opnfv_net_public_gw}
+          name_servers: {{ nm.dns_public }}
index e554eb6..678740f 100644 (file)
@@ -20,6 +20,6 @@ parameters:
           mtu: ${_param:interface_mtu}
           proto: static
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
             - ${_param:tenant_interface}
index 7cf4c88..cc39db1 100644 (file)
@@ -6,6 +6,7 @@
 # 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.cmp001.nic_private: True } %}
 {%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
@@ -15,35 +16,16 @@ parameters:
   linux:
     network:
       interface:
-{%- for nic in nics %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-    {%- if nic == nm.cmp001.nic_admin %}
-          proto: dhcp
-    {%- else %}
-          proto: manual
-    {%- endif %}
-          name: {{ nic }}
-{%- endfor %}
 
-{%- for vlan in vlans %}
-    {%- if vlan | int > 0 %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
 
         br-mesh:
           enabled: true
           type: bridge
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           mtu: 1500
           use_interfaces:
-            - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %}
+            - {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
@@ -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:
   - service.neutron.compute.ovn.single
@@ -28,7 +29,7 @@ parameters:
           type: bridge
           proto: static
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
             - ${_param:tenant_interface}
         br-floating:
@@ -45,8 +46,10 @@ parameters:
           type: bridge
           mtu: ${_param:interface_mtu}
           address: ${_param:external_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_public_mask}
           use_interfaces:
             - ${_param:external_interface}
           use_ovs_ports:
             - float-to-ex
+          gateway: ${_param:opnfv_net_public_gw}
+          name_servers: {{ nm.dns_public }}
index 6c14d91..8c17571 100644 (file)
@@ -9,4 +9,4 @@
 classes:
   - cluster.mcp-common-ha.infra.config
   - cluster.mcp-ovs-dpdk-ha.infra
-  - cluster.all-mcp-arch-common.infra.config_dpdk_pdf
+  - cluster.all-mcp-arch-common.infra.config_pdf
index 08c2302..721eba5 100644 (file)
@@ -10,7 +10,7 @@ classes:
   - system.reclass.storage.system.openstack_gateway_single
   - cluster.mcp-common-noha.infra.config
   - cluster.mcp-ovs-dpdk-noha
-  - cluster.all-mcp-arch-common.infra.config_dpdk_pdf
+  - cluster.all-mcp-arch-common.infra.config_pdf
 parameters:
   reclass:
     storage:
@@ -19,3 +19,4 @@ parameters:
           params:
             tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address}
             external_address: ${_param:opnfv_openstack_gateway_node01_external_address}
+            pxe_admin_address: ${_param:opnfv_openstack_gateway_node01_pxe_admin_address}
@@ -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:
   - system.nova.compute.nfv.hugepages
@@ -20,6 +21,11 @@ parameters:
   linux:
     network:
       interface:
+        pxe_admin_int:
+          # For scenarios without public network on cmp, set admin gw
+          gateway: {{ nm.net_admin_gw }}
+          name_servers:
+            - {{ nm.net_admin_gw }}
         dpdk0:
           name: ${_param:dpdk0_name}
           pci: ${_param:dpdk0_pci}
index 7cf4c88..cc39db1 100644 (file)
@@ -6,6 +6,7 @@
 # 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.cmp001.nic_private: True } %}
 {%- set vlan_private_start = (nm.vlan_private | string).rsplit('-')[0] %}
@@ -15,35 +16,16 @@ parameters:
   linux:
     network:
       interface:
-{%- for nic in nics %}
-        {{ nic }}:
-          enabled: true
-          type: eth
-    {%- if nic == nm.cmp001.nic_admin %}
-          proto: dhcp
-    {%- else %}
-          proto: manual
-    {%- endif %}
-          name: {{ nic }}
-{%- endfor %}
 
-{%- for vlan in vlans %}
-    {%- if vlan | int > 0 %}
-        {{ vlans[vlan] }}.{{ vlan }}:
-          enabled: true
-          proto: manual
-          type: vlan
-          name: {{ vlans[vlan] }}.{{ vlan }}
-          use_interfaces:
-            - {{ vlans[vlan] }}
-    {%- endif %}
-{%- endfor %}
+{{ ma.linux_network_interfaces_nic(nics) }}
+
+{{ ma.linux_network_interfaces_vlan(vlans) }}
 
         br-mesh:
           enabled: true
           type: bridge
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           mtu: 1500
           use_interfaces:
-            - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %}
+            - {{ ma.interface_str(nm.cmp001.nic_private, vlan_private_start) }}
index 6835a26..cd8a9e4 100644 (file)
@@ -19,3 +19,4 @@ parameters:
           params:
             tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address}
             external_address: ${_param:opnfv_openstack_gateway_node01_external_address}
+            pxe_admin_address: ${_param:opnfv_openstack_gateway_node01_pxe_admin_address}
@@ -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:
   - service.neutron.compute.single
@@ -14,11 +15,16 @@ parameters:
   linux:
     network:
       interface:
+        pxe_admin_int:
+          # For scenarios without public network on cmp, set admin gw
+          gateway: {{ nm.net_admin_gw }}
+          name_servers:
+            - {{ nm.net_admin_gw }}
         br-mesh:
           enabled: true
           type: bridge
           proto: static
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
             - ${_param:tenant_interface}
index b5dfcd4..5c5547c 100644 (file)
@@ -20,6 +20,6 @@ parameters:
           mtu: ${_param:interface_mtu}
           proto: static
           address: ${_param:tenant_address}
-          netmask: 255.255.255.0
+          netmask: ${_param:opnfv_net_private_mask}
           use_interfaces:
             - ${_param:tenant_interface}
index 701bae0..8a03c4f 100644 (file)
@@ -15,7 +15,7 @@ iptables_pxe_nat:
     - chain: POSTROUTING
     - jump: MASQUERADE
     - destination: 0/0
-    - source: {{ salt['pillar.get']('_param:single_address') }}/24
+    - source: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
     - save: True
 
 iptables_pxe_source:
@@ -24,7 +24,7 @@ iptables_pxe_source:
     - chain: INPUT
     - jump: ACCEPT
     - destination: 0/0
-    - source: {{ salt['pillar.get']('_param:single_address') }}/24
+    - source: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
     - save: True
 
 iptables_pxe_destination:
@@ -32,6 +32,6 @@ iptables_pxe_destination:
     - table: filter
     - chain: INPUT
     - jump: ACCEPT
-    - destination: {{ salt['pillar.get']('_param:single_address') }}/24
+    - destination: {{ salt['pillar.get']('_param:single_address') }}/{{ salt['pillar.get']('_param:opnfv_net_admin_mask') }}
     - source: 0/0
     - save: True
index 0fbe628..4b5b056 100644 (file)
@@ -50,6 +50,7 @@ function do_templates_scenario {
     fi
   fi
   if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" \
+    -i "$(dirname "$(readlink -f "${PHAROS_IA}")")" \
     -j "${PHAROS_IA}" -v > "${image_dir}/pod_config.yml"; then
     notify_e "[ERROR] Could not convert PDF+IDF to reclass model input!"
   fi
index 70f8d63..9184b74 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 70f8d63761a0d52790f634642785c9e8bc0d7419
+Subproject commit 9184b745eee64dda19be05d6d01cc2519dcb6031
index fae644e..4a20bc4 100755 (executable)
@@ -64,7 +64,6 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s -e << SALT_INSTALL_END
   ln -sf ${OPNFV_FUEL_DIR}/mcp/reclass /srv/salt
   ln -sf ${OPNFV_FUEL_DIR}/mcp/deploy/scripts /srv/salt
   ln -sf ${OPNFV_FUEL_DIR}/mcp/scripts/mcp.rsa $(dirname "${OPNFV_FUEL_DIR}")
-  cd /srv/salt/${OPNFV_RDIR} && rm -f arch && ln -sf "\$(uname -i)" arch
 
   cp -r ${OPNFV_FUEL_DIR}/mcp/metadata/service /usr/share/salt-formulas/reclass
   cd /srv/salt/reclass/classes/service && \
index d9b86c7..d777732 100644 (file)
@@ -6,9 +6,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 %}
 rm /etc/salt/minion_id
 rm -f /etc/salt/pki/minion/minion_master.pub
 echo "id: $(hostname).{{ conf.cluster.domain }}" > /etc/salt/minion
-{#- should be in sync with 'opnfv_infra_config_pxe_address' in 'pharos/config/installers/fuel/pod_config.yml.j2 #}
-echo "master: {{ conf.idf.net_config.admin.network | ipaddr_index(2) }}" >> /etc/salt/minion
+echo "master: {{ nm.net_admin | ipnet_hostaddr(nm.start_ip[nm.net_admin] + nm.net_admin_hosts.index('opnfv_infra_config_pxe_admin_address') +1) }}" >> /etc/salt/minion
 service salt-minion restart
index 95424db..569fa70 100644 (file)
@@ -7,13 +7,14 @@
  http://www.apache.org/licenses/LICENSE-2.0
 -->
 {#- conf.MCPCONTROL_NET & co are mandatory, defaults are set via globals.sh #}
+{%- set net_mcpcontrol = [conf.MCPCONTROL_NET, conf.MCPCONTROL_PREFIX] | join("/") %}
 <network>
   <name>mcpcontrol</name>
   <bridge name="mcpcontrol"/>
   <forward mode="nat"/>
-  <ip address="{{ conf.MCPCONTROL_NET | ipaddr_index(1) }}" netmask="{{ conf.MCPCONTROL_PREFIX | netmask }}">
+  <ip address="{{ net_mcpcontrol | ipnet_hostaddr(1) }}" netmask="{{ net_mcpcontrol | ipnet_netmask }}">
     <dhcp>
-      <range start="{{ conf.MCPCONTROL_NET | ipaddr_index(2) }}" end="{{ conf.MCPCONTROL_NET | ipaddr_index(254) }}"/>
+      <range start="{{ net_mcpcontrol | ipnet_hostaddr(2) }}" end="{{ net_mcpcontrol | ipnet_hostmax }}"/>
     </dhcp>
   </ip>
 </network>
index a558293..23b32f2 100644 (file)
@@ -6,15 +6,9 @@
  which accompanies this distribution, and is available at
  http://www.apache.org/licenses/LICENSE-2.0
 -->
-{%- if conf.idf.net_config.mgmt is defined %}
-  {%- set mgmt_network = conf.idf.net_config.mgmt.network %}
-  {%- set mgmt_prefix = conf.idf.net_config.mgmt.mask %}
-{%- else %}
-  {%- set mgmt_network = '172.16.10.0' %}
-  {%- set mgmt_prefix = '24' %}
-{%- endif %}
+{%- import 'net_map.j2' as nm with context %}
 <network>
   <name>mgmt</name>
   <bridge name="mgmt"/>
-  <ip address="{{ mgmt_network | ipaddr_index(1) }}" netmask="{{ mgmt_prefix | netmask }}"/>
+  <ip address="{{ nm.net_mgmt | ipnet_hostmin }}" netmask="{{ nm.net_mgmt | ipnet_netmask }}"/>
 </network>
index 737b638..a9e8349 100644 (file)
@@ -6,27 +6,15 @@
  which accompanies this distribution, and is available at
  http://www.apache.org/licenses/LICENSE-2.0
 -->
-{%- set cluster = {'has_virtual_nodes': False} %}
-{%- for node in conf.nodes %}
-  {%- if not cluster.has_virtual_nodes and node.node.type == 'virtual' %}
-    {%- do cluster.update({'has_virtual_nodes': True}) %}
-  {%- endif %}
-{%- endfor %}
-{%- if conf.idf.net_config.public is defined %}
-  {%- set public_network = conf.idf.net_config.public.network %}
-  {%- set public_prefix = conf.idf.net_config.public.mask %}
-{%- else %}
-  {%- set public_network = '10.16.0.0' %}
-  {%- set public_prefix = '24' %}
-{%- endif %}
+{%- import 'net_map.j2' as nm with context %}
 <network>
   <name>public</name>
   <bridge name="public"/>
-{%- if cluster.has_virtual_nodes %}
+{%- if nm.cluster.has_virtual_nodes %}
 {#- Ideally, jumpserver would have a real Linux bridge we will hook to.
     In case it doesn't, we use this virsh network as a *mock* public.
     The *mock* public should NOT overlap with the real public in any way. #}
   <forward mode="nat"/>
-  <ip address="{{ public_network | ipaddr_index(1) }}" netmask="{{ public_prefix | netmask }}"/>
+  <ip address="{{ nm.net_public | ipnet_hostmin }}" netmask="{{ nm.net_public | ipnet_netmask }}"/>
 {%- endif %}
 </network>
index f82780c..1c48e9b 100644 (file)
@@ -6,21 +6,14 @@
  which accompanies this distribution, and is available at
  http://www.apache.org/licenses/LICENSE-2.0
 -->
-{%- if conf.idf.net_config.admin is defined %}
-  {%- set pxebr_network = conf.idf.net_config.admin.network %}
-  {%- set pxebr_prefix = conf.idf.net_config.admin.mask %}
-{%- else %}
-  {%- set pxebr_network = '192.168.11.0' %}
-  {%- set pxebr_prefix = '24' %}
-{%- endif %}
+{%- import 'net_map.j2' as nm with context %}
 <network>
   <name>pxebr</name>
   <forward mode="nat"/>
   <bridge name="pxebr"/>
-  <ip address="{{ pxebr_network | ipaddr_index(1) }}" netmask="{{ pxebr_prefix | netmask }}">
-    <!-- NOTE: .254 is harcoded for now (for /24 prefix), should be computed instead. -->
+  <ip address="{{ nm.net_admin_gw }}" netmask="{{ nm.net_admin | ipnet_netmask }}">
     <dhcp>
-      <range start="{{ pxebr_network | ipaddr_index(4) }}" end="{{ pxebr_network | ipaddr_index(254) }}"/>
+      <range start="{{ nm.net_admin_pool_start }}" end="{{ nm.net_admin_pool_end }}"/>
     </dhcp>
   </ip>
 </network>