aboutsummaryrefslogtreecommitdiffstats
path: root/mcp/reclass/classes/cluster
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2018-04-07 05:27:48 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2018-06-19 15:47:11 +0200
commit33c017d388bf0f9cef5199c186bec5b4fd01f767 (patch)
tree7a90ebe50f00224bb51dce6bc772b9ec9d8c5e8c /mcp/reclass/classes/cluster
parent3dbd313cc111455f8cf88d0d072ec8a2f3c6f705 (diff)
Enforce static configuration instead of DHCP
- 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>
Diffstat (limited to 'mcp/reclass/classes/cluster')
-rw-r--r--mcp/reclass/classes/cluster/.gitignore12
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j242
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j293
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml11
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml.j2 (renamed from mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml)21
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml11
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml.j229
-rw-r--r--mcp/reclass/classes/cluster/all-mcp-arch-common/x86_64/init.yml24
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml)2
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml)85
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/init.yml.j29
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_novcp.yml.j2 (renamed from mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.j2)16
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_pdf.yml.j248
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml69
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-common-ha/infra/maas_pdf.yml.j2)85
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute.yml1
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j259
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j23
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_init.yml.j232
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_biport.yml.j214
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_triport.yml.j231
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_proxy.yml.j214
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml)4
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml)41
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml2
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml2
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j217
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml2
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j212
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j212
-rw-r--r--mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml)19
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-ha/infra/config.yml2
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-ha/infra/maas.yml.j29
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-ha/openstack/compute_pdf.yml.j230
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-noha/infra/config.yml.j22
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-noha/opendaylight/control_pdf.yml.j211
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j27
-rw-r--r--mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml2
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovn-ha/openstack/compute_pdf.yml.j230
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml)7
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-dpdk-ha/infra/config.yml2
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/infra/config.yml3
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml)6
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-ha/openstack/compute_pdf.yml.j230
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-noha/infra/config.yml1
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml.j2 (renamed from mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml)8
-rw-r--r--mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml2
47 files changed, 455 insertions, 519 deletions
diff --git a/mcp/reclass/classes/cluster/.gitignore b/mcp/reclass/classes/cluster/.gitignore
index bc812c229..a7efc5744 100644
--- a/mcp/reclass/classes/cluster/.gitignore
+++ b/mcp/reclass/classes/cluster/.gitignore
@@ -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
index 703d5350e..000000000
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2
+++ /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
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2 b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2
index fb25cc617..82d446b1f 100644
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2
@@ -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
index f9aeb71ad..000000000
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml
+++ /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
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml.j2
index a44475b49..19475c717 100644
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml
+++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml.j2
@@ -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
index 9a47b1c63..000000000
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml
+++ /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
index 000000000..894d3bcc6
--- /dev/null
+++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml.j2
@@ -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
index a62dd04e0..000000000
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/x86_64/init.yml
+++ /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
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml b/mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml.j2
index e5b263fe8..58ea46cad 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/include/maas_proxy.yml.j2
@@ -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 %}
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2
index 208393e52..f6e0baa11 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/config.yml.j2
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/init.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/infra/init.yml.j2
index 8c601f61b..c01042f54 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/init.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/init.yml.j2
@@ -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:
diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_novcp.yml.j2
index d6f5aa965..8959a7856 100644
--- a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_novcp.yml.j2
@@ -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 }}
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_pdf.yml.j2
index 97166c62c..6754d13dd 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/kvm_pdf.yml.j2
@@ -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
index 36c674b85..000000000
--- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml
+++ /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
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2
index 1838590e9..bafdcf302 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/infra/maas.yml.j2
@@ -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
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute.yml b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute.yml
index c8605462b..4a0764fd9 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute.yml
@@ -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:
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2
index fd51f5fea..396334c6d 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_compute_pdf.yml.j2
@@ -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
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2
index 1870cc46b..ceb3622b1 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_control.yml.j2
@@ -99,9 +99,6 @@ parameters:
server:
bind:
~ports: ~
- ~modules:
- - rewrite
- - wsgi
# sync from common-ha kvm role
glusterfs:
server:
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_init.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_init.yml.j2
index 00f24087e..9f05790c9 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_init.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_init.yml.j2
@@ -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 %}
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_biport.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_biport.yml.j2
index 18576b257..3576acc2f 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_biport.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_biport.yml.j2
@@ -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
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_triport.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_triport.yml.j2
index 2cd74992a..1fa22aa7f 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_triport.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_interface_vcp_triport.yml.j2
@@ -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 %}
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_proxy.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_proxy.yml.j2
index 5ddb9860a..d7ccff532 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_proxy.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_proxy.yml.j2
@@ -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:
diff --git a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml.j2
index b7bb83b35..2ed7c5336 100644
--- a/mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-ha/openstack_telemetry.yml.j2
@@ -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:
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2
index 0a2924bac..ac53e8225 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/infra/config.yml.j2
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml b/mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml
index 69aba92ad..462ab8312 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/init_options.yml
@@ -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
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml
index edd7f9f58..671f6eb07 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute.yml
@@ -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
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2
index 64af148fd..aebd88828 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_compute_pdf.yml.j2
@@ -10,6 +10,15 @@
---
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}
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml
index c4915c795..f458281ce 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control.yml
@@ -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
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2
index 8219637dc..b0b55afb9 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_control_pdf.yml.j2
@@ -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 }}
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2
index 7067d59a4..6bd61a2d4 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_gateway_pdf.yml.j2
@@ -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:
diff --git a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml.j2
index f76333374..a62057ac3 100644
--- a/mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml
+++ b/mcp/reclass/classes/cluster/mcp-common-noha/openstack_init.yml.j2
@@ -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 %}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-odl-ha/infra/config.yml
index 58e4cd09c..f72993f89 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-ha/infra/config.yml
+++ b/mcp/reclass/classes/cluster/mcp-odl-ha/infra/config.yml
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-ha/infra/maas.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-ha/infra/maas.yml.j2
index 30d712634..c06643089 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-ha/infra/maas.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-ha/infra/maas.yml.j2
@@ -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'
diff --git a/mcp/reclass/classes/cluster/mcp-odl-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-ha/openstack/compute_pdf.yml.j2
index 7cf4c8864..cc39db11a 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-ha/openstack/compute_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-ha/openstack/compute_pdf.yml.j2
@@ -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) }}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-noha/infra/config.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-noha/infra/config.yml.j2
index 43e8c1f39..f25dd60fa 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-noha/infra/config.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-noha/infra/config.yml.j2
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-noha/opendaylight/control_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-noha/opendaylight/control_pdf.yml.j2
index fbb7de8b3..5bb591765 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-noha/opendaylight/control_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-noha/opendaylight/control_pdf.yml.j2
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2 b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2
index d0ee3a3e0..c3e79e524 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/compute.yml.j2
@@ -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 }}
diff --git a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml
index e554eb6b6..678740f40 100644
--- a/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml
+++ b/mcp/reclass/classes/cluster/mcp-odl-noha/openstack/gateway.yml
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-ovn-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-ovn-ha/openstack/compute_pdf.yml.j2
index 7cf4c8864..cc39db11a 100644
--- a/mcp/reclass/classes/cluster/mcp-ovn-ha/openstack/compute_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-ovn-ha/openstack/compute_pdf.yml.j2
@@ -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) }}
diff --git a/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2
index f8183e7f8..89ba3b074 100644
--- a/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml
+++ b/mcp/reclass/classes/cluster/mcp-ovn-noha/openstack/compute.yml.j2
@@ -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 }}
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-ha/infra/config.yml
index 6c14d916a..8c175712a 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-ha/infra/config.yml
+++ b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-ha/infra/config.yml
@@ -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
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/infra/config.yml
index 08c23026f..721eba56c 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/infra/config.yml
+++ b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/infra/config.yml
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2
index a4d6b8dd2..3e4eeceab 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml
+++ b/mcp/reclass/classes/cluster/mcp-ovs-dpdk-noha/openstack/compute.yml.j2
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-ovs-ha/openstack/compute_pdf.yml.j2
index 7cf4c8864..cc39db11a 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-ha/openstack/compute_pdf.yml.j2
+++ b/mcp/reclass/classes/cluster/mcp-ovs-ha/openstack/compute_pdf.yml.j2
@@ -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) }}
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-ovs-noha/infra/config.yml
index 6835a2622..cd8a9e4ad 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-noha/infra/config.yml
+++ b/mcp/reclass/classes/cluster/mcp-ovs-noha/infra/config.yml
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml.j2
index beddc4ae8..c949de4f4 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml
+++ b/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/compute.yml.j2
@@ -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}
diff --git a/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml b/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml
index b5dfcd40d..5c5547cfc 100644
--- a/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml
+++ b/mcp/reclass/classes/cluster/mcp-ovs-noha/openstack/gateway.yml
@@ -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}