diff options
Diffstat (limited to 'mcp')
252 files changed, 3298 insertions, 2536 deletions
diff --git a/mcp/config/labs/local/idf-pod1.yaml b/mcp/config/labs/local/idf-pod1.yaml index 4ee359f88..b916707a1 100644 --- a/mcp/config/labs/local/idf-pod1.yaml +++ b/mcp/config/labs/local/idf-pod1.yaml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# Copyright (c) 2018 Linux Foundation, 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 @@ -10,13 +10,50 @@ idf: version: 0.1 + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: 172.30.8.65-172.30.8.75 + vlan: 410 + admin: + interface: 0 + vlan: native + network: 192.168.11.0 # Untagged, 'PXE/Admin' on wiki, different IP + mask: 24 + mgmt: + interface: 0 + vlan: 300 + network: 10.167.4.0 # Tagged, 'vlan 300' on wiki + ip-range: 10.167.4.10-10.167.4.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 3 + vlan: 301 + network: 10.2.0.0 # Tagged, not the same with 'storage' on wiki + mask: 24 + private: + interface: 1 + vlan: 1000 + network: 10.1.0.0 # Tagged, not the same with 'private' on wiki + mask: 24 + public: + interface: 2 + vlan: native + network: 172.30.10.0 # Untagged, 'public' on wiki + ip-range: 172.30.10.100-172.30.10.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 172.30.10.1 + dns: + - 8.8.8.8 + - 8.8.4.4 fuel: jumphost: bridges: admin: 'pxebr' mgmt: 'br-ctl' - private: '' - public: '' + private: ~ + public: ~ network: node: # Ordered-list, index should be in sync with node index in PDF diff --git a/mcp/config/labs/local/idf-virtual1.yaml b/mcp/config/labs/local/idf-virtual1.yaml new file mode 100644 index 000000000..79a5fa044 --- /dev/null +++ b/mcp/config/labs/local/idf-virtual1.yaml @@ -0,0 +1,101 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, 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 +############################################################################## +--- +### Fuel@OPNFV sample VIRTUAL installer descriptor file ### + +idf: + version: 0.0 # Intentionally invalid to indicate this is experimental + net_config: + # NOTE: Network names are likely to change after the PDF spec is updated + oob: + interface: 0 + ip-range: ~ + vlan: native + # All networks (except OOB) are virtual networks managed by `libvirt` + # Interface indexes are based on Fuel installer defaults + admin: + interface: 0 # when used, will be first vnet interface, untagged + vlan: native + network: 192.168.11.0 + mask: 24 + mgmt: + interface: 1 # when used, will be second vnet interface, untagged + vlan: native + network: 172.16.10.0 + ip-range: 172.16.10.10-172.16.10.254 # Some IPs are in use by lab infra + mask: 24 + storage: + interface: 4 # when used, will be fifth vnet interface, untagged + vlan: native + network: 192.168.20.0 + mask: 24 + private: + interface: 2 # when used, will be third vnet interface, untagged + vlan: 1000-1999 + network: 10.1.0.0 + mask: 24 + public: + interface: 3 # when used, will be fourth vnet interface, untagged + vlan: native + network: 10.16.0.0 + ip-range: 10.16.0.100-10.16.0.254 # Some IPs are in use by lab infra + mask: 24 + gateway: 10.16.0.1 + dns: + - 8.8.8.8 + - 8.8.4.4 + fuel: + jumphost: + bridges: + admin: ~ + mgmt: ~ + private: ~ + public: ~ + network: + node: + # Ordered-list, index should be in sync with node index in PDF + - interfaces: &interfaces + # Ordered-list, index should be in sync with interface index in PDF + - 'ens3' + - 'ens4' + - 'ens5' + - 'ens6' + busaddr: &busaddr + # Bus-info reported by `ethtool -i ethX` + - '0000:00:03.0' + - '0000:00:04.0' + - '0000:00:05.0' + - '0000:00:06.0' + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + - interfaces: *interfaces + busaddr: *busaddr + reclass: + node: + - compute_params: &compute_params + common: &compute_params_common + compute_hugepages_size: 2M + compute_hugepages_count: 2048 + compute_hugepages_mount: /mnt/hugepages_2M + dpdk: + <<: *compute_params_common + compute_dpdk_driver: uio + compute_ovs_pmd_cpu_mask: "0x6" + compute_ovs_dpdk_socket_mem: "1024" + compute_ovs_dpdk_lcore_mask: "0x8" + compute_ovs_memory_channels: "2" + dpdk0_driver: igb_uio + dpdk0_n_rxq: 2 + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params + - compute_params: *compute_params diff --git a/mcp/config/labs/local/pod1.yaml b/mcp/config/labs/local/pod1.yaml index cf60dcf72..219b2a683 100644 --- a/mcp/config/labs/local/pod1.yaml +++ b/mcp/config/labs/local/pod1.yaml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# Copyright (c) 2018 Linux Foundation, 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 @@ -8,6 +8,7 @@ --- ### LF POD 2 descriptor file ### +version: 1.0 details: pod_owner: Trevor Bramwell contact: tbramwell@linuxfoundation.org @@ -16,42 +17,6 @@ details: type: production link: https://wiki.opnfv.org/display/pharos/LF+POD+2 ############################################################################## -net_config: - # NOTE: Network names are likely to change after the PDF spec is updated - oob: - interface: 0 - ip-range: 172.30.8.65-172.30.8.75 - vlan: 410 - admin: - interface: 0 - vlan: native - network: 192.168.11.0 # Untagged, 'PXE/Admin' on wiki, different IP - mask: 24 - mgmt: - interface: 0 - vlan: 300 - network: 10.167.4.0 # Tagged, 'vlan 300' on wiki - mask: 24 - storage: - interface: 3 - vlan: 301 - network: 10.2.0.0 # Tagged, not the same with 'storage' on wiki - mask: 24 - private: - interface: 1 - vlan: 1000 - network: 10.1.0.0 # Tagged, not the same with 'private' on wiki - mask: 24 - public: - interface: 2 - vlan: native - network: 172.30.10.0 # Untagged, 'public' on wiki - mask: 24 - gateway: 172.30.10.1 - dns: - - 8.8.8.8 - - 8.8.4.4 -############################################################################## jumphost: name: pod2-jump node: @@ -68,7 +33,7 @@ jumphost: disk_capacity: 2400G disk_type: hdd disk_interface: sas - disk_rotation: + disk_rotation: 0 os: centos-7 remote_params: &remote_params type: ipmi @@ -84,19 +49,20 @@ jumphost: - mac_address: "00:25:b5:a0:00:1a" speed: 40gb features: 'dpdk|sriov' + address: 192.168.11.1 + name: 'nic1' - mac_address: "00:25:b5:a0:00:1b" speed: 40gb features: 'dpdk|sriov' + name: 'nic2' - mac_address: "00:25:b5:a0:00:1c" speed: 40gb features: 'dpdk|sriov' + name: 'nic3' - mac_address: "00:25:b5:a0:00:1d" speed: 40gb features: 'dpdk|sriov' - fixed_ips: - admin: 192.168.11.1 - mgmt: 10.167.4.1 - public: 172.30.10.72 + name: 'nic4' ############################################################################## nodes: - name: pod2-node1 @@ -118,19 +84,19 @@ nodes: - mac_address: "00:25:b5:a0:00:2a" speed: 40gb features: 'dpdk|sriov' + name: 'nic1' - mac_address: "00:25:b5:a0:00:2b" speed: 40gb features: 'dpdk|sriov' + name: 'nic2' - mac_address: "00:25:b5:a0:00:2c" speed: 40gb features: 'dpdk|sriov' + name: 'nic3' - mac_address: "00:25:b5:a0:00:2d" speed: 40gb features: 'dpdk|sriov' - fixed_ips: - admin: 192.168.11.2 - mgmt: 10.167.4.2 - public: 172.30.10.2 + name: 'nic4' ############################################################################ - name: pod2-node2 node: *nodeparams @@ -143,19 +109,19 @@ nodes: - mac_address: "00:25:b5:a0:00:3a" speed: 40gb features: 'dpdk|sriov' + name: 'nic1' - mac_address: "00:25:b5:a0:00:3b" speed: 40gb features: 'dpdk|sriov' + name: 'nic2' - mac_address: "00:25:b5:a0:00:3c" speed: 40gb features: 'dpdk|sriov' + name: 'nic3' - mac_address: "00:25:b5:a0:00:3d" speed: 40gb features: 'dpdk|sriov' - fixed_ips: - admin: 192.168.11.3 - mgmt: 10.167.4.3 - public: 172.30.10.3 + name: 'nic4' ############################################################################ - name: pod2-node3 node: *nodeparams @@ -168,19 +134,19 @@ nodes: - mac_address: "00:25:b5:a0:00:4a" speed: 40gb features: 'dpdk|sriov' + name: 'nic1' - mac_address: "00:25:b5:a0:00:4b" speed: 40gb features: 'dpdk|sriov' + name: 'nic2' - mac_address: "00:25:b5:a0:00:4c" speed: 40gb features: 'dpdk|sriov' + name: 'nic3' - mac_address: "00:25:b5:a0:00:4d" speed: 40gb features: 'dpdk|sriov' - fixed_ips: - admin: 192.168.11.4 - mgmt: 10.167.4.4 - public: 172.30.10.4 + name: 'nic4' ############################################################################ - name: pod2-node4 node: *nodeparams @@ -193,19 +159,19 @@ nodes: - mac_address: "00:25:b5:a0:00:5a" speed: 40gb features: 'dpdk|sriov' + name: 'nic1' - mac_address: "00:25:b5:a0:00:5b" speed: 40gb features: 'dpdk|sriov' + name: 'nic2' - mac_address: "00:25:b5:a0:00:5c" speed: 40gb features: 'dpdk|sriov' + name: 'nic3' - mac_address: "00:25:b5:a0:00:5d" speed: 40gb features: 'dpdk|sriov' - fixed_ips: - admin: 192.168.11.5 - mgmt: 10.167.4.5 - public: 172.30.10.5 + name: 'nic4' ############################################################################ - name: pod2-node5 node: *nodeparams @@ -218,16 +184,16 @@ nodes: - mac_address: "00:25:b5:a0:00:6a" speed: 40gb features: 'dpdk|sriov' + name: 'nic1' - mac_address: "00:25:b5:a0:00:6b" speed: 40gb features: 'dpdk|sriov' + name: 'nic2' - mac_address: "00:25:b5:a0:00:6c" speed: 40gb features: 'dpdk|sriov' + name: 'nic3' - mac_address: "00:25:b5:a0:00:6d" speed: 40gb features: 'dpdk|sriov' - fixed_ips: - admin: 192.168.11.6 - mgmt: 10.167.4.6 - public: 172.30.10.6 + name: 'nic4' diff --git a/mcp/config/labs/local/virtual1.yaml b/mcp/config/labs/local/virtual1.yaml new file mode 100644 index 000000000..e46a2c6c9 --- /dev/null +++ b/mcp/config/labs/local/virtual1.yaml @@ -0,0 +1,127 @@ +############################################################################## +# Copyright (c) 2018 Ericsson AB, 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 +############################################################################## +--- +### Fuel@OPNFV sample VIRTUAL POD descriptor file ### +### NOTE: This is subject to change as vPDF is not yet officialy supported ### + +version: 0.0 # Intentionally invalid to indicate this is experimental +details: + pod_owner: Fuel@OPNFV + contact: Fuel@OPNFV + lab: Example Lab + location: Example Location + type: development + link: https://wiki.opnfv.org/display/pharos/ +############################################################################## +jumphost: + name: virtual1-jump + node: + type: baremetal + vendor: HP + model: ProLiant BL460c Gen8 + arch: x86_64 + cpus: 2 + cpu_cflags: ivybridge + cores: 10 + memory: 64G + disks: + - name: 'disk1' + disk_capacity: 800G + disk_type: hdd + disk_interface: scsi + disk_rotation: 15000 + os: ubuntu-16.04 + remote_management: + type: ipmi + versions: + - 1.0 + - 2.0 + user: changeme + pass: changeme + address: 0.0.0.0 + mac_address: "00:00:00:00:00:00" + interfaces: + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native +############################################################################## +nodes: + - name: node-1 + node: &nodeparams + # Fuel overrides certain params (e.g. cpus, mem) based on node role later + type: virtual + vendor: libvirt + model: virt + arch: x86_64 + cpus: 1 + cpu_cflags: ivybridge + cores: 8 + memory: 6G + disks: &disks + - name: 'disk1' + disk_capacity: 100G + disk_type: hdd + disk_interface: scsi # virtio-scsi + disk_rotation: 15000 + remote_management: &remotemgmt + type: libvirt + user: changeme + pass: changeme + address: 127.0.0.1 # Not used currently, will be 'qemu:///system' later + interfaces: &interfaces + - name: 'nic1' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" # MACs will be assigned by libvirt + vlan: native + - name: 'nic2' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic3' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + - name: 'nic4' + speed: 10gb + features: 'dpdk|sriov' + mac_address: "00:00:00:00:00:00" + vlan: native + ############################################################################ + - name: node-2 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-3 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-4 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces + ############################################################################ + - name: node-5 + node: *nodeparams + disks: *disks + remote_management: *remotemgmt + interfaces: *interfaces diff --git a/mcp/config/scenario/.gitignore b/mcp/config/scenario/.gitignore new file mode 100644 index 000000000..46c7f92c8 --- /dev/null +++ b/mcp/config/scenario/.gitignore @@ -0,0 +1 @@ +*-ha.yaml diff --git a/mcp/config/scenario/README.rst b/mcp/config/scenario/README.rst index 389877ac4..e03182f11 100644 --- a/mcp/config/scenario/README.rst +++ b/mcp/config/scenario/README.rst @@ -19,4 +19,4 @@ feature scenarios used by Fuel@OPNFV, e.g.: NOTES: ------ This directory is highly likely to change and/or be replaced/complemented -by the new PDF (Pod Descriptor File) info in securedlab OPNFV git repo. +by the new PDF (Pod Descriptor File) info in Pharos OPNFV git repo. diff --git a/mcp/config/scenario/baremetal/os-nosdn-nofeature-ha.yaml b/mcp/config/scenario/baremetal/os-nosdn-nofeature-ha.yaml deleted file mode 100644 index b721db431..000000000 --- a/mcp/config/scenario/baremetal/os-nosdn-nofeature-ha.yaml +++ /dev/null @@ -1,26 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## ---- -cluster: - domain: baremetal-mcp-pike-ovs-ha.local - states: - - maas - - baremetal_init - - virtual_control_plane - - openstack_ha - - networks -virtual: - nodes: - - cfg01 - - mas01 - cfg01: - vcpus: 4 - ram: 6144 - mas01: - vcpus: 4 - ram: 6144 diff --git a/mcp/config/scenario/baremetal/os-nosdn-ovs-ha.yaml b/mcp/config/scenario/baremetal/os-nosdn-ovs-ha.yaml deleted file mode 100644 index eec97eb96..000000000 --- a/mcp/config/scenario/baremetal/os-nosdn-ovs-ha.yaml +++ /dev/null @@ -1,28 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## ---- -cluster: - domain: baremetal-mcp-pike-ovs-dpdk-ha.local - states: - - maas - - baremetal_init - - virtual_control_plane - - dpdk - - openstack_ha - - networks - - networking_gw -virtual: - nodes: - - cfg01 - - mas01 - cfg01: - vcpus: 4 - ram: 6144 - mas01: - vcpus: 4 - ram: 6144 diff --git a/mcp/config/scenario/baremetal/os-odl-nofeature-ha.yaml b/mcp/config/scenario/baremetal/os-odl-nofeature-ha.yaml deleted file mode 100644 index a72c00d7d..000000000 --- a/mcp/config/scenario/baremetal/os-odl-nofeature-ha.yaml +++ /dev/null @@ -1,27 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## ---- -cluster: - domain: baremetal-mcp-pike-odl-ha.local - states: - - maas - - baremetal_init - - virtual_control_plane - - opendaylight - - openstack_ha - - networks -virtual: - nodes: - - cfg01 - - mas01 - cfg01: - vcpus: 4 - ram: 6144 - mas01: - vcpus: 4 - ram: 6144 diff --git a/mcp/config/scenario/defaults-x86_64.yaml b/mcp/config/scenario/defaults-x86_64.yaml deleted file mode 100644 index 18b0826f9..000000000 --- a/mcp/config/scenario/defaults-x86_64.yaml +++ /dev/null @@ -1,27 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## ---- -base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img -virtual: - default: - vcpus: 2 - ram: 4096 - common: - apt: - keys: - - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/SALTSTACK-GPG-KEY.pub - repos: - # <repo name> <repo prio> deb [arch=<arch>] <repo url> <repo dist> <repo comp> - - saltstack 500 deb [arch=amd64] http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11 xenial main - pkg: - install: - - salt-minion - control: - pkg: - install: - - cloud-init diff --git a/mcp/config/scenario/defaults-aarch64.yaml b/mcp/config/scenario/defaults.yaml index 1efa12ae4..13f2dd527 100644 --- a/mcp/config/scenario/defaults-aarch64.yaml +++ b/mcp/config/scenario/defaults.yaml @@ -1,13 +1,34 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc. and others. +# 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 ############################################################################## --- -base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-arm64-uefi1.img -virtual: +x86_64: + base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img + default: + vcpus: 2 + ram: 4096 + common: + apt: + keys: + - https://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/SALTSTACK-GPG-KEY.pub + repos: + # <repo name> <repo prio> deb [arch=<arch>] <repo url> <repo dist> <repo comp> + - saltstack 500 deb [arch=amd64] http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11 xenial main + pkg: + install: + - linux-generic-hwe-16.04 + - salt-minion + control: + apt: ~ + pkg: + install: + - cloud-init +aarch64: + base_image: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-arm64-uefi1.img default: vcpus: 6 ram: 4096 @@ -25,6 +46,7 @@ virtual: - linux-headers-generic-hwe-16.04-edge - salt-minion control: + apt: ~ pkg: install: - cloud-init diff --git a/mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2 new file mode 100644 index 000000000..2c4a5f197 --- /dev/null +++ b/mcp/config/scenario/os-nosdn-nofeature-ha.yaml.j2 @@ -0,0 +1,67 @@ +############################################################################## +# 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 %} +{%- 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-pike-ovs-ha.local + states: +{%- if cluster.has_baremetal_nodes %} + - maas + - baremetal_init +{%- endif %} +{%- if conf.MCP_VCP %} + - virtual_control_plane +{%- endif %} + - openstack_ha + - networks +virtual: + nodes: + - cfg01 +{%- if cluster.has_baremetal_nodes %} + - mas01 +{%- endif %} +{#- Most likely, controllers will always have the same type and number (3) #} +{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %} + - kvm01 + - kvm02 + - kvm03 +{%- endif %} +{#- Later, we might have mixed computes here, for hybrid multi-arch testing #} +{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %} + - cmp001 + - cmp002 +{%- endif %} + cfg01: + vcpus: 4 + ram: 6144 + # Below values are only used when nodes are defined in virtual.nodes above + mas01: + vcpus: 4 + ram: 6144 + # NOTE: We might need to add more RAM here + kvm01: + vcpus: 4 + ram: 14336 + kvm02: + vcpus: 4 + ram: 14336 + kvm03: + vcpus: 4 + ram: 14336 + cmp001: + vcpus: 4 + ram: 8192 + cmp002: + vcpus: 4 + ram: 8192 diff --git a/mcp/config/scenario/virtual/os-nosdn-nofeature-noha.yaml b/mcp/config/scenario/os-nosdn-nofeature-noha.yaml index b35e66fc7..3a36ae297 100644 --- a/mcp/config/scenario/virtual/os-nosdn-nofeature-noha.yaml +++ b/mcp/config/scenario/os-nosdn-nofeature-noha.yaml @@ -7,11 +7,10 @@ ############################################################################## --- cluster: - domain: virtual-mcp-pike-ovs-noha.local + domain: mcp-pike-ovs-noha.local states: - openstack_noha - neutron_gateway - - neutron_compute - networks virtual: nodes: diff --git a/mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2 b/mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2 new file mode 100644 index 000000000..96db11739 --- /dev/null +++ b/mcp/config/scenario/os-nosdn-ovs-ha.yaml.j2 @@ -0,0 +1,68 @@ +############################################################################## +# 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 %} +{%- 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-pike-ovs-dpdk-ha.local + states: +{%- if cluster.has_baremetal_nodes %} + - maas + - baremetal_init +{%- endif %} +{%- if conf.MCP_VCP %} + - virtual_control_plane +{%- endif %} + - dpdk + - openstack_ha + - networks +virtual: + nodes: + - cfg01 +{%- if cluster.has_baremetal_nodes %} + - mas01 +{%- endif %} +{#- Most likely, controllers will always have the same type and number (3) #} +{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %} + - kvm01 + - kvm02 + - kvm03 +{%- endif %} +{#- Later, we might have mixed computes here, for hybrid multi-arch testing #} +{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %} + - cmp001 + - cmp002 +{%- endif %} + cfg01: + vcpus: 4 + ram: 6144 + # Below values are only used when nodes are defined in virtual.nodes above + mas01: + vcpus: 4 + ram: 6144 + # NOTE: We might need to add more RAM here + kvm01: + vcpus: 4 + ram: 14336 + kvm02: + vcpus: 4 + ram: 14336 + kvm03: + vcpus: 4 + ram: 14336 + cmp001: + vcpus: 4 + ram: 8192 + cmp002: + vcpus: 4 + ram: 8192 diff --git a/mcp/config/scenario/virtual/os-nosdn-ovs-noha.yaml b/mcp/config/scenario/os-nosdn-ovs-noha.yaml index e3cd3dbd9..eed17c1a4 100644 --- a/mcp/config/scenario/virtual/os-nosdn-ovs-noha.yaml +++ b/mcp/config/scenario/os-nosdn-ovs-noha.yaml @@ -7,12 +7,11 @@ ############################################################################## --- cluster: - domain: virtual-mcp-pike-ovs-dpdk-noha.local + domain: mcp-pike-ovs-dpdk-noha.local states: - dpdk - openstack_noha - neutron_gateway - - neutron_compute - networks virtual: nodes: diff --git a/mcp/config/scenario/os-odl-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-odl-nofeature-ha.yaml.j2 new file mode 100644 index 000000000..0bd3a1307 --- /dev/null +++ b/mcp/config/scenario/os-odl-nofeature-ha.yaml.j2 @@ -0,0 +1,68 @@ +############################################################################## +# 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 %} +{%- 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-pike-odl-ha.local + states: +{%- if cluster.has_baremetal_nodes %} + - maas + - baremetal_init +{%- endif %} +{%- if conf.MCP_VCP %} + - virtual_control_plane +{%- endif %} + - opendaylight + - openstack_ha + - networks +virtual: + nodes: + - cfg01 +{%- if cluster.has_baremetal_nodes %} + - mas01 +{%- endif %} +{#- Most likely, controllers will always have the same type and number (3) #} +{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %} + - kvm01 + - kvm02 + - kvm03 +{%- endif %} +{#- Later, we might have mixed computes here, for hybrid multi-arch testing #} +{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %} + - cmp001 + - cmp002 +{%- endif %} + cfg01: + vcpus: 4 + ram: 6144 + # Below values are only used when nodes are defined in virtual.nodes above + mas01: + vcpus: 4 + ram: 6144 + # NOTE: We might need to add more RAM here + kvm01: + vcpus: 4 + ram: 14336 + kvm02: + vcpus: 4 + ram: 14336 + kvm03: + vcpus: 4 + ram: 14336 + cmp001: + vcpus: 4 + ram: 8192 + cmp002: + vcpus: 4 + ram: 8192 diff --git a/mcp/config/scenario/virtual/os-odl-nofeature-noha.yaml b/mcp/config/scenario/os-odl-nofeature-noha.yaml index cef41270c..f52eaf5aa 100644 --- a/mcp/config/scenario/virtual/os-odl-nofeature-noha.yaml +++ b/mcp/config/scenario/os-odl-nofeature-noha.yaml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,7 +7,7 @@ ############################################################################## --- cluster: - domain: virtual-mcp-pike-odl-noha.local + domain: mcp-pike-odl-noha.local states: - opendaylight - openstack_noha diff --git a/mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2 b/mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2 new file mode 100644 index 000000000..8b7fda0c4 --- /dev/null +++ b/mcp/config/scenario/os-ovn-nofeature-ha.yaml.j2 @@ -0,0 +1,67 @@ +############################################################################## +# 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 %} +{%- 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-pike-ovn-ha.local + states: +{%- if cluster.has_baremetal_nodes %} + - maas + - baremetal_init +{%- endif %} +{%- if conf.MCP_VCP %} + - virtual_control_plane +{%- endif %} + - openstack_ha + - networks +virtual: + nodes: + - cfg01 +{%- if cluster.has_baremetal_nodes %} + - mas01 +{%- endif %} +{#- Most likely, controllers will always have the same type and number (3) #} +{%- if conf.nodes[nm.ctl01.idx].node.type == 'virtual' %} + - kvm01 + - kvm02 + - kvm03 +{%- endif %} +{#- Later, we might have mixed computes here, for hybrid multi-arch testing #} +{%- if conf.nodes[nm.cmp001.idx].node.type == 'virtual' %} + - cmp001 + - cmp002 +{%- endif %} + cfg01: + vcpus: 4 + ram: 6144 + # Below values are only used when nodes are defined in virtual.nodes above + mas01: + vcpus: 4 + ram: 6144 + # NOTE: We might need to add more RAM here + kvm01: + vcpus: 4 + ram: 14336 + kvm02: + vcpus: 4 + ram: 14336 + kvm03: + vcpus: 4 + ram: 14336 + cmp001: + vcpus: 4 + ram: 8192 + cmp002: + vcpus: 4 + ram: 8192 diff --git a/mcp/config/scenario/virtual/os-ovn-nofeature-noha.yaml b/mcp/config/scenario/os-ovn-nofeature-noha.yaml index e0a19ebb2..104df96d3 100644 --- a/mcp/config/scenario/virtual/os-ovn-nofeature-noha.yaml +++ b/mcp/config/scenario/os-ovn-nofeature-noha.yaml @@ -7,11 +7,9 @@ ############################################################################## --- cluster: - domain: virtual-mcp-pike-ovn-noha.local + domain: mcp-pike-ovn-noha.local states: - openstack_noha - - ovn_ctl_opts - - neutron_compute - networks virtual: nodes: diff --git a/mcp/config/states/baremetal_init b/mcp/config/states/baremetal_init index c14772837..891eae365 100755 --- a/mcp/config/states/baremetal_init +++ b/mcp/config/states/baremetal_init @@ -1,6 +1,6 @@ #!/bin/bash -e ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -25,8 +25,11 @@ salt -C 'kvm* or cmp*' file.replace $debian_ip_source \ salt -C 'kvm*' pkg.install bridge-utils salt -C 'kvm*' state.apply linux.network,linux.system.kernel salt -C 'kvm* or cmp*' state.apply salt.minion -salt -C 'cmp*' state.apply linux.system +wait_for 5.0 "salt -C 'cmp*' state.apply linux.system" +# wrap distro `route` binary to silence errors when route already exists +wait_for 5.0 "salt -C 'kvm* or cmp*' state.apply opnfv.route_wrapper" salt -C 'cmp*' state.apply linux.network || true +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 \ diff --git a/mcp/config/states/dpdk b/mcp/config/states/dpdk index 5ae2aac48..281b78fed 100755 --- a/mcp/config/states/dpdk +++ b/mcp/config/states/dpdk @@ -12,8 +12,5 @@ CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x # shellcheck disable=SC1090 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" -salt -I 'nova:compute' system.reboot -wait_for 90.0 "salt -I 'nova:compute' test.ping" - salt -I 'nova:compute' alternatives.set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk salt -I 'nova:compute' service.restart openvswitch-switch diff --git a/mcp/config/states/maas b/mcp/config/states/maas index 8f7a86611..10cfd01bf 100755 --- a/mcp/config/states/maas +++ b/mcp/config/states/maas @@ -14,6 +14,9 @@ ERASE_ENV=${ERASE_ENV:-0} source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/globals.sh" source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" +bm_nodes=$(salt --out yaml 'mas01*' pillar.get maas:region:machines | \ + awk '/^\s+\w+[[:digit:]]+:$/ {gsub(/:$/, "*"); printf "%s ", $1}') + # Wait for MaaS commissioning/deploy to finish, retry on failure function maas_fixup() { local statuscmd="salt 'mas01*' --out yaml state.apply maas.machines.status" @@ -27,12 +30,19 @@ function maas_fixup() { local fcnodes=$(echo "${statusout}" | \ grep -Pzo 'status: Failed commissioning\n\s+system_id: \K.+\n') + local ftnodes=$(echo "${statusout}" | \ + grep -Pzo 'status: Failed testing\n\s+system_id: \K.+\n') for node_system_id in ${fcnodes}; do salt -C 'mas01*' state.apply maas.machines.delete \ pillar="{'system_id': '${node_system_id}'}" sleep 10 done - if [ -n "${fcnodes}" ]; then + for node_system_id in ${ftnodes}; do + salt -C 'mas01*' state.apply maas.machines.override_failed_testing \ + pillar="{'system_id': '${node_system_id}'}" + sleep 10 + done + if [ -n "${fcnodes}" ] || [ -n "${ftnodes}" ]; then salt -C 'mas01*' state.apply maas.machines return 1 fi @@ -47,6 +57,16 @@ function maas_fixup() { sleep 10 done if [ -n "${fdnodes}" ] || [ -n "${rnodes}" ]; then + for node_system_id in ${fdnodes} ${rnodes}; do + # For now, we allocate 30GB (fixed) for / on cmp nodes + local node_hostname=$(echo "${statusout}" | \ + grep -Pzo 'hostname: \K.+(?=\n.+\n\s+system_id: '"${node_system_id}"')') + if [[ "${node_hostname}" =~ ^cmp ]]; then + salt -C 'mas01*' state.apply maas.machines.set_storage_layout \ + pillar="{'system_id': '${node_system_id}', 'lv_size': '32212254720'}" + sleep 10 + fi + done salt -C 'mas01*' state.apply maas.machines.deploy return 1 fi @@ -68,16 +88,19 @@ fi # MaaS rack/region controller, node commissioning salt -C 'mas01*' state.apply linux,salt,openssh,ntp +salt -C 'mas01*' state.apply maas.pxe_nat salt -C 'mas01*' state.apply maas.cluster wait_for 10 "salt -C 'mas01*' state.apply maas.region" -salt -C 'mas01*' state.apply maas.machines +if [ -n "${bm_nodes}" ]; then + salt -C 'mas01*' state.apply maas.machines +fi # cleanup outdated salt keys sleep 30 salt-key --out yaml | awk '!/^(minions|- cfg01|- mas01)/ {print $2}' | \ - xargs -I{} salt-key -yd {} + xargs --no-run-if-empty -I{} salt-key -yd {} # MaaS node deployment wait_for 10 maas_fixup @@ -87,18 +110,6 @@ salt -C 'mas01*' pillar.item\ maas:region:admin:password # Check all baremetal nodes are available -rc=1 -attempt=0 -total_attempts=10 -while [ $rc -ne 0 ] && [ ${attempt} -lt ${total_attempts} ]; do - bm_nodes=$(salt --out yaml 'mas01*' pillar.get maas:region:machines | \ - awk '/^\s+\w+[[:digit:]]+:$/ {gsub(/:$/, "*"); print $1}') - rc=0 - for node in $bm_nodes; do - salt "$node" test.ping 2>/dev/null || { rc=$?; break; }; - done - sleep 5 - ((attempt+=1)) -done +wait_for 5.0 "(for n in ${bm_nodes}; do salt \${n} test.ping 2>/dev/null || exit; done)" wait_for 10.0 "salt -C '* and not cfg01* and not mas01*' saltutil.sync_all" diff --git a/mcp/config/states/neutron_compute b/mcp/config/states/neutron_compute deleted file mode 100755 index c6b90e20d..000000000 --- a/mcp/config/states/neutron_compute +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -e -############################################################################## -# Copyright (c) 2017 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 -############################################################################## - -CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x - -salt -I 'neutron:compute' state.sls neutron diff --git a/mcp/config/states/opendaylight b/mcp/config/states/opendaylight index 34a2c3bd8..de15d0cef 100755 --- a/mcp/config/states/opendaylight +++ b/mcp/config/states/opendaylight @@ -1,6 +1,6 @@ #!/bin/bash -e ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -9,7 +9,13 @@ CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x -salt -I 'opendaylight:server' state.sls opendaylight -salt -I 'opendaylight:client' state.sls opendaylight.client -salt -I 'opendaylight:client' cmd.run 'neutron-odl-ovs-hostconfig --noovs_dpdk' -salt -I 'neutron:server' state.sls opendaylight.client +# shellcheck disable=SC1090 +source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" + +# Get OpenDaylight server options with prefix odl_ +function odl() { + salt --out txt -I 'opendaylight:server' pillar.get "opendaylight:server:odl_$1" | cut -d ' ' -f2 +} + +wait_for 5.0 "salt -I 'opendaylight:server' state.sls opendaylight" +wait_for 20 "salt --out yaml -C 'I@neutron:server and *01*' network.connect $(odl bind_ip) $(odl rest_port) | fgrep -q 'result: true'" diff --git a/mcp/config/states/openstack_ha b/mcp/config/states/openstack_ha index 0bbf7cde5..77063d6c8 100755 --- a/mcp/config/states/openstack_ha +++ b/mcp/config/states/openstack_ha @@ -12,8 +12,8 @@ CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x # shellcheck disable=SC1090 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" -salt -I 'keepalived:cluster' state.sls keepalived -b 1 -salt -I 'keepalived:cluster' pillar.get keepalived:cluster:instance:VIP:address +wait_for 5.0 "salt -I 'keepalived:cluster' state.sls keepalived -b 1" +wait_for 5.0 "salt -I 'keepalived:cluster' pillar.get keepalived:cluster:instance:VIP:address" salt -C 'I@rabbitmq:server and *01*' state.sls rabbitmq salt -I 'rabbitmq:server' state.sls rabbitmq @@ -25,10 +25,10 @@ salt -I 'glusterfs:server' cmd.run "gluster peer status; gluster volume status" salt -I 'glusterfs:client' state.sls glusterfs.client salt -I 'galera:master' state.sls galera -salt -I 'galera:slave' state.sls galera +salt -I 'galera:slave' state.sls galera -b 1 salt -I 'galera:master' mysql.status | grep -A1 wsrep_cluster_size -salt -I 'memcached:server' state.sls memcached +wait_for 3.0 "salt -I 'memcached:server' state.sls memcached" salt -I 'haproxy:proxy' state.sls haproxy salt -I 'haproxy:proxy' service.status haproxy @@ -38,15 +38,15 @@ set +e; salt -I 'keystone:server' state.sls keystone.server -b 1; set -e salt -I 'keystone:server' service.restart apache2 salt -I 'keystone:server' state.sls keystone.server -b 1 -wait_for 30 "salt -I 'keystone:client' state.sls keystone.client" +wait_for 30.0 "salt -I 'keystone:client' state.sls keystone.client" salt -I 'keystone:server' cmd.run ". /root/keystonercv3; openstack service list" salt -I 'glance:server' state.sls glance -b 1 salt -I 'nova:controller' state.sls nova -b 1 salt -I 'heat:server' state.sls heat -b 1 -wait_for 5 "salt -I 'cinder:controller' state.sls cinder -b 1" -wait_for 3 "salt -I 'cinder:volume' state.sls cinder" +wait_for 5.0 "salt -I 'cinder:controller' state.sls cinder -b 1" +wait_for 3.0 "salt -I 'cinder:volume' state.sls cinder" salt -I 'neutron:server' state.sls neutron -b 1 salt -I 'neutron:gateway' state.sls neutron.gateway @@ -54,7 +54,7 @@ salt -I 'neutron:gateway' state.sls neutron.gateway salt -I 'nova:compute' state.sls nova salt -C 'I@mongodb:server and *01*' state.sls mongodb || true -wait_for 10 "salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin'" +wait_for 10.0 "salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin'" salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin --eval "rs.initiate()"' salt -I 'mongodb:server' state.sls mongodb @@ -63,23 +63,27 @@ salt -I 'ceilometer:server' state.sls ceilometer salt -I 'ceilometer:agent' state.sls ceilometer salt -I 'horizon:server' state.sls horizon -salt -I 'nginx:server' state.sls nginx,sphinx - -# workaround for the pike horizon is missing css, FUEL-324 -salt -I 'horizon:server' file.symlink \ - /var/lib/openstack-dashboard/static \ - /usr/share/openstack-dashboard/static -salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py collectstatic --noinput" -salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py compress --force" -salt -I 'horizon:server' file.append /etc/openstack-dashboard/local_settings.py \ - "AVAILABLE_THEMES = [ ('default', 'Default', 'themes/default'),]" -salt -I 'horizon:server' service.reload apache2 - -clstr_vip_addr=$(salt -C 'I@nginx:server and *01*' --out=yaml \ - pillar.get _param:cluster_vip_address | awk '{print $2; exit}') -salt -C 'I@nginx:server and *01*' cp.push \ - "/etc/ssl/certs/${clstr_vip_addr}-with-chain.crt" upload_path='certs/os_cacert' -cd /etc/ssl/certs && ln -sf /var/cache/salt/master/minions/prx01.*/files/certs/os_cacert +salt -I 'nginx:server' state.sls nginx + +# workaround for Ubuntu Pike Horizon missing css, FUEL-324 +if ! salt -C 'I@horizon:server and *01*' --out=yaml pkg.version openstack-dashboard | grep -qE ':.*mcp'; then + salt -I 'horizon:server' file.symlink \ + /var/lib/openstack-dashboard/static \ + /usr/share/openstack-dashboard/static + salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py collectstatic --noinput" + salt -I 'horizon:server' cmd.run "/usr/share/openstack-dashboard/manage.py compress --force" + salt -I 'horizon:server' file.append /etc/openstack-dashboard/local_settings.py \ + "AVAILABLE_THEMES = [ ('default', 'Default', 'themes/default'),]" + salt -I 'horizon:server' service.reload apache2 +fi + +cluster_public_host=$(salt -C 'I@nginx:server and *01*' --out=yaml \ + pillar.get _param:cluster_public_host | awk '{print $2; exit}') +dashboard_host=$(salt -C 'I@nginx:server and *01*' --out=yaml cp.push \ + "/etc/ssl/certs/${cluster_public_host}-with-chain.crt" \ + upload_path='certs/os_cacert' | cut -d':' -f1) +cd /etc/ssl/certs && \ + ln -sf "/var/cache/salt/master/minions/${dashboard_host}/files/certs/os_cacert" # glance v1 api is required by orchestra tests salt -I 'glance:server' ini.set_option /etc/glance/glance-api.conf '{DEFAULT: {enable_v1_api: True}}' diff --git a/mcp/config/states/openstack_noha b/mcp/config/states/openstack_noha index 9fc30bbf1..4c8cbcf8a 100755 --- a/mcp/config/states/openstack_noha +++ b/mcp/config/states/openstack_noha @@ -42,6 +42,7 @@ salt -I 'cinder:controller' state.sls cinder wait_for 3 "salt -I 'cinder:volume' state.sls cinder" salt -I 'neutron:server' state.sls neutron +salt -I 'neutron:compute' state.sls neutron salt -I 'nova:compute' state.sls nova diff --git a/mcp/config/states/ovn_ctl_opts b/mcp/config/states/ovn_ctl_opts deleted file mode 100755 index eeb336b28..000000000 --- a/mcp/config/states/ovn_ctl_opts +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -e -############################################################################## -# Copyright (c) 2017 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 -############################################################################## - -CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x - -salt -I 'neutron:server' file.append /etc/default/ovn-central \ - args="OVN_CTL_OPTS='--db-nb-create-insecure-remote=yes --db-sb-create-insecure-remote=yes'" -salt -I 'neutron:server' service.restart ovn-central -sleep 30 diff --git a/mcp/config/states/virtual_control_plane b/mcp/config/states/virtual_control_plane index 338c4470f..c391cfe6f 100755 --- a/mcp/config/states/virtual_control_plane +++ b/mcp/config/states/virtual_control_plane @@ -33,20 +33,10 @@ salt -C 'kvm* or cmp*' state.apply salt wait_for 10.0 "salt -C 'kvm*' state.sls salt.control" vcp_nodes=$(salt --out yaml 'kvm01*' pillar.get salt:control:cluster:internal:node | \ - awk '/\s+\w+:$/ {gsub(/:$/, "*"); print $1}') + awk '/\s+\w+:$/ {gsub(/:$/, "*"); printf "%s ", $1}') # Check all vcp nodes are available -rc=1 -attempt=0 -total_attempts=50 -while [ $rc -ne 0 ] && [ ${attempt} -lt ${total_attempts} ]; do - rc=0 - for node in $vcp_nodes; do - salt "$node" test.ping 2>/dev/null || { rc=$?; break; }; - done - sleep 5 - ((attempt+=1)) -done +wait_for 25.0 "(for n in ${vcp_nodes}; do salt \${n} test.ping 2>/dev/null || exit; done)" wait_for 10.0 "salt -C '* and not cfg01* and not mas01*' saltutil.sync_all" @@ -58,7 +48,7 @@ cd /srv/salt/env/prd/maas/files && ln -sf \ salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' cp.get_file \ "salt://maas/files/$(basename "${APT_CONF_D_CURTIN}")" "${APT_CONF_D_CURTIN}" -wait_for 10 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply salt" +wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply salt" 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} \ @@ -67,6 +57,7 @@ wait_for 10.0 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' ssh.set_auth_key ${SUDO_ # 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" diff --git a/mcp/metadata/service/opendaylight/server/single.yml b/mcp/metadata/service/opendaylight/server/single.yml index b714809b3..3a762b39a 100644 --- a/mcp/metadata/service/opendaylight/server/single.yml +++ b/mcp/metadata/service/opendaylight/server/single.yml @@ -9,8 +9,12 @@ applications: - opendaylight parameters: + _param: + version: oxygen opendaylight: server: enabled: 'True' + version: ${_param:version} + repo: 'odl-team/${_param:version}' logging: engine: syslog diff --git a/mcp/patches/0001-opendaylight-formula-neutron.patch b/mcp/patches/0001-opendaylight-formula-neutron.patch deleted file mode 100644 index 4bd161700..000000000 --- a/mcp/patches/0001-opendaylight-formula-neutron.patch +++ /dev/null @@ -1,135 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 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: Michael Polenchuk <mpolenchuk@mirantis.com> -Date: Thu, 29 Jun 2017 12:05:25 +0400 -Subject: [PATCH] Bring in opendaylight support - -Change-Id: Ie9073fafccba336f94b1996bd85c98d7a7f5060b - -diff --git a/neutron/files/pike/dhcp_agent.ini b/neutron/files/pike/dhcp_agent.ini -index d327e64..739dddf 100644 ---- a/neutron/files/pike/dhcp_agent.ini -+++ b/neutron/files/pike/dhcp_agent.ini -@@ -1,3 +1,8 @@ -+{%- if pillar.neutron.gateway is defined %} -+{%- from "neutron/map.jinja" import gateway as neutron with context %} -+{%- else %} -+{%- from "neutron/map.jinja" import compute as neutron with context %} -+{%- endif %} - [DEFAULT] - - # -@@ -48,6 +53,7 @@ enable_isolated_metadata = True - # this value will force the DHCP server to append specific host routes to the DHCP request. If this option is set, then the metadata service - # will be activated for all the networks. (boolean value) - #force_metadata = false -+{% if neutron.backend.router is defined %}force_metadata = True{% endif %} - - # Allows for serving metadata requests coming from a dedicated metadata access network whose CIDR is 169.254.169.254/16 (or larger prefix), - # and is connected to a Neutron router from which the VMs send metadata:1 request. In this case DHCP Option 121 will not be injected in VMs, -diff --git a/neutron/files/pike/ml2_conf.ini b/neutron/files/pike/ml2_conf.ini -index b61e313..02da3b1 100644 ---- a/neutron/files/pike/ml2_conf.ini -+++ b/neutron/files/pike/ml2_conf.ini -@@ -134,7 +134,8 @@ tenant_network_types = {{ server.backend.tenant_network_types }} - {%- for mechanism_name, mechanism in server.get('backend', {}).get('mechanism', []).items() %} - {%- do mechanism_drivers.append(mechanism.get('driver')) if 'driver' in mechanism %} - {%- endfor %} --{%- if "vxlan" in server.backend.tenant_network_types %} -+{%- set opendaylight_enabled = true if 'opendaylight' in mechanism_drivers|join else false %} -+{%- if "vxlan" in server.backend.tenant_network_types and not opendaylight_enabled %} - {%- do mechanism_drivers.append('l2population') %} - {%- endif %} - mechanism_drivers = {{ ','.join(mechanism_drivers) }} -@@ -311,3 +312,11 @@ ovn_nb_connection = tcp:{{ server.controller_vip }}:6641 - ovn_sb_connection = tcp:{{ server.controller_vip }}:6642 - ovn_l3_scheduler = leastloaded - {%- endif %} -+ -+{%- if opendaylight_enabled %} -+[ml2_odl] -+port_binding_controller = pseudo-agentdb-binding -+url = http://{{ server.backend.host }}:{{ server.backend.rest_api_port }}/controller/nb/v2/neutron -+username = {{ server.backend.user }} -+password = {{ server.backend.password }} -+{%- endif %} -diff --git a/neutron/files/pike/neutron-generic.conf.Debian b/neutron/files/pike/neutron-generic.conf.Debian -index 123386d..d77f6c8 100644 ---- a/neutron/files/pike/neutron-generic.conf.Debian -+++ b/neutron/files/pike/neutron-generic.conf.Debian -@@ -37,7 +37,7 @@ auth_strategy = keystone - - core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin - --service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin -+service_plugins = {{ neutron.backend.get('router', 'router')}}, metering - - {% endif %} - -@@ -668,7 +668,7 @@ root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf - # needs to execute commands in Dom0 in the hypervisor of XenServer, this item - # should be set to 'xenapi_root_helper', so that it will keep a XenAPI session - # to pass commands to Dom0. (string value) --root_helper_daemon = sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf -+#root_helper_daemon = <None> - - # Seconds between nodes reporting state to server; should be less than - # agent_down_time, best if it is half or less than agent_down_time. (floating -@@ -2092,3 +2092,8 @@ heartbeat_rate = 2 - # Sets the list of available ciphers. value should be a string in the OpenSSL - # cipher list format. (string value) - #ciphers = <None> -+ -+{%- if neutron.backend.ovsdb_connection is defined %} -+[ovs] -+ovsdb_connection = {{ neutron.backend.ovsdb_connection }} -+{%- endif %} -diff --git a/neutron/files/pike/neutron-server.conf.Debian b/neutron/files/pike/neutron-server.conf.Debian -index 79376a2..a7a4645 100644 ---- a/neutron/files/pike/neutron-server.conf.Debian -+++ b/neutron/files/pike/neutron-server.conf.Debian -@@ -50,7 +50,7 @@ core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin - {% set l3_plugin = 'networking_ovn.l3.l3_ovn.OVNL3RouterPlugin' %} - {% endif %} - --service_plugins ={{ l3_plugin }}, neutron.services.metering.metering_plugin.MeteringPlugin -+service_plugins = {{ server.backend.get('router', l3_plugin)}}, metering - {%- if server.lbaas is defined -%},lbaasv2{%- endif -%} - {%- if fwaas.get('enabled', False) -%},{{ fwaas[fwaas.api_version]['service_plugin'] }}{%- endif -%} - {%- if server.get('qos', 'True') -%},neutron.services.qos.qos_plugin.QoSPlugin{%- endif -%} -@@ -703,7 +703,7 @@ root_helper = sudo /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf - # needs to execute commands in Dom0 in the hypervisor of XenServer, this item - # should be set to 'xenapi_root_helper', so that it will keep a XenAPI session - # to pass commands to Dom0. (string value) --root_helper_daemon = sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf -+#root_helper_daemon = <None> - - # Seconds between nodes reporting state to server; should be less than - # agent_down_time, best if it is half or less than agent_down_time. (floating -@@ -2245,3 +2245,8 @@ username = {{ server.identity.user }} - password = {{ server.identity.password }} - auth_url=http://{{ server.identity.host }}:35357 - {%- endif %} -+ -+{%- if server.backend.ovsdb_connection is defined %} -+[ovs] -+ovsdb_connection = {{ server.backend.ovsdb_connection }} -+{%- endif %} -diff --git a/neutron/gateway.sls b/neutron/gateway.sls -index 81513d8..7ec9b91 100644 ---- a/neutron/gateway.sls -+++ b/neutron/gateway.sls -@@ -32,6 +32,7 @@ neutron_gateway_packages: - /etc/neutron/dhcp_agent.ini: - file.managed: - - source: salt://neutron/files/{{ gateway.version }}/dhcp_agent.ini -+ - template: jinja - - require: - - pkg: neutron_gateway_packages - diff --git a/mcp/patches/0002-maas-region-skip-credentials-update.patch b/mcp/patches/0002-maas-region-skip-credentials-update.patch index 11e8befb8..1d226e4cd 100644 --- a/mcp/patches/0002-maas-region-skip-credentials-update.patch +++ b/mcp/patches/0002-maas-region-skip-credentials-update.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 diff --git a/mcp/patches/0003-maas-region-force-artifact-download.patch b/mcp/patches/0003-maas-region-force-artifact-download.patch index 6e6c18fba..b61a3d1b8 100644 --- a/mcp/patches/0003-maas-region-force-artifact-download.patch +++ b/mcp/patches/0003-maas-region-force-artifact-download.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 diff --git a/mcp/patches/0004-maas-region-use-authorized_keys-1st-entry.patch b/mcp/patches/0004-maas-region-use-authorized_keys-1st-entry.patch deleted file mode 100644 index a4fb44b05..000000000 --- a/mcp/patches/0004-maas-region-use-authorized_keys-1st-entry.patch +++ /dev/null @@ -1,45 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 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: Charalampos Kominos <Charalampos.Kominos@enea.com> -Date: Sat, 5 Aug 2017 02:03:01 +0200 -Subject: [PATCH] maas: region: use authorized_keys 1st entry - -MaaS custom py modules accepts the "sshprefs" variable via pillar, -however we want to read it from ~ubuntu/.ssh/authorized_keys. - -Bypass the py module and call MaaS CLI directly, passing the first -authorized key, which should be mcp.rsa.pub. - -Signed-off-by: Charalampos Kominos <Charalampos.Kominos@enea.com> ---- - -diff --git a/maas/region.sls b/maas/region.sls ---- a/maas/region.sls -+++ b/maas/region.sls -@@ -242,12 +242,16 @@ - - require: - - module: maas_config - --{%- if region.get('sshprefs', False) %} - maas_sshprefs: -- module.run: -- - name: maas.process_sshprefs -+# NOTE(armband): maas.process_sshprefs also works, but we need to read the key -+# from authorized_keys. Should be reworked at some point. -+# module.run: -+# - name: maas.process_sshprefs -+# - require: -+ cmd.run: -+ - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && SSH_KEY=$(cat authorized_keys | head -1) && (maas opnfv sshkeys read | grep -q \"$SSH_KEY\" || maas opnfv sshkeys create \"key=$SSH_KEY\")" -+ - cwd: "/home/ubuntu/.ssh" - - require: - - module: maas_config --{%- endif %} - - {%- endif %} diff --git a/mcp/patches/0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch b/mcp/patches/0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch new file mode 100644 index 000000000..180a9ddee --- /dev/null +++ b/mcp/patches/0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch @@ -0,0 +1,41 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: 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: Sun, 25 Feb 2018 03:43:49 +0100 +Subject: [PATCH] network.dpdk: Move ifcfg-br-prv to interfaces.u + +Workaround for Upstream-Bug: +https://github.com/saltstack/salt/issues/40262 + +Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> +--- + linux/network/dpdk.sls | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls +index 05fe05f..cc0ff9e 100644 +--- a/linux/network/dpdk.sls ++++ b/linux/network/dpdk.sls +@@ -128,7 +128,7 @@ linux_network_dpdk_bridge_interface_{{ interface_name }}: + After=openvswitch-switch.service + + {# enforce ip address and mtu for ovs dpdk br-prv #} +-/etc/network/interfaces.d/ifcfg-{{ interface_name }}: ++/etc/network/interfaces.u/ifcfg-{{ interface_name }}: + file.managed: + - contents: | + auto {{ interface_name }} +@@ -138,6 +138,7 @@ linux_network_dpdk_bridge_interface_{{ interface_name }}: + {%- if interface.mtu is defined %} + mtu {{ interface.mtu }} + {%- endif %} ++ - makedirs: True + - require: + - file: /etc/systemd/system/ifup@{{ interface_name }}.service.d/override.conf + diff --git a/mcp/patches/0005-maas-module-Obtain-fabric-ID-from-CIDR.patch b/mcp/patches/0005-maas-module-Obtain-fabric-ID-from-CIDR.patch index 4c626badf..4a81786b2 100644 --- a/mcp/patches/0005-maas-module-Obtain-fabric-ID-from-CIDR.patch +++ b/mcp/patches/0005-maas-module-Obtain-fabric-ID-from-CIDR.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 diff --git a/mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch b/mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch index 8d4a72c9a..d2f531168 100644 --- a/mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch +++ b/mcp/patches/0006-maas-module-Add-VLAN-DHCP-enable-support.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 diff --git a/mcp/patches/0007-network.interface-Fix-ifup-OVS-port-with-route.patch b/mcp/patches/0007-network.interface-Fix-ifup-OVS-port-with-route.patch index 49b2b88cc..2a5e29e9e 100644 --- a/mcp/patches/0007-network.interface-Fix-ifup-OVS-port-with-route.patch +++ b/mcp/patches/0007-network.interface-Fix-ifup-OVS-port-with-route.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 diff --git a/mcp/patches/0008-Handle-extra-environment-variables.patch b/mcp/patches/0008-Handle-extra-environment-variables.patch new file mode 100644 index 000000000..8df3227f2 --- /dev/null +++ b/mcp/patches/0008-Handle-extra-environment-variables.patch @@ -0,0 +1,25 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: 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: Michael Polenchuk <mpolenchuk@mirantis.com> +Date: Mon, 12 Mar 2018 17:43:09 +0400 +Subject: [PATCH] Handle extra environment variables + +Change-Id: Ieae46ac65041630759c82238a8a5ce0535c454b2 + +diff --git a/keystone/files/keystonercv3 b/keystone/files/keystonercv3 +index 1b7f378..984c8a2 100644 +--- a/keystone/files/keystonercv3 ++++ b/keystone/files/keystonercv3 +@@ -11,3 +11,6 @@ export OS_REGION_NAME={{ server.region }} + export OS_INTERFACE=internal + export OS_ENDPOINT_TYPE="internal" + export OS_CACERT="{{ server.cacert }}" ++{%- for opt, value in server.get('openrc_extra', {}).iteritems() %} ++{{ "export %s=%s"|format(opt|upper, value) }} ++{%- endfor %} diff --git a/mcp/patches/0008-Handle-kernel-boot-options.patch b/mcp/patches/0008-Handle-kernel-boot-options.patch deleted file mode 100644 index f5198a2ab..000000000 --- a/mcp/patches/0008-Handle-kernel-boot-options.patch +++ /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 -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -From: Michael Polenchuk <mpolenchuk@mirantis.com> -Date: Thu, 25 Jan 2018 13:22:39 +0400 -Subject: [PATCH] Handle kernel boot options - -The 'system.kernel.elevator' and 'system.kernel.isolcpu' options -have been kept for backward compatibility and should be used in new -fashion way with system.kernel.boot_options parameter. - -Change-Id: I51f7167b8b8946500df2065ee6b02bcf21809bc9 - -diff --git a/linux/system/kernel.sls b/linux/system/kernel.sls -index 59b7177..b1c3f3b 100644 ---- a/linux/system/kernel.sls -+++ b/linux/system/kernel.sls -@@ -3,39 +3,24 @@ - - {%- if system.kernel is defined %} - --{%- if system.kernel.isolcpu is defined or system.kernel.elevator is defined %} -+{%- set kernel_boot_opts = [] %} -+{%- do kernel_boot_opts.append('isolcpus=' ~ system.kernel.isolcpu) if system.kernel.isolcpu is defined %} -+{%- do kernel_boot_opts.append('elevator=' ~ system.kernel.elevator) if system.kernel.elevator is defined %} -+{%- do kernel_boot_opts.extend(system.kernel.boot_options) if system.kernel.boot_options is defined %} - -+{%- if kernel_boot_opts %} - include: - - linux.system.grub - --{%- if system.kernel.isolcpu is defined %} -- --/etc/default/grub.d/90-isolcpu.cfg: -- file.managed: -- - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT isolcpus={{ system.kernel.isolcpu }}"' -- - require: -- - file: grub_d_directory --{%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %} -- - watch_in: -- - cmd: grub_update -- --{%- endif %} --{%- endif %} -- --{%- if system.kernel.elevator is defined %} -- --/etc/default/grub.d/91-elevator.cfg: -+/etc/default/grub.d/99-custom-settings.cfg: - file.managed: -- - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT elevator={{ system.kernel.elevator }}"' -+ - contents: 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT {{ kernel_boot_opts|join(' ') }}"' - - require: - - file: grub_d_directory - {%- if grains.get('virtual_subtype', None) not in ['Docker', 'LXC'] %} - - watch_in: - - cmd: grub_update -- --{%- endif %} - {%- endif %} -- - {%- endif %} - - {%- if system.kernel.version is defined %} diff --git a/mcp/patches/0009-controller-Use-keystoneclient-to-check-project-ID.patch b/mcp/patches/0009-controller-Use-keystoneclient-to-check-project-ID.patch deleted file mode 100644 index ed34e0646..000000000 --- a/mcp/patches/0009-controller-Use-keystoneclient-to-check-project-ID.patch +++ /dev/null @@ -1,168 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 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: Wed, 3 Jan 2018 00:50:50 +0100 -Subject: [PATCH] controller: Use keystoneclient to check project ID - -Port fix from [1] for using the internal network when connecting -to keystone during project ID validation in nova, instead of -going through public endpoint (and using SSL). - -[1] https://bugs.launchpad.net/nova/+bug/1716344 - -Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> ---- - nova/controller.sls | 10 ++ - ...keystoneclient-to-check-project-ID-exists.patch | 116 +++++++++++++++++++++ - 2 files changed, 126 insertions(+) - create mode 100644 nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch - -diff --git a/nova/controller.sls b/nova/controller.sls -index a55d037..59af945 100644 ---- a/nova/controller.sls -+++ b/nova/controller.sls -@@ -71,6 +71,16 @@ contrail_nova_packages: - - {%- endif %} - -+nova-api-openstack-identity-patch: -+ file.patch: -+ - name: /usr/lib/python2.7/dist-packages -+ - source: salt://nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch -+ - hash: False -+ - options: '-p1' -+ - unless: 'test -f /var/cache/salt/minion/files/base/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch && cd /usr/lib/python2.7/dist-packages && patch -p1 -R --dry-run /var/cache/salt/minion/files/base/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch' -+ - require: -+ - pkg: nova_controller_packages -+ - /etc/nova/nova.conf: - file.managed: - - source: salt://nova/files/{{ controller.version }}/nova-controller.conf.{{ grains.os_family }} -diff --git a/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch b/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch -new file mode 100644 -index 0000000..58d027e ---- /dev/null -+++ b/nova/files/0001-Use-keystoneclient-to-check-project-ID-exists.patch -@@ -0,0 +1,116 @@ -+From: Christoph Fiehe <fiehe@gmx.de> -+Date: Wed, 3 Jan 2018 00:11:20 +0100 -+Subject: [PATCH] Use keystoneclient to check project ID exists -+ -+Based on Christoph's implementation proposed in [1]. -+ -+[1] https://bugs.launchpad.net/nova/+bug/1716344 -+ -+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> -+--- -+ nova/api/openstack/identity.py | 81 ++++++++++++++++-------------------------- -+ 1 file changed, 30 insertions(+), 51 deletions(-) -+ -+diff --git a/nova/api/openstack/identity.py b/nova/api/openstack/identity.py -+index 833d3b5..3269cec 100644 -+--- a/nova/api/openstack/identity.py -++++ b/nova/api/openstack/identity.py -+@@ -12,16 +12,15 @@ -+ # License for the specific language governing permissions and limitations -+ # under the License. -+ -+-from keystoneauth1 import exceptions as kse -+-from keystoneauth1 import loading as ks_loading -++from keystoneauth1 import session -++from keystoneclient import exceptions as kse -++from keystoneclient.v3 import client -+ from oslo_log import log as logging -+ import webob -+ -+-import nova.conf -+ from nova.i18n import _ -+ -+ -+-CONF = nova.conf.CONF -+ LOG = logging.getLogger(__name__) -+ -+ -+@@ -32,51 +31,31 @@ def verify_project_id(context, project_id): -+ an HTTPBadRequest is emitted. -+ -+ """ -+- sess = ks_loading.load_session_from_conf_options( -+- CONF, 'keystone', auth=context.get_auth_plugin()) -+- -+- failure = webob.exc.HTTPBadRequest( -+- explanation=_("Project ID %s is not a valid project.") % -+- project_id) -++ auth = context.get_auth_plugin() -++ sess = session.Session(auth=auth) -++ keystone = client.Client(session=sess) -+ try: -+- resp = sess.get('/projects/%s' % project_id, -+- endpoint_filter={ -+- 'service_type': 'identity', -+- 'version': (3, 0) -+- }, -+- raise_exc=False) -+- except kse.EndpointNotFound: -+- LOG.error( -+- "Keystone identity service version 3.0 was not found. This might " -+- "be because your endpoint points to the v2.0 versioned endpoint " -+- "which is not supported. Please fix this.") -+- raise failure -+- except kse.ClientException: -+- # something is wrong, like there isn't a keystone v3 endpoint, -+- # we'll take the pass and default to everything being ok. -+- LOG.exception("Unable to contact keystone to verify project_id") -+- return True -+- -+- if resp: -+- # All is good with this 20x status -+- return True -+- elif resp.status_code == 404: -+- # we got access, and we know this project is not there -+- raise failure -+- elif resp.status_code == 403: -+- # we don't have enough permission to verify this, so default -+- # to "it's ok". -+- LOG.info( -+- "Insufficient permissions for user %(user)s to verify " -+- "existence of project_id %(pid)s", -+- {"user": context.user_id, "pid": project_id}) -+- return True -+- else: -+- LOG.warning( -+- "Unexpected response from keystone trying to " -+- "verify project_id %(pid)s - resp: %(code)s %(content)s", -+- {"pid": project_id, -+- "code": resp.status_code, -+- "content": resp.content}) -+- # realize we did something wrong, but move on with a warning -+- return True -++ project = keystone.projects.get(project_id) -++ except kse.ClientException as e: -++ if e.http_status == 404: -++ # we got access, and we know this project is not there -++ raise webob.exc.HTTPBadRequest( -++ explanation=_("Project ID %s is not a valid project.") % -++ project_id) -++ elif e.http_status == 403: -++ # we don't have enough permission to verify this, so default -++ # to "it's ok". -++ LOG.info( -++ "Insufficient permissions for user %(user)s to verify " -++ "existence of project_id %(pid)s", -++ {"user": context.user_id, "pid": project_id}) -++ return True -++ else: -++ LOG.warning( -++ "Unexpected response from keystone trying to " -++ "verify project_id %(pid)s - resp: %(code)s %(content)s", -++ {"pid": project_id, -++ "code": resp.status_code, -++ "content": resp.content}) -++ # realize we did something wrong, but move on with a warning -++ return True diff --git a/mcp/patches/0010-maas-region-allow-timeout-override.patch b/mcp/patches/0010-maas-region-allow-timeout-override.patch index 5b8d5a1fe..c6f9e3a52 100644 --- a/mcp/patches/0010-maas-region-allow-timeout-override.patch +++ b/mcp/patches/0010-maas-region-allow-timeout-override.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 @@ -31,6 +31,11 @@ reserved range, but instead DHCP will assign them *inside* the range. One alternative would be to handle this via API calls, for each node's PXE physical interface, but that overcomplicates things. +3. MaaS blocksize: For some reason the python library behind tftp forces ip +blocksize to be 1008. We can force it to be 1464 and gain some performance due +to MTU beeing 1500 (i.e. allow bigger packets). + + JIRA: FUEL-316 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> @@ -39,7 +44,7 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> diff --git a/maas/region.sls b/maas/region.sls --- a/maas/region.sls +++ b/maas/region.sls -@@ -19,6 +19,36 @@ +@@ -19,6 +19,46 @@ - require: - pkg: maas_region_packages @@ -63,6 +68,16 @@ diff --git a/maas/region.sls b/maas/region.sls + - require_in: + - service: maas_region_services + ++maas_ip_blksize_force: ++ file.replace: ++ - name: "/usr/lib/python3/dist-packages/tftp/bootstrap.py" ++ - pattern: 'int_blksize = min\(\(int_blksize, MAX_BLOCK_SIZE\)\)' ++ - repl: 'int_blksize = 1464' ++ - require: ++ - pkg: maas_region_packages ++ - require_in: ++ - service: maas_region_services ++ +maas_interface_default_mode_dhcp: + file.replace: + - name: "/usr/lib/python3/dist-packages/maasserver/models/node.py" diff --git a/mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch b/mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch index fdf84dcd1..48e945acd 100644 --- a/mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch +++ b/mcp/patches/0011-system.repo-Debian-Add-keyserver-proxy-support.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 @@ -31,6 +31,11 @@ When the new http(s) proxy param is set: If linux:system:proxy:keyserver is not defined, the behavior is unchanged for backwards compatibility. +To allow runtime decisions whether the keyserver proxy should be used +add an additional condition for it to match the first nameserver. +This allows us to mix virtual nodes with MaaS-provisioned nodes in +Fuel@OPNFV, while keeping the ext_pillar common. + Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> --- README.rst | 16 ++++++++++++++++ @@ -38,14 +43,13 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> 2 files changed, 56 insertions(+) diff --git a/linux/system/repo.sls b/linux/system/repo.sls -index 5d4d059..724db5a 100644 --- a/linux/system/repo.sls +++ b/linux/system/repo.sls @@ -96,13 +96,50 @@ linux_repo_{{ name }}_key: - name: "curl -s {{ repo.key_url }} | apt-key add -" - watch: - file: default_repo_list -+{%- if system.proxy.keyserver is defined %} ++{%- if system.proxy.keyserver is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.http %} + - env: + - http_proxy: {{ system.proxy.get('keyserver', {}).get('http', '') }} + - https_proxy: {{ system.proxy.get('keyserver', {}).get('https', '') }} @@ -58,7 +62,7 @@ index 5d4d059..724db5a 100644 {%- if repo.get('enabled', True) %} -+{%- if system.proxy.keyserver is defined %} ++{%- if system.proxy.keyserver is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.http %} + +{%- if repo.get('key') %} + @@ -96,7 +100,7 @@ index 5d4d059..724db5a 100644 {%- endif %} - file: /etc/apt/sources.list.d/{{ name }}.list - clean_file: {{ repo.clean|default(True) }} -+ {%- if system.proxy.keyserver is not defined %} ++ {%- if system.proxy.keyserver is not defined or grains['dns']['nameservers'][0] not in system.proxy.keyserver.http %} {%- if repo.key_id is defined %} - keyid: {{ repo.key_id }} {%- endif %} diff --git a/mcp/patches/0012-linux.storage.lvm-Disable-filter.patch b/mcp/patches/0012-linux.storage.lvm-Disable-filter.patch deleted file mode 100644 index de74fadcd..000000000 --- a/mcp/patches/0012-linux.storage.lvm-Disable-filter.patch +++ /dev/null @@ -1,35 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 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: Sat, 18 Nov 2017 22:03:01 +0200 -Subject: [PATCH] linux.storage.lvm: Disable filter - -Due to upstream bug [1], mixing OS-managed LVM volumes with Cinder -LVM volumes leads to a broken filter value in lvm.conf. -Temporarily disable the filter (whitelisting all devices, similar -to no-Cinder use-cases) until upstream bug is fixed. - -[1] https://github.com/salt-formulas/salt-formula-linux/issues/127 - -Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> ---- - -diff --git a/linux/files/lvm.conf b/linux/files/lvm.conf ---- a/linux/files/lvm.conf -+++ b/linux/files/lvm.conf -@@ -129,7 +129,8 @@ - # Example - # Accept every block device: - -- filter = [ {%- for vgname, vg in storage.lvm.iteritems() %}{%- if vg.get('enabled', True) %}{%- for dev in vg.devices %}"a|{{ dev }}*|"{%- if not loop.last %},{%- endif %}{%- endfor %}{%- endif %}{%- endfor %}, "r|.*|" ] -+ # NOTE(opnfv): https://github.com/salt-formulas/salt-formula-linux/issues/127 -+ # filter = [ {%- for vgname, vg in storage.lvm.iteritems() %}{%- if vg.get('enabled', True) %}{%- for dev in vg.devices %}"a|{{ dev }}*|"{%- if not loop.last %},{%- endif %}{%- endfor %}{%- endif %}{%- endfor %}, "r|.*|" ] - - # filter = [ "a|.*/|" ] - # Reject the cdrom drive: diff --git a/mcp/patches/0012-routes-Skip-network-restart-on-noifupdown.patch b/mcp/patches/0012-routes-Skip-network-restart-on-noifupdown.patch new file mode 100644 index 000000000..fb42512ea --- /dev/null +++ b/mcp/patches/0012-routes-Skip-network-restart-on-noifupdown.patch @@ -0,0 +1,37 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: 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, 8 Jan 2018 05:09:11 +0100 +Subject: [PATCH] routes: Skip network restart on 'noifupdown' + +Previously, setting up routes did not allow passing 'require_reboot', +so each route change would lead to a networking service restart, +rendering interface configuration options like 'noifupdown' useless. +Allow disabling network restart per-interface using the existing +'noifupdown' option. + +Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> +--- + linux/network/interface.sls | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/linux/network/interface.sls b/linux/network/interface.sls +index 921ceac..6ebc670 100644 +--- a/linux/network/interface.sls ++++ b/linux/network/interface.sls +@@ -338,6 +338,9 @@ linux_network_{{ interface_name }}_routes: + gateway: {{ route.gateway }} + {%- endif %} + {%- endfor %} ++ {%- if interface.noifupdown is defined %} ++ - require_reboot: {{ interface.noifupdown }} ++ {%- endif %} + + {%- endif %} + diff --git a/mcp/patches/0013-dpdk-Support-ovs-bridge-tagging.patch b/mcp/patches/0013-dpdk-Support-ovs-bridge-tagging.patch deleted file mode 100644 index f73931ea8..000000000 --- a/mcp/patches/0013-dpdk-Support-ovs-bridge-tagging.patch +++ /dev/null @@ -1,30 +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 -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -From: Michael Polenchuk <mpolenchuk@mirantis.com> -Date: Mon, 22 Jan 2018 15:22:47 +0400 -Subject: [PATCH] [dpdk] Support ovs bridge tagging - -Bring in "tag" option for dpdk/ovs bridges -to support vlan-tagged vxlan mode. - -Change-Id: I7f1f88233694f2c8b968a6cf55584f32879ec042 - -diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls -index 1ac9e25..05fe05f 100644 ---- a/linux/network/dpdk.sls -+++ b/linux/network/dpdk.sls -@@ -110,7 +110,7 @@ linux_network_dpdk_bond_mode_{{ interface_name }}: - - linux_network_dpdk_bridge_interface_{{ interface_name }}: - cmd.run: -- - name: "ovs-vsctl add-br {{ interface_name }} -- set bridge {{ interface_name }} datapath_type=netdev" -+ - name: "ovs-vsctl add-br {{ interface_name }} -- set bridge {{ interface_name }} datapath_type=netdev{% if interface.tag is defined %} -- set port {{ interface_name }} tag={{ interface.tag }}{% endif %}" - - unless: "ovs-vsctl show | grep {{ interface_name }}" - - {# OVS dpdk needs ip address for vxlan termination on bridge br-prv #} diff --git a/mcp/patches/0014-reclass.storage.node-Merge-duplicate-nodes.patch b/mcp/patches/0014-reclass.storage.node-Merge-duplicate-nodes.patch new file mode 100644 index 000000000..a9d5b6589 --- /dev/null +++ b/mcp/patches/0014-reclass.storage.node-Merge-duplicate-nodes.patch @@ -0,0 +1,44 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: 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: Sun, 03 Dec 2017 22:03:01 +0200 +Subject: [PATCH] reclass.storage.node: Merge duplicate nodes + +Reclass does not support duplicate nodes in top pillar, so merge all +nodes with the same name into a single node, inheriting classes from +all instances. + +This allows using multiple "system.reclass.storage.system.*_cluster" +classes for the same node, based on re-using the name (hostname). + +NOTE: defaults.merge module does not merge lists (e.g. for classes), +so handle that case separately. + +Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> +--- + +diff --git a/reclass/storage/node.sls b/reclass/storage/node.sls +--- a/reclass/storage/node.sls ++++ b/reclass/storage/node.sls +@@ -1,7 +1,15 @@ + {%- from "reclass/map.jinja" import storage with context %} + {%- if storage.enabled %} + ++{%- set storage_by_name = {} %} + {%- for node_name, node in storage.get('node', {}).iteritems() %} ++{%- set new_node_name = node.get('name', node_name) %} ++{%- set new_node = storage_by_name.get(new_node_name, {'classes': []}) %} ++{%- do salt['defaults.merge'](node, {'classes': new_node.classes + node.classes}) %} ++{%- do salt['defaults.merge'](storage_by_name, {new_node_name: node}) %} ++{%- endfor %} ++ ++{%- for node_name, node in storage_by_name.iteritems() %} + + {%- if node.repeat is defined %} + diff --git a/mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch b/mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch new file mode 100644 index 000000000..c55a3727c --- /dev/null +++ b/mcp/patches/0015-Set-ovs-bridges-as-L3-interfaces.patch @@ -0,0 +1,86 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: 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: Michael Polenchuk <mpolenchuk@mirantis.com> +Date: Wed, 28 Feb 2018 17:54:28 +0400 +Subject: [PATCH] Set ovs bridges as L3 interfaces + +Change-Id: I1e83129cc184cf481bea21d7aa452bf60d9e0499 + +diff --git a/linux/files/ovs_bridge b/linux/files/ovs_bridge +new file mode 100644 +index 0000000..c609e45 +--- /dev/null ++++ b/linux/files/ovs_bridge +@@ -0,0 +1,13 @@ ++auto {{ bridge_name }} ++allow-ovs {{ bridge_name }} ++iface {{ bridge_name }} inet static ++ ovs_type OVSBridge ++ address {{ bridge.address }} ++ netmask {{ bridge.netmask }} ++ mtu {{ bridge.get('mtu', '1500') }} ++ {%- if bridge.use_interfaces is defined %} ++ ovs_ports {{ bridge.use_interfaces|join(' ') }} ++ {%- endif %} ++ {%- if bridge.datapath_type is defined %} ++ ovs_extra set Bridge ${IFACE} datapath_type={{ bridge.datapath_type }} ++ {%- endif %} +diff --git a/linux/files/ovs_port b/linux/files/ovs_port +index 222ca8e..efb0307 100644 +--- a/linux/files/ovs_port ++++ b/linux/files/ovs_port +@@ -1,6 +1,9 @@ + auto {{ port_name }} + allow-{{ port.bridge }} {{ port_name }} + iface {{ port_name }} inet {{ port.get('proto', 'manual') }} ++{%- if '.' in port_name %} ++vlan-raw-device {{ port_name.split('.')[0] }} ++{%- endif %} + ovs_type {{ port.get('ovs_port_type', 'OVSIntPort') }} + mtu {{ port.get('mtu', '1500') }} + ovs_bridge {{ port.bridge }} +diff --git a/linux/network/interface.sls b/linux/network/interface.sls +index 180f912..dcb295b 100644 +--- a/linux/network/interface.sls ++++ b/linux/network/interface.sls +@@ -91,6 +91,34 @@ add_int_{{ int_name }}_to_ovs_dpdk_bridge_{{ interface_name }}: + ovs_bridge_{{ interface_name }}: + openvswitch_bridge.present: + - name: {{ interface_name }} ++{%- if interface.get('proto', 'manual') == 'static' %} ++ file.managed: ++ - name: /etc/network/interfaces.u/ifcfg-{{ interface_name }} ++ - makedirs: True ++ - source: salt://linux/files/ovs_bridge ++ - defaults: ++ bridge: {{ interface|yaml }} ++ bridge_name: {{ interface_name }} ++ - template: jinja ++ ++linux_interfaces_include_{{ interface_name }}: ++ file.prepend: ++ - name: /etc/network/interfaces ++ - text: | ++ source /etc/network/interfaces.d/* ++ # Workaround for Upstream-Bug: https://github.com/saltstack/salt/issues/40262 ++ source /etc/network/interfaces.u/* ++ ++ovs_bridge_up_{{ interface_name }}: ++ cmd.run: ++ - name: ifup {{ interface_name }} ++ - require: ++ - file: ovs_bridge_{{ interface_name }} ++ - openvswitch_bridge: ovs_bridge_{{ interface_name }} ++ - file: linux_interfaces_final_include ++ - unless: ++ - ip link show {{ interface_name }} | grep -q '\<UP\>' ++{%- endif %} + + {# add linux network interface into OVS bridge #} + {%- for int_name, int in network.interface.items() %} diff --git a/mcp/patches/0016-Set-boot-source-selections.patch b/mcp/patches/0016-Set-boot-source-selections.patch new file mode 100644 index 000000000..ff52681d2 --- /dev/null +++ b/mcp/patches/0016-Set-boot-source-selections.patch @@ -0,0 +1,31 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: 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: Michael Polenchuk <mpolenchuk@mirantis.com> +Date: Thu, 26 Apr 2018 16:29:02 +0400 +Subject: [PATCH] Set boot source selections + +Change-Id: I8dc738b3e6e6f1bfcc1348873f162651aff8bbdf + +diff --git a/maas/region.sls b/maas/region.sls +--- a/maas/region.sls ++++ b/maas/region.sls +@@ -171,6 +171,13 @@ maas_login_admin: + cmd.run: + - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials" + ++boot_source_selections: ++ cmd.run: ++ - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv boot-source-selection update 1 1 release='{{ region.maas_config.default_distro_series }}'" ++ - require: ++ - cmd: maas_login_admin ++ - unless: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv boot-source-selections read 1 | grep -q {{ region.maas_config.default_distro_series }}" ++ + maas_force_artifact_sync: + cmd.script: + - name: salt://maas/files/maas-artifact-sync.sh diff --git a/mcp/patches/fuel-patch-copyright.template b/mcp/patches/fuel-patch-copyright.template index 6c52af768..e92458082 100644 --- a/mcp/patches/fuel-patch-copyright.template +++ b/mcp/patches/fuel-patch-copyright.template @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 diff --git a/mcp/patches/patch.sh b/mcp/patches/patch.sh index 1da3bc597..bb48dcd07 100755 --- a/mcp/patches/patch.sh +++ b/mcp/patches/patch.sh @@ -11,10 +11,9 @@ CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x if [ -r "$1" ]; then while IFS=': ' read -r p_dest p_file; do - if [[ ! "${p_dest}" =~ '^#' ]] && [[ "${p_dest}" =~ $2 ]] && \ - ! patch --dry-run -Rd "${p_dest}" -r - -s -p1 < \ - "/root/fuel/mcp/patches/${p_file}" > /dev/null; then - patch -d "${p_dest}" -p1 < "/root/fuel/mcp/patches/${p_file}" + if ! patch --dry-run -Rd "${p_dest}" -r - -s -p1 < \ + "/root/fuel/mcp/patches/${p_file}" > /dev/null; then + patch -d "${p_dest}" -p1 < "/root/fuel/mcp/patches/${p_file}" fi - done < "$1" + done < <(grep -vE '^#' "${1}" | grep -E "^.*${2}.*: ") fi diff --git a/mcp/patches/patches.list b/mcp/patches/patches.list index 2eb45b272..6a6e7a361 100644 --- a/mcp/patches/patches.list +++ b/mcp/patches/patches.list @@ -1,20 +1,19 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## -/usr/share/salt-formulas/env: 0001-opendaylight-formula-neutron.patch /usr/share/salt-formulas/env: 0002-maas-region-skip-credentials-update.patch /usr/share/salt-formulas/env: 0003-maas-region-force-artifact-download.patch -/usr/share/salt-formulas/env: 0004-maas-region-use-authorized_keys-1st-entry.patch +/usr/share/salt-formulas/env: 0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch /usr/share/salt-formulas/env: 0005-maas-module-Obtain-fabric-ID-from-CIDR.patch /usr/share/salt-formulas/env: 0006-maas-module-Add-VLAN-DHCP-enable-support.patch /usr/share/salt-formulas/env: 0007-network.interface-Fix-ifup-OVS-port-with-route.patch -/usr/share/salt-formulas/env: 0008-Handle-kernel-boot-options.patch -/usr/share/salt-formulas/env: 0009-controller-Use-keystoneclient-to-check-project-ID.patch +/usr/share/salt-formulas/env: 0008-Handle-extra-environment-variables.patch /usr/share/salt-formulas/env: 0010-maas-region-allow-timeout-override.patch /usr/share/salt-formulas/env: 0011-system.repo-Debian-Add-keyserver-proxy-support.patch -/usr/share/salt-formulas/env: 0012-linux.storage.lvm-Disable-filter.patch -/usr/share/salt-formulas/env: 0013-dpdk-Support-ovs-bridge-tagging.patch +/usr/share/salt-formulas/env: 0012-routes-Skip-network-restart-on-noifupdown.patch +/usr/share/salt-formulas/env: 0015-Set-ovs-bridges-as-L3-interfaces.patch +/usr/share/salt-formulas/env: 0016-Set-boot-source-selections.patch diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/init.yml b/mcp/patches/patches_init.list index 8ae660706..94488cf9a 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/init.yml +++ b/mcp/patches/patches_init.list @@ -5,6 +5,4 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## ---- -classes: - - cluster.virtual-mcp-pike-common-noha.openstack_init +/usr/share/salt-formulas/env: 0014-reclass.storage.node-Merge-duplicate-nodes.patch diff --git a/mcp/patches/reclass-system-salt-model/0001-Bring-in-opendaylight-support.patch b/mcp/patches/reclass-system-salt-model/0001-Bring-in-opendaylight-support.patch deleted file mode 100644 index c7ba5a740..000000000 --- a/mcp/patches/reclass-system-salt-model/0001-Bring-in-opendaylight-support.patch +++ /dev/null @@ -1,110 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 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: Michael Polenchuk <mpolenchuk@mirantis.com> -Date: Thu, 29 Jun 2017 12:22:42 +0400 -Subject: [PATCH] Bring in opendaylight support - -Change-Id: I3efec9a8b586a6c75b1c1635ad2a7024d73d9ad2 ---- - neutron/control/opendaylight/cluster.yml | 17 +++++++++++++++++ - neutron/control/opendaylight/single.yml | 15 +++++++++++++++ - neutron/gateway/opendaylight/single.yml | 7 +++++++ - opendaylight/server/single.yml | 2 ++ - reclass/storage/system/opendaylight_control_single.yml | 13 +++++++++++++ - 5 files changed, 54 insertions(+) - create mode 100644 neutron/control/opendaylight/cluster.yml - create mode 100644 neutron/control/opendaylight/single.yml - create mode 100644 neutron/gateway/opendaylight/single.yml - create mode 100644 opendaylight/server/single.yml - create mode 100644 reclass/storage/system/opendaylight_control_single.yml - -diff --git a/neutron/control/opendaylight/cluster.yml b/neutron/control/opendaylight/cluster.yml -new file mode 100644 -index 0000000..a32e7ab ---- /dev/null -+++ b/neutron/control/opendaylight/cluster.yml -@@ -0,0 +1,17 @@ -+classes: -+- service.keepalived.cluster.single -+- service.haproxy.proxy.single -+- service.neutron.control.cluster -+- system.neutron.control.openvswitch.cluster -+parameters: -+ neutron: -+ server: -+ backend: -+ host: ${_param:opendaylight_service_host} -+ rest_api_port: 8282 -+ user: admin -+ password: admin -+ ovsdb_connection: tcp:127.0.0.1:6639 -+ mechanism: -+ ovs: -+ driver: opendaylight_v2 -diff --git a/neutron/control/opendaylight/single.yml b/neutron/control/opendaylight/single.yml -new file mode 100644 -index 0000000..053f14d ---- /dev/null -+++ b/neutron/control/opendaylight/single.yml -@@ -0,0 +1,15 @@ -+classes: -+- service.neutron.control.single -+- system.neutron.control.openvswitch.single -+parameters: -+ neutron: -+ server: -+ backend: -+ host: ${_param:opendaylight_service_host} -+ rest_api_port: 8282 -+ user: admin -+ password: admin -+ ovsdb_connection: tcp:127.0.0.1:6639 -+ mechanism: -+ ovs: -+ driver: opendaylight_v2 -diff --git a/neutron/gateway/opendaylight/single.yml b/neutron/gateway/opendaylight/single.yml -new file mode 100644 -index 0000000..2169001 ---- /dev/null -+++ b/neutron/gateway/opendaylight/single.yml -@@ -0,0 +1,7 @@ -+classes: -+- service.neutron.gateway.single -+parameters: -+ neutron: -+ gateway: -+ backend: -+ ovsdb_connection: tcp:127.0.0.1:6639 -diff --git a/opendaylight/server/single.yml b/opendaylight/server/single.yml -new file mode 100644 -index 0000000..3d11872 ---- /dev/null -+++ b/opendaylight/server/single.yml -@@ -0,0 +1,2 @@ -+classes: -+- service.opendaylight.server.single -diff --git a/reclass/storage/system/opendaylight_control_single.yml b/reclass/storage/system/opendaylight_control_single.yml -new file mode 100644 -index 0000000..ad809f5 ---- /dev/null -+++ b/reclass/storage/system/opendaylight_control_single.yml -@@ -0,0 +1,13 @@ -+parameters: -+ _param: -+ opendaylight_control_hostname: odl01 -+ reclass: -+ storage: -+ node: -+ opendaylight_control_node01: -+ name: ${_param:opendaylight_control_hostname} -+ domain: ${_param:cluster_domain} -+ params: -+ salt_master_host: ${_param:reclass_config_master} -+ linux_system_codename: ${_param:linux_system_codename} -+ single_address: ${_param:opendaylight_service_host} diff --git a/mcp/patches/reclass-system-salt-model/0003-Use-keystone-v3-endpoints-by-default.patch b/mcp/patches/reclass-system-salt-model/0001-Use-keystone-v3-endpoints-by-default.patch index 6f860bcce..514ea59e4 100644 --- a/mcp/patches/reclass-system-salt-model/0003-Use-keystone-v3-endpoints-by-default.patch +++ b/mcp/patches/reclass-system-salt-model/0001-Use-keystone-v3-endpoints-by-default.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 @@ -20,7 +20,7 @@ Change-Id: I7e9a1b180f4e0ddb24ec72ed9f08c9e2580c7897 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keystone/client/single.yml b/keystone/client/single.yml -index ebf5b5f..8007710 100644 +index a79ed7ec..86b4e09e 100644 --- a/keystone/client/single.yml +++ b/keystone/client/single.yml @@ -4,7 +4,7 @@ classes: @@ -31,4 +31,4 @@ index ebf5b5f..8007710 100644 +- system.keystone.client.service.keystone3 - system.keystone.client.service.neutron parameters: - linux: + _param: diff --git a/mcp/patches/reclass-system-salt-model/0004-Revert-Admin-endpoint-for-keystone-v3.patch b/mcp/patches/reclass-system-salt-model/0002-Revert-Admin-endpoint-for-keystone-v3.patch index 00b4cf34b..00b4cf34b 100644 --- a/mcp/patches/reclass-system-salt-model/0004-Revert-Admin-endpoint-for-keystone-v3.patch +++ b/mcp/patches/reclass-system-salt-model/0002-Revert-Admin-endpoint-for-keystone-v3.patch diff --git a/mcp/patches/reclass-system-salt-model/0002-mongodb-Parameterize-cluster-hostnames.patch b/mcp/patches/reclass-system-salt-model/0002-mongodb-Parameterize-cluster-hostnames.patch deleted file mode 100644 index b75044b16..000000000 --- a/mcp/patches/reclass-system-salt-model/0002-mongodb-Parameterize-cluster-hostnames.patch +++ /dev/null @@ -1,37 +0,0 @@ -:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 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: Sun, 10 Dec 2017 21:58:52 +0100 -Subject: [PATCH] mongodb: Parameterize cluster hostnames - -Replace mdb{01,02,03} with reclass params, similar to prev commit. - -Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> ---- - mongodb/server/cluster.yml | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/mongodb/server/cluster.yml b/mongodb/server/cluster.yml -index f3c16d6..1d1e397 100644 ---- a/mongodb/server/cluster.yml -+++ b/mongodb/server/cluster.yml -@@ -3,9 +3,9 @@ classes: - parameters: - _param: - mongodb_server_replica_set: mongodb -- mongodb_master: mdb01 -+ mongodb_master: ${_param:openstack_telemetry_node01_hostname} - mongodb_server_members: -- - host: mdb01 -+ - host: ${_param:openstack_telemetry_node01_hostname} - priority: 2 -- - host: mdb02 -- - host: mdb03 -+ - host: ${_param:openstack_telemetry_node02_hostname} -+ - host: ${_param:openstack_telemetry_node03_hostname} diff --git a/mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch b/mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch index 8d0c46c92..498743b77 100644 --- a/mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch +++ b/mcp/patches/scripts/0001-salt-master-setup.sh-Allow-arm64-salt-bootstrap.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 diff --git a/mcp/patches/scripts/0002-salt-master-init.sh-Apply-OPNFV-Fuel-patches.patch b/mcp/patches/scripts/0002-salt-master-init.sh-Apply-OPNFV-Fuel-patches.patch new file mode 100644 index 000000000..6c7cbb6e8 --- /dev/null +++ b/mcp/patches/scripts/0002-salt-master-init.sh-Apply-OPNFV-Fuel-patches.patch @@ -0,0 +1,35 @@ +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +: 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: Fri, 8 Dec 2017 20:30:46 +0100 +Subject: [PATCH] salt-master-init.sh: Apply OPNFV Fuel patches + +Some of Fuel@OPNFV patches need to be applied before the reclass +storage.node state is ran for Salt Master, i.e. between installing +salt-formula-* packages and configuring the Salt Master salt services. + +JIRA: FUEL-310 + +Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> +--- + salt-master-init.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/salt-master-init.sh b/salt-master-init.sh +index 343324c..a4ec138 100755 +--- a/salt-master-init.sh ++++ b/salt-master-init.sh +@@ -284,6 +284,7 @@ options + system_config + + saltmaster_bootstrap &&\ ++ /root/fuel/mcp/patches/patch.sh /root/fuel/mcp/patches/patches_init.list formulas &&\ + saltmaster_init &&\ + + verify_salt_minions diff --git a/mcp/patches/scripts/0002-salt-master-setup-Group-APT-install-formulas.patch b/mcp/patches/scripts/0003-salt-master-setup-Group-APT-install-formulas.patch index 71632681e..d5a9bf3c4 100644 --- a/mcp/patches/scripts/0002-salt-master-setup-Group-APT-install-formulas.patch +++ b/mcp/patches/scripts/0003-salt-master-setup-Group-APT-install-formulas.patch @@ -1,5 +1,5 @@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -: Copyright (c) 2017 Mirantis Inc., Enea AB and others. +: 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 @@ -23,7 +23,7 @@ Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/salt-master-init.sh b/salt-master-init.sh -index 343324c..48a05b9 100755 +index a4ec138..db90a22 100755 --- a/salt-master-init.sh +++ b/salt-master-init.sh @@ -24,6 +24,12 @@ options() { diff --git a/mcp/reclass/classes/cluster/.gitignore b/mcp/reclass/classes/cluster/.gitignore index 496fab912..a6b1b7d56 100644 --- a/mcp/reclass/classes/cluster/.gitignore +++ b/mcp/reclass/classes/cluster/.gitignore @@ -1 +1,17 @@ **/*_pdf.yml +mcp-pike-common-ha/infra/init.yml +mcp-pike-common-ha/openstack_control.yml +mcp-pike-common-ha/openstack_init.yml +mcp-pike-common-ha/openstack_interface_vcp_biport.yml +mcp-pike-common-ha/openstack_interface_vcp_triport.yml +mcp-pike-common-ha/openstack_proxy.yml +mcp-pike-ovs-ha/infra/init_vcp.yml +mcp-pike-ovs-ha/infra/kvm.yml +mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml +mcp-pike-ovs-dpdk-ha/infra/kvm.yml +mcp-pike-odl-ha/infra/init_vcp.yml +mcp-pike-odl-ha/infra/kvm.yml +mcp-pike-ovn-ha/infra/init_vcp.yml +mcp-pike-ovn-ha/infra/kvm.yml +mcp-pike-odl-ha/opendaylight/control.yml +mcp-pike-odl-ha/openstack/init.yml diff --git a/mcp/reclass/classes/cluster/README.rst b/mcp/reclass/classes/cluster/README.rst index dc09cfbac..69234043a 100644 --- a/mcp/reclass/classes/cluster/README.rst +++ b/mcp/reclass/classes/cluster/README.rst @@ -8,16 +8,16 @@ Fuel@OPNFV Cluster Reclass Models Overview -------- -#. Common classes (baremetal + virtual) +#. Common classes (HA + noHA) - all-mcp-arch-common -#. Common classes (specific to either baremetal or virtual deploys) +#. Common classes (HA baremetal/virtual, noHA virtual) - - baremetal-mcp-<release>-common-ha - - virtual-mcp-<release>-common-noha + - mcp-<release>-common-ha + - mcp-<release>-common-noha #. Cluster specific classes - - baremetal-mcp-<release>-*-{ha,noha} - - virtual-mcp-<release>-*-{ha,noha} + - mcp-<release>-*-{ha,noha} + - mcp-<release>-*-{ha,noha} diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml index 3b333ed7c..a44475b49 100644 --- a/mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml +++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/aarch64/init.yml @@ -8,6 +8,7 @@ --- 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) 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 new file mode 100644 index 000000000..703d5350e --- /dev/null +++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_dpdk_pdf.yml.j2 @@ -0,0 +1,42 @@ +############################################################################## +# 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 new file mode 100644 index 000000000..fb25cc617 --- /dev/null +++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/infra/config_pdf.yml.j2 @@ -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 +############################################################################## +{%- 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.common is defined %} +{%- set _common = conf.idf.fuel.reclass.node[nm.cmp001.idx].compute_params.common %} +{%- for _i in _common %} + {{ _i }}: '"{{ _common[_i] }}"' +{%- endfor %} +{%- else %} + dummy_value: ~ +{%- endif %} +{%- else %} + compute_hugepages_size: 1G + compute_hugepages_count: 16 + compute_hugepages_mount: /mnt/hugepages_1G +{%- endif %} + openstack_compute_node02: + <<: *openstack_compute_node01 diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml index f09ee5db1..f9aeb71ad 100644 --- a/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml +++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 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 index 28dcdcd5b..9a47b1c63 100644 --- a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml +++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml.example b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml.example deleted file mode 100644 index 628aeba83..000000000 --- a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml.example +++ /dev/null @@ -1,111 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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: - - opnfv_infra_config_address: 10.167.4.100 - opnfv_infra_config_pxe_address: 192.168.11.2 - opnfv_infra_maas_node01_address: 10.167.4.3 - opnfv_infra_maas_node01_deploy_address: 192.168.11.3 - opnfv_infra_kvm_address: 10.167.4.140 - opnfv_infra_kvm_node01_address: 10.167.4.141 - opnfv_infra_kvm_node02_address: 10.167.4.142 - opnfv_infra_kvm_node03_address: 10.167.4.143 - - opnfv_infra_maas_pxe_network_address: 192.168.11.0 - opnfv_infra_maas_pxe_start_address: 192.168.11.4 - opnfv_infra_maas_pxe_end_address: 192.168.11.100 - - opnfv_openstack_gateway_node01_address: 10.167.4.124 - opnfv_openstack_gateway_node02_address: 10.167.4.125 - opnfv_openstack_gateway_node03_address: 10.167.4.126 - opnfv_openstack_gateway_node01_tenant_address: 10.1.0.6 - opnfv_openstack_gateway_node02_tenant_address: 10.1.0.7 - opnfv_openstack_gateway_node03_tenant_address: 10.1.0.9 - opnfv_openstack_proxy_address: 172.30.10.103 - opnfv_openstack_proxy_node01_address: 172.30.10.104 - opnfv_openstack_proxy_node02_address: 172.30.10.105 - opnfv_openstack_proxy_control_address: 10.167.4.103 - opnfv_openstack_proxy_node01_control_address: 10.167.4.104 - opnfv_openstack_proxy_node02_control_address: 10.167.4.105 - opnfv_openstack_control_address: 10.167.4.10 - opnfv_openstack_control_node01_address: 10.167.4.11 - opnfv_openstack_control_node02_address: 10.167.4.12 - opnfv_openstack_control_node03_address: 10.167.4.13 - opnfv_openstack_database_address: 10.167.4.50 - opnfv_openstack_database_node01_address: 10.167.4.51 - opnfv_openstack_database_node02_address: 10.167.4.52 - opnfv_openstack_database_node03_address: 10.167.4.53 - opnfv_openstack_message_queue_address: 10.167.4.40 - opnfv_openstack_message_queue_node01_address: 10.167.4.41 - opnfv_openstack_message_queue_node02_address: 10.167.4.42 - opnfv_openstack_message_queue_node03_address: 10.167.4.43 - opnfv_openstack_telemetry_address: 10.167.4.75 - opnfv_openstack_telemetry_node01_address: 10.167.4.76 - opnfv_openstack_telemetry_node02_address: 10.167.4.77 - opnfv_openstack_telemetry_node03_address: 10.167.4.78 - opnfv_openstack_compute_node01_single_address: 10.167.4.101 - opnfv_openstack_compute_node02_single_address: 10.167.4.102 - opnfv_openstack_compute_node03_single_address: 10.167.4.103 - opnfv_openstack_compute_node01_control_address: 10.167.4.101 - opnfv_openstack_compute_node02_control_address: 10.167.4.102 - opnfv_openstack_compute_node03_control_address: 10.167.4.103 - opnfv_openstack_compute_node01_tenant_address: 10.1.0.101 - opnfv_openstack_compute_node02_tenant_address: 10.1.0.102 - opnfv_openstack_compute_node03_tenant_address: 10.1.0.103 - opnfv_openstack_compute_node01_external_address: 172.30.10.101 - opnfv_openstack_compute_node02_external_address: 172.30.10.102 - - opnfv_opendaylight_server_node01_single_address: 10.167.4.111 - - opnfv_net_public: 172.30.10.0/24 - opnfv_net_public_mask: 255.255.255.0 - opnfv_net_public_gw: 172.30.10.1 - opnfv_net_public_pool_start: 172.30.10.80 - opnfv_net_public_pool_end: 172.30.10.100 - opnfv_name_servers: ['8.8.8.8', '8.8.4.4'] - opnfv_dns_server01: '8.8.8.8' - - opnfv_net_mgmt_vlan: 300 - opnfv_net_tenant_vlan: 1000 - - opnfv_maas_node01_architecture: 'amd64/generic' - opnfv_maas_node01_power_address: 172.30.8.75 - opnfv_maas_node01_power_type: ipmi - opnfv_maas_node01_power_user: admin - opnfv_maas_node01_power_password: octopus - opnfv_maas_node01_interface_mac: '00:25:b5:a0:00:2a' - - opnfv_maas_node02_architecture: 'amd64/generic' - opnfv_maas_node02_power_address: 172.30.8.65 - opnfv_maas_node02_power_type: ipmi - opnfv_maas_node02_power_user: admin - opnfv_maas_node02_power_password: octopus - opnfv_maas_node02_interface_mac: '00:25:b5:a0:00:3a' - - opnfv_maas_node03_architecture: 'amd64/generic' - opnfv_maas_node03_power_address: 172.30.8.74 - opnfv_maas_node03_power_type: ipmi - opnfv_maas_node03_power_user: admin - opnfv_maas_node03_power_password: octopus - opnfv_maas_node03_interface_mac: '00:25:b5:a0:00:4a' - - opnfv_maas_node04_architecture: 'amd64/generic' - opnfv_maas_node04_power_address: 172.30.8.73 - opnfv_maas_node04_power_type: ipmi - opnfv_maas_node04_power_user: admin - opnfv_maas_node04_power_password: octopus - opnfv_maas_node04_interface_mac: '00:25:b5:a0:00:5a' - - opnfv_maas_node05_architecture: 'amd64/generic' - opnfv_maas_node05_power_address: 172.30.8.72 - opnfv_maas_node05_power_type: ipmi - opnfv_maas_node05_power_user: admin - opnfv_maas_node05_power_password: octopus - opnfv_maas_node05_interface_mac: '00:25:b5:a0:00:6a' diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml deleted file mode 100644 index 387b57f8b..000000000 --- a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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: - opnfv_salt_master_ip: 10.20.0.2 - opnfv_maas_mcp_address: 10.20.0.3 - opnfv_net_mcpcontrol: 10.20.0.0 - opnfv_net_mcpcontrol_mask: 255.255.255.0 diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.j2 index d72df2eb6..d6f5aa965 100644 --- a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/pod_config.yml +++ b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.j2 @@ -1,12 +1,15 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{#- conf.MCPCONTROL_NET & co are mandatory, defaults are set via globals.sh #} parameters: _param: - # NOTE: This file is overwritten at runtime by parsing the PDF. - opnfv_use_pod_descriptor_file: true + 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 }} diff --git a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.template b/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.template deleted file mode 100644 index 64f75350c..000000000 --- a/mcp/reclass/classes/cluster/all-mcp-arch-common/opnfv/runtime.yml.template +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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: - opnfv_salt_master_ip: ${SALT_MASTER} - opnfv_maas_mcp_address: ${MAAS_IP} - opnfv_net_mcpcontrol: ${SALT_MASTER%.*}.0 - opnfv_net_mcpcontrol_mask: 255.255.255.0 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 index a7e469b57..a62dd04e0 100644 --- 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 @@ -8,6 +8,7 @@ --- 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) diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm_pdf.yml.j2 deleted file mode 100644 index 0aab6cbc0..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm_pdf.yml.j2 +++ /dev/null @@ -1,98 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## -{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} -{%- if conf.idf is defined and conf.idf.net_config is defined -%} - {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#} - - {#- Determine interface index for each network (plumbing vars) -#} - {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%} - {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%} - {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%} - {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%} - - {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#} - {%- set node = conf['idf']['fuel']['network']['node'][0] -%} - {%- set nic_admin = node['interfaces'][idx_admin] -%} - {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%} - {%- set nic_private = node['interfaces'][idx_private] -%} - {%- set nic_public = node['interfaces'][idx_public] -%} - - {#- PCI addresses (only for DPDK on private) -#} - {%- set bus_private = node['busaddr'][idx_private] -%} - - {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#} - {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%} - {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%} - {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%} - {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%} -{%- else -%} - {%- set nic_admin = 'enp6s0' -%} - {%- set nic_mgmt = 'enp6s0' -%} - {%- set nic_private = None -%} - {%- set nic_public = None -%} - {%- set vlan_admin = 'native' -%} - {%- set vlan_mgmt = '300' -%} - {%- set vlan_private = '1000' -%} -{%- endif -%} - -{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#} -{%- set nics = { nic_admin: True, nic_mgmt: True, nic_public: True } -%} - -{%- set vlans = { vlan_admin: nic_admin, vlan_mgmt: nic_mgmt, vlan_public: nic_public } -%} ---- -parameters: - 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 and vlan != 'native' %} - {{ vlans[vlan] }}.{{ vlan }}: - enabled: true - proto: manual - type: vlan - name: {{ vlans[vlan] }}.{{ vlan }} - use_interfaces: - - {{ vlans[vlan] }} - {%- endif %} -{%- endfor %} - - br-mgmt: - enabled: true - proto: dhcp - type: bridge - use_interfaces: - - {{ nic_admin }}{% if vlan_admin and vlan_admin != 'native' %}.{{ vlan_admin }}{% endif %} - noifupdown: true - br-ctl: - enabled: true - type: bridge - proto: static - address: ${_param:single_address} - netmask: 255.255.255.0 - use_interfaces: - - {{ nic_mgmt }}{% if vlan_mgmt and vlan_mgmt != 'native' %}.{{ vlan_mgmt }}{% endif %} - br-ex: - enabled: true - proto: manual - address: 0.0.0.0 - netmask: ${_param:opnfv_net_public_mask} - type: bridge - use_interfaces: - - {{ nic_public }}{% if vlan_public and vlan_public != 'native' %}.{{ vlan_public }}{% endif %} - noifupdown: true diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute_pdf.yml.j2 deleted file mode 100644 index 2e9466980..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute_pdf.yml.j2 +++ /dev/null @@ -1,118 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## -{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} -{%- if conf.idf is defined and conf.idf.net_config is defined -%} - {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#} - - {#- Determine interface index for each network (plumbing vars) -#} - {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%} - {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%} - {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%} - {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%} - - {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#} - {%- set iface_names = conf['idf']['fuel']['network']['node'][3]['interfaces'] -%} - {%- set nic_admin = iface_names[idx_admin] -%} - {%- set nic_mgmt = iface_names[idx_mgmt] -%} - {%- set nic_private = iface_names[idx_private] -%} - {%- set nic_public = iface_names[idx_public] -%} - - {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#} - {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%} - {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%} - {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%} - {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%} -{%- else -%} - {%- set nic_admin = 'enp6s0' -%} - {%- set nic_mgmt = 'enp6s0' -%} - {%- set nic_private = None -%} - {%- set nic_public = None -%} - {%- set vlan_admin = 'native' -%} - {%- set vlan_mgmt = '300' -%} - {%- set vlan_private = '1000' -%} -{%- endif -%} - -{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#} -{%- set nics = { nic_admin: True, nic_mgmt: True } -%} - -{%- set vlans = { vlan_admin: nic_admin, vlan_mgmt: nic_mgmt } -%} ---- -parameters: - linux: - network: - bridge: openvswitch - interface: -{%- for nic in nics %} - {%- if nic == nic_admin %} - {{ nic }}: - enabled: true - type: eth - proto: dhcp - name: {{ nic }} - {%- else %} - {{ nic }}: - enabled: true - type: eth - proto: manual - address: 0.0.0.0 - {%- if nic == nic_public %} - netmask: ${_param:opnfv_net_public_mask} - {%- else %} - netmask: 255.255.255.0 - {%- endif %} - mtu: ${_param:interface_mtu} - name: {{ nic }} - {%- endif %} -{%- endfor %} - -{%- for vlan in vlans %} - {%- if vlan and vlan != 'native' %} - {{ vlans[vlan] }}.{{ vlan }}: - enabled: true - proto: manual - type: vlan - name: {{ vlans[vlan] }}.{{ vlan }} - use_interfaces: - - {{ vlans[vlan] }} - {%- endif %} -{%- endfor %} - - br-ctl: - enabled: true - type: bridge - proto: static - address: ${_param:single_address} - netmask: 255.255.255.0 - use_interfaces: - - {{ nic_mgmt }}{% if vlan_mgmt and vlan_mgmt != 'native' %}.{{ vlan_mgmt }}{% endif %} - br-floating: - enabled: true - type: ovs_bridge - mtu: ${_param:interface_mtu} - br-ex: - enabled: true - type: ovs_port - bridge: br-floating - proto: static - {%- if vlan_public and vlan_public != 'native' %} - ovs_options: tag={{ vlan_public }} - {%- endif %} - address: ${_param:external_address} - netmask: 255.255.255.0 - route: - public: - address: 0.0.0.0 - netmask: 0.0.0.0 - gateway: ${_param:opnfv_net_public_gw} - {{ nic_public }}: - enabled: true - proto: manual - ovs_port_type: OVSPort - type: ovs_port - ovs_bridge: br-floating - bridge: br-floating diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_proxy.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_proxy.yml deleted file mode 100644 index f83590ced..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_proxy.yml +++ /dev/null @@ -1,45 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.nginx.server.single - - system.nginx.server.proxy.openstack_api - - system.nginx.server.proxy.openstack_vnc - - system.nginx.server.proxy.openstack_web - - system.nginx.server.proxy.openstack.aodh - - system.nginx.server.proxy.openstack.ceilometer - - system.horizon.server.single - - system.salt.minion.cert.proxy - - system.sphinx.server.doc.reclass - - service.keepalived.cluster.single - - system.keepalived.cluster.instance.openstack_web_public_vip -parameters: - _param: - cluster_vip_address: ${_param:openstack_proxy_address} - keepalived_openstack_web_public_vip_address: ${_param:cluster_vip_address} - keepalived_openstack_web_public_vip_interface: ${_param:single_nic} - keepalived_vip_address: ${_param:openstack_proxy_control_address} - keepalived_vip_interface: ${_param:control_nic} - keepalived_vip_virtual_router_id: 240 - nginx_proxy_ssl: - enabled: true - authority: ${_param:salt_minion_ca_authority} - engine: salt - mode: secure - salt_minion_ca_host: cfg01.${_param:cluster_domain} - linux: - system: - package: - libapache2-mod-wsgi: - version: latest - salt: - minion: - cert: - proxy: - alternative_names: "IP:${_param:openstack_proxy_address}" - key_usage: 'digitalSignature, keyEncipherment' diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute.yml deleted file mode 100644 index 473b3ff48..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute.yml +++ /dev/null @@ -1,31 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_compute - - cluster.baremetal-mcp-pike-odl-ha.openstack.compute_pdf - - cluster.baremetal-mcp-pike-odl-ha.infra - - system.neutron.gateway.opendaylight.single -parameters: - _param: - neutron_agents: - - neutron-dhcp-agent - - neutron-metadata-agent - opendaylight: - client: - ovsdb_server_iface: ptcp:6639:127.0.0.1 - ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640 - tunnel_ip: ${_param:tenant_address} - provider_mappings: physnet1:br-floating - neutron: - gateway: - agent_mode: ${_param:neutron_gateway_agent_mode} - pkgs: ${_param:neutron_agents} - services: ${_param:neutron_agents} - backend: - router: ${_param:opendaylight_router} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 deleted file mode 100644 index 52090cc0a..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## -{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} -{%- if conf.idf is defined and conf.idf.net_config is defined -%} - {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#} - - {#- Determine interface index for each network (plumbing vars) -#} - {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%} - {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%} - {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%} - {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%} - - {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#} - {%- set node = conf['idf']['fuel']['network']['node'][1] -%} - {%- set nic_admin = node['interfaces'][idx_admin] -%} - {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%} - {%- set nic_private = node['interfaces'][idx_private] -%} - {%- set nic_public = node['interfaces'][idx_public] -%} - - {#- PCI addresses (only for DPDK on private) -#} - {%- set bus_private = node['busaddr'][idx_private] -%} - - {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#} - {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%} - {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%} - {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%} - {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%} -{%- else -%} - {%- set nic_admin = 'enp6s0' -%} - {%- set nic_mgmt = 'enp6s0' -%} - {%- set nic_private = None -%} - {%- set nic_public = None -%} - {%- set vlan_admin = 'native' -%} - {%- set vlan_mgmt = '300' -%} - {%- set vlan_private = '1000' -%} -{%- endif -%} - -{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#} -{%- set nics = { nic_private: True } -%} - -{%- set vlans = { vlan_private: nic_private } -%} ---- -parameters: - linux: - network: - interface: -{%- for nic in nics %} - {{ nic }}: - enabled: true - type: eth - {%- if nic == nic_admin %} - proto: dhcp - {%- else %} - proto: manual - {%- endif %} - name: {{ nic }} -{%- endfor %} - -{%- for vlan in vlans %} - {%- if vlan and vlan != 'native' %} - {{ vlans[vlan] }}.{{ vlan }}: - enabled: true - proto: manual - type: vlan - name: {{ vlans[vlan] }}.{{ vlan }} - use_interfaces: - - {{ vlans[vlan] }} - {%- endif %} -{%- endfor %} - - br-mesh: - enabled: true - type: bridge - address: ${_param:tenant_address} - netmask: 255.255.255.0 - mtu: 1500 - use_interfaces: - - {{ nic_private }}{% if vlan_private and vlan_private != 'native' %}.{{ vlan_private }}{% endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/database.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/database.yml deleted file mode 100644 index 8585c6915..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/database.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_database - - cluster.baremetal-mcp-pike-odl-ha diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/telemetry.yml deleted file mode 100644 index 83d1be89a..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/telemetry.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_telemetry - - cluster.baremetal-mcp-pike-odl-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config.yml deleted file mode 100644 index 3b7ba99e0..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.infra.config - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra.config_pdf diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config_pdf.yml.j2 deleted file mode 100644 index 08e8ab717..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/config_pdf.yml.j2 +++ /dev/null @@ -1,54 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## -{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} -{%- if conf.idf is defined and conf.idf.net_config is defined -%} - {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#} - - {#- Determine interface index for each network (plumbing vars) -#} - {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%} - {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%} - {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%} - {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%} - - {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#} - {%- set node = conf['idf']['fuel']['network']['node'][0] -%} - {%- set nic_admin = node['interfaces'][idx_admin] -%} - {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%} - {%- set nic_private = node['interfaces'][idx_private] -%} - {%- set nic_public = node['interfaces'][idx_public] -%} - - {#- PCI addresses (only for DPDK on private) -#} - {%- set bus_private = node['busaddr'][idx_private] -%} - - {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#} - {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%} - {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%} - {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%} - {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%} -{%- else -%} - {%- set nic_admin = 'enp6s0' -%} - {%- set nic_mgmt = 'enp6s0' -%} - {%- set nic_private = None -%} - {%- set nic_public = None -%} - {%- set vlan_admin = 'native' -%} - {%- set vlan_mgmt = '300' -%} - {%- set vlan_private = '1000' -%} -{%- endif -%} ---- -parameters: - reclass: - storage: - node: - openstack_compute_node01: - params: - dpdk0_name: {{ nic_private }} - dpdk0_pci: '"{{ bus_private }}"' - openstack_compute_node02: - params: - dpdk0_name: {{ nic_private }} - dpdk0_pci: '"{{ bus_private }}"' diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/maas.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/maas.yml deleted file mode 100644 index fb55539f5..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/maas.yml +++ /dev/null @@ -1,11 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.infra.maas - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/compute.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/compute.yml.j2 deleted file mode 100644 index 76fa17946..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/compute.yml.j2 +++ /dev/null @@ -1,47 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## -{%- if conf.idf is defined and conf.idf.net_config is defined -%} - {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%} -{%- else -%} - {%- set vlan_private = '1000' -%} -{%- endif -%} ---- -classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_compute - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra - - system.neutron.compute.nfv.dpdk -parameters: - neutron: - gateway: - dpdk: 'True' - vhost_socket_dir: ${_param:compute_ovs_vhost_socket_dir} - backend: - tenant_vlan_range: ${_param:neutron_tenant_vlan_range} - nova: - compute: - libvirt_service: libvirtd - libvirt_bin: /etc/default/libvirtd - linux: - network: - interface: - dpdk0: - name: ${_param:dpdk0_name} - pci: ${_param:dpdk0_pci} - driver: igb_uio - enabled: true - bridge: br-prv - type: dpdk_ovs_port - n_rxq: 2 - br-prv: - enabled: true - type: dpdk_ovs_bridge - address: ${_param:tenant_address} - netmask: 255.255.255.0 - {%- if vlan_private and vlan_private != 'native' %} - tag: {{ vlan_private }} - {%- endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/database.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/database.yml deleted file mode 100644 index 86b4038c2..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/database.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_database - - cluster.baremetal-mcp-pike-ovs-dpdk-ha diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/init.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/init.yml deleted file mode 100644 index 49af851cc..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/init.yml +++ /dev/null @@ -1,24 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_init -parameters: - _param: - neutron_tenant_network_types: "flat,vxlan" - neutron_tenant_vlan_range: "1000:1030" - nova_cpu_pinning: "5-7,13-15" - compute_hugepages_size: 2M - compute_hugepages_count: 8192 - compute_hugepages_mount: /mnt/hugepages_2M - compute_kernel_isolcpu: 2,3,5,6,7,10,11,13,14,15 - 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" diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/proxy.yml deleted file mode 100644 index de960d976..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/proxy.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_triport - - cluster.baremetal-mcp-pike-common-ha.openstack_proxy - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml deleted file mode 100644 index 680efa871..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_telemetry - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/maas.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/maas.yml deleted file mode 100644 index 4bb3d74f7..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/maas.yml +++ /dev/null @@ -1,11 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.infra.maas - - cluster.baremetal-mcp-pike-ovs-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 deleted file mode 100644 index 7b90c727a..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 +++ /dev/null @@ -1,83 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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 -############################################################################## -{# NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} -{%- if conf.idf is defined and conf.idf.net_config is defined -%} - {#- NOTE: Currently, we assume all cluster nodes use the same mapping -#} - - {#- Determine interface index for each network (plumbing vars) -#} - {%- set idx_admin = conf['idf']['net_config']['admin']['interface'] -%} - {%- set idx_mgmt = conf['idf']['net_config']['mgmt']['interface'] -%} - {%- set idx_private = conf['idf']['net_config']['private']['interface'] -%} - {%- set idx_public = conf['idf']['net_config']['public']['interface'] -%} - - {#- Physical interface OS name for each network (e.g. em1, enp1s0f1) -#} - {%- set node = conf['idf']['fuel']['network']['node'][0] -%} - {%- set nic_admin = node['interfaces'][idx_admin] -%} - {%- set nic_mgmt = node['interfaces'][idx_mgmt] -%} - {%- set nic_private = node['interfaces'][idx_private] -%} - {%- set nic_public = node['interfaces'][idx_public] -%} - - {#- PCI addresses (only for DPDK on private) -#} - {%- set bus_private = node['busaddr'][idx_private] -%} - - {#- VLAN for each network (only untagged 'admin' is supported by MaaS config!) -#} - {%- set vlan_admin = conf['idf']['net_config']['admin']['vlan'] -%} - {%- set vlan_mgmt = conf['idf']['net_config']['mgmt']['vlan'] -%} - {%- set vlan_private = conf['idf']['net_config']['private']['vlan'] -%} - {%- set vlan_public = conf['idf']['net_config']['public']['vlan'] -%} -{%- else -%} - {%- set nic_admin = 'enp6s0' -%} - {%- set nic_mgmt = 'enp6s0' -%} - {%- set nic_private = None -%} - {%- set nic_public = None -%} - {%- set vlan_admin = 'native' -%} - {%- set vlan_mgmt = '300' -%} - {%- set vlan_private = '1000' -%} -{%- endif -%} - -{#- Filter-out NIC duplicates by constructing a dict (used NICs only) -#} -{%- set nics = { nic_private: True } -%} - -{%- set vlans = { vlan_private: nic_private } -%} ---- -parameters: - linux: - network: - interface: -{%- for nic in nics %} - {{ nic }}: - enabled: true - type: eth - {%- if nic == nic_admin %} - proto: dhcp - {%- else %} - proto: manual - {%- endif %} - name: {{ nic }} -{%- endfor %} - -{%- for vlan in vlans %} - {%- if vlan and vlan != 'native' %} - {{ vlans[vlan] }}.{{ vlan }}: - enabled: true - proto: manual - type: vlan - name: {{ vlans[vlan] }}.{{ vlan }} - use_interfaces: - - {{ vlans[vlan] }} - {%- endif %} -{%- endfor %} - - br-mesh: - enabled: true - type: bridge - address: ${_param:tenant_address} - netmask: 255.255.255.0 - mtu: 1500 - use_interfaces: - - {{ nic_private }}{% if vlan_private and vlan_private != 'native' %}.{{ vlan_private }}{% endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/database.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/database.yml deleted file mode 100644 index 85f5ebcab..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/database.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_database - - cluster.baremetal-mcp-pike-ovs-ha diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/init.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/init.yml deleted file mode 100644 index f1c8b93a4..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/init.yml +++ /dev/null @@ -1,18 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_init -parameters: - _param: - neutron_tenant_network_types: "flat,vxlan" - nova_cpu_pinning: "1,2,3,4,5,7,8,9,10,11" - compute_hugepages_size: 1G - compute_hugepages_count: 16 - compute_hugepages_mount: /mnt/hugepages_1G - compute_kernel_isolcpu: ${_param:nova_cpu_pinning} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/proxy.yml deleted file mode 100644 index 5c91f605f..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/proxy.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_triport - - cluster.baremetal-mcp-pike-common-ha.openstack_proxy - - cluster.baremetal-mcp-pike-ovs-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/telemetry.yml deleted file mode 100644 index c6b111939..000000000 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/telemetry.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_telemetry - - cluster.baremetal-mcp-pike-ovs-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/lab_proxy_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/include/lab_proxy_pdf.yml.j2 index 0e95d2d1d..0e95d2d1d 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/lab_proxy_pdf.yml.j2 +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/include/lab_proxy_pdf.yml.j2 diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/include/proxy.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/include/maas_proxy.yml index 3c324db8b..11878ff2d 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/include/proxy.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/include/maas_proxy.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/config.yml index 4d7fa1eb1..bd75e7b72 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -25,7 +25,7 @@ classes: # - system.reclass.storage.system.stacklight_monitor_cluster # - system.reclass.storage.system.stacklight_telemetry_cluster - system.reclass.storage.system.infra_maas_single - - cluster.baremetal-mcp-pike-common-ha.infra.lab_proxy_pdf + - cluster.mcp-pike-common-ha.include.lab_proxy_pdf parameters: _param: salt_master_base_environment: prd @@ -117,18 +117,22 @@ parameters: # - system.kibana.client.single openstack_control_node01: classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_control_init + - cluster.mcp-pike-common-ha.openstack_control_init params: linux_system_codename: xenial + # NOTE: When VCP is present, external_address is not used + external_address: ${_param:openstack_proxy_node01_address} openstack_control_node02: params: linux_system_codename: xenial + external_address: 0.0.0.0 openstack_control_node03: params: linux_system_codename: xenial + external_address: ${_param:openstack_proxy_node02_address} openstack_database_node01: classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_database_init + - cluster.mcp-pike-common-ha.openstack_database_init params: linux_system_codename: xenial openstack_database_node02: diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/init.yml.j2 index 7d513e9bf..7f3839e82 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/init.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -9,11 +9,11 @@ classes: - system.linux.system.single - cluster.all-mcp-arch-common - # - cluster.baremetal-mcp-pike-common-ha.stacklight - # - cluster.baremetal-mcp-pike-common-ha.stacklight.client + # - cluster.mcp-pike-common-ha.stacklight + # - cluster.mcp-pike-common-ha.stacklight.client parameters: _param: - apt_mk_version: stable + apt_mk_version: nightly mcp_repo_version: 1.1 salt_version: 2016.11 cluster_domain: ${_param:cluster_name}.local @@ -31,9 +31,16 @@ parameters: infra_maas_node01_deploy_address: ${_param:opnfv_infra_maas_node01_deploy_address} infra_kvm_address: ${_param:opnfv_infra_kvm_address} +{%- if conf.MCP_VCP %} infra_kvm_node01_address: ${_param:opnfv_infra_kvm_node01_address} infra_kvm_node02_address: ${_param:opnfv_infra_kvm_node02_address} infra_kvm_node03_address: ${_param:opnfv_infra_kvm_node03_address} +{%- else %} + # For NOVCP, we override kvm addresses to overlap with ctl + infra_kvm_node01_address: ${_param:openstack_control_node01_address} + infra_kvm_node02_address: ${_param:openstack_control_node02_address} + infra_kvm_node03_address: ${_param:openstack_control_node03_address} +{%- endif %} infra_maas_node01_hostname: mas01 infra_kvm_node01_hostname: kvm01 diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm.yml index 1e6b3bd0d..df2304521 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/kvm.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -21,8 +21,9 @@ classes: # - system.salt.control.cluster.stacklight_server_cluster # - system.salt.control.cluster.stacklight_log_cluster # - system.salt.control.cluster.stacklight_telemetry_cluster - - cluster.baremetal-mcp-pike-common-ha.infra.kvm_pdf - - cluster.baremetal-mcp-pike-common-ha.include.proxy + - cluster.mcp-pike-common-ha.infra.kvm_pdf + - cluster.mcp-pike-common-ha.include.maas_proxy + - cluster.mcp-pike-common-ha.include.lab_proxy_pdf parameters: _param: linux_system_codename: xenial @@ -34,9 +35,6 @@ parameters: keepalived_vip_interface: br-ctl keepalived_vip_virtual_router_id: 69 linux: - network: - remove_iface_files: - - '/etc/network/interfaces.d/50-cloud-init.cfg' system: kernel: boot_options: diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm_pdf.yml.j2 new file mode 100644 index 000000000..97166c62c --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/kvm_pdf.yml.j2 @@ -0,0 +1,66 @@ +############################################################################## +# 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 +############################################################################## +{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} +{%- import 'net_map.j2' as nm 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: + 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 %} + + br-mgmt: + enabled: true + proto: dhcp + type: bridge + use_interfaces: + - {{ nm.ctl01.nic_admin }}{% if nm.vlan_admin | int > 0 %}.{{ nm.vlan_admin }}{% endif %} + noifupdown: true + br-ctl: + enabled: true + type: bridge + proto: static + address: ${_param:single_address} + netmask: 255.255.255.0 + use_interfaces: + - {{ nm.ctl01.nic_mgmt }}{% if nm.vlan_mgmt | int > 0 %}.{{ nm.vlan_mgmt }}{% endif %} + noifupdown: true + 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 %} + noifupdown: true diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas.yml index da28abf06..e83de35cd 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/infra/maas.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -9,7 +9,8 @@ classes: - system.maas.region.single - service.maas.cluster.single - - cluster.baremetal-mcp-pike-common-ha.infra.lab_proxy_pdf + - cluster.mcp-pike-common-ha.include.lab_proxy_pdf + - cluster.mcp-pike-common-ha.infra.maas_pdf parameters: _param: dhcp_interface: ${_param:opnfv_fn_vm_primary_interface} @@ -24,7 +25,7 @@ parameters: maas_db_password: opnfv_secret dns_server01: ${_param:opnfv_dns_server01} single_address: ${_param:infra_maas_node01_deploy_address} - hwe_kernel: 'ga-16.04' + hwe_kernel: 'hwe-16.04' maas: region: salt_master_ip: ${_param:reclass_config_master} @@ -54,62 +55,6 @@ parameters: vid: 0 dhcp_on: true primary_rack: ${_param:infra_maas_node01_hostname} - machines: - kvm01: - interface: - mac: ${_param:opnfv_maas_node01_interface_mac} - power_parameters: - power_address: ${_param:opnfv_maas_node01_power_address} - power_password: ${_param:opnfv_maas_node01_power_password} - power_type: ${_param:opnfv_maas_node01_power_type} - power_user: ${_param:opnfv_maas_node01_power_user} - architecture: ${_param:opnfv_maas_node01_architecture} - distro_series: xenial - hwe_kernel: ${_param:hwe_kernel} - kvm02: - interface: - mac: ${_param:opnfv_maas_node02_interface_mac} - power_parameters: - power_address: ${_param:opnfv_maas_node02_power_address} - power_password: ${_param:opnfv_maas_node02_power_password} - power_type: ${_param:opnfv_maas_node02_power_type} - power_user: ${_param:opnfv_maas_node02_power_user} - architecture: ${_param:opnfv_maas_node02_architecture} - distro_series: xenial - hwe_kernel: ${_param:hwe_kernel} - kvm03: - interface: - mac: ${_param:opnfv_maas_node03_interface_mac} - power_parameters: - power_address: ${_param:opnfv_maas_node03_power_address} - power_password: ${_param:opnfv_maas_node03_power_password} - power_type: ${_param:opnfv_maas_node03_power_type} - power_user: ${_param:opnfv_maas_node03_power_user} - architecture: ${_param:opnfv_maas_node03_architecture} - distro_series: xenial - hwe_kernel: ${_param:hwe_kernel} - cmp001: - interface: - mac: ${_param:opnfv_maas_node04_interface_mac} - power_parameters: - power_address: ${_param:opnfv_maas_node04_power_address} - power_password: ${_param:opnfv_maas_node04_power_password} - power_type: ${_param:opnfv_maas_node04_power_type} - power_user: ${_param:opnfv_maas_node04_power_user} - architecture: ${_param:opnfv_maas_node04_architecture} - distro_series: xenial - hwe_kernel: ${_param:hwe_kernel} - cmp002: - interface: - mac: ${_param:opnfv_maas_node05_interface_mac} - power_parameters: - power_address: ${_param:opnfv_maas_node05_power_address} - power_password: ${_param:opnfv_maas_node05_power_password} - power_type: ${_param:opnfv_maas_node05_power_type} - power_user: ${_param:opnfv_maas_node05_power_user} - architecture: ${_param:opnfv_maas_node05_architecture} - distro_series: xenial - hwe_kernel: ${_param:hwe_kernel} cluster: saltstack_repo_xenial: "http://repo.saltstack.com/apt/ubuntu/16.04/amd64/2016.11/ xenial main" linux: diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas_pdf.yml.j2 new file mode 100644 index 000000000..cff6d9b30 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/infra/maas_pdf.yml.j2 @@ -0,0 +1,32 @@ +############################################################################## +# 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: + maas: + region: + sshprefs: + - '{{ conf.MAAS_SSH_KEY }}' + machines: + {%- set pxe_interface = conf.idf.net_config.admin.interface %} + {#- We only support exactly 5 nodes for now, hardcoded order #} + {%- set node_roles = ['kvm01', 'kvm02', 'kvm03', 'cmp001', 'cmp002'] %} + {%- for node in conf.nodes %} + {%- if node.node.type == 'baremetal' %} + {{ node_roles[loop.index0] }}: + interface: + mac: {{ node.interfaces[pxe_interface].mac_address }} + power_parameters: + power_address: {{ node.remote_management.address.rsplit('/')[0] }} + power_password: {{ node.remote_management.pass }} + power_type: {{ node.remote_management.type }} + power_user: {{ node.remote_management.user }} + architecture: {{ node.node.arch | dpkg_arch }}/generic + distro_series: xenial + hwe_kernel: ${_param:hwe_kernel} + {%- endif %} + {%- endfor %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute.yml index a0cdd98c8..24acbacf1 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_compute.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,18 +7,18 @@ ############################################################################## --- classes: + - system.linux.system.repo.mcp.openstack - system.linux.system.repo.glusterfs - - system.linux.storage.loopback - system.glusterfs.client.cluster - system.nova.compute.cluster - system.nova.compute.nfv.hugepages - - system.nova.compute.nfv.cpu_pinning - system.neutron.gateway.cluster - system.cinder.volume.single - system.cinder.volume.backend.lvm - system.ceilometer.agent.cluster - - cluster.baremetal-mcp-pike-common-ha.openstack_compute_pdf - - cluster.baremetal-mcp-pike-common-ha.include.proxy + - cluster.mcp-pike-common-ha.openstack_compute_pdf + - cluster.mcp-pike-common-ha.include.maas_proxy + - cluster.mcp-pike-common-ha.include.lab_proxy_pdf parameters: _param: cluster_vip_address: ${_param:openstack_control_address} @@ -33,7 +33,6 @@ parameters: interface_mtu: 1500 keepalived_vip_interface: br-ctl keepalived_vip_virtual_router_id: 69 - loopback_device_size: 20 linux_system_codename: xenial glusterfs_version: '3.13' glusterfs: @@ -44,10 +43,18 @@ parameters: server: ${_param:glusterfs_service_host} # yamllint disable-line rule:line-length opts: "defaults,backup-volfile-servers=${_param:cluster_node01_address}:${_param:cluster_node02_address}:${_param:cluster_node03_address}" + cinder: + volume: + backend: + lvm-driver: + # Align system.cinder.volume.backend.lvm and MaaS data + volume_group: ${linux:storage:lvm:cinder-vg:name} linux: - network: - remove_iface_files: - - '/etc/network/interfaces.d/50-cloud-init.cfg' + storage: + lvm: + # Align with both system.cinder.volume.backend.lvm and MaaS data + cinder-vg: + name: vgroot system: kernel: sysctl: @@ -59,3 +66,7 @@ parameters: neutron: gateway: vlan_aware_vms: true + root_helper_daemon: false + nova: + compute: + disk_cachemodes: file=directsync,block=none diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute_pdf.yml.j2 new file mode 100644 index 000000000..fd51f5fea --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_compute_pdf.yml.j2 @@ -0,0 +1,93 @@ +############################################################################## +# 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 +############################################################################## +{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} +{%- import 'net_map.j2' as nm 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 } %} +--- +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 %} + linux: + 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 }}: + enabled: true + 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 %} + 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 %} + + br-ctl: + enabled: true + type: bridge + proto: static + address: ${_param:single_address} + netmask: 255.255.255.0 + use_interfaces: + - {{ nm.cmp001.nic_mgmt }}{% if nm.vlan_mgmt | int > 0 %}.{{ nm.vlan_mgmt }}{% endif %} + br-floating: + enabled: true + type: ovs_bridge + mtu: ${_param:interface_mtu} + proto: static + 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} + ovs_port_{{ nm.cmp001.nic_public }}: + enabled: true + name: {{ nm.cmp001.nic_public }}{% if nm.vlan_public | int > 0 %}.{{ nm.vlan_public }}{% endif %} + proto: manual + ovs_port_type: OVSPort + type: ovs_port + ovs_bridge: br-floating + bridge: br-floating diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_control.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_control.yml.j2 index cf09a4123..6f7b33e3d 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_control.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -25,8 +25,36 @@ classes: - system.glusterfs.client.cluster - system.glusterfs.client.volume.glance - system.glusterfs.client.volume.keystone +{%- if not conf.MCP_VCP %} + # sync from kvm + - service.keepalived.cluster.single + - system.glusterfs.server.volume.glance + - system.glusterfs.server.volume.keystone + - system.glusterfs.server.cluster + # NOTE(armband): Disabled for novcp + # - system.salt.control.virt + # - system.salt.control.cluster.openstack_control_cluster + # - system.salt.control.cluster.openstack_proxy_cluster + # - system.salt.control.cluster.openstack_database_cluster + # - system.salt.control.cluster.openstack_message_queue_cluster + # - system.salt.control.cluster.openstack_telemetry_cluster + # - system.salt.control.cluster.stacklight_server_cluster + # - system.salt.control.cluster.stacklight_log_cluster + # - system.salt.control.cluster.stacklight_telemetry_cluster + - cluster.mcp-pike-common-ha.infra.kvm_pdf + - cluster.mcp-pike-common-ha.include.maas_proxy + - cluster.mcp-pike-common-ha.include.lab_proxy_pdf +{%- endif %} parameters: _param: +{%- if not conf.MCP_VCP %} + linux_system_codename: xenial # sync from kvm + # For NOVCP, we switch keepalived VIPs, to keep cluster_vip_address in ctl + single_nic: br-ctl # for keepalive_vip_interface interpolation + control_nic: ~ # Dummy value to keep reclass 1.5.2 happy + keepalived_openstack_web_public_vip_address: ${_param:openstack_proxy_address} + keepalived_openstack_web_public_vip_interface: br-ex +{%- endif %} keepalived_vip_interface: ${_param:single_nic} keepalived_vip_virtual_router_id: 50 cluster_vip_address: ${_param:openstack_control_address} @@ -39,6 +67,7 @@ parameters: cluster_node03_address: ${_param:openstack_control_node03_address} nova_vncproxy_url: https://${_param:cluster_public_host}:6080 glusterfs_version: '3.13' +{%- if conf.MCP_VCP %} heat: server: metadata: @@ -62,12 +91,55 @@ parameters: - nova-novncproxy - nova-scheduler - python-novaclient +{%- else %} + libvirt: + server: + service: libvirtd + config_sys: /etc/default/libvirtd + unix_sock_group: libvirt + linux: + network: + # Add public IPs here as overrides, no need to fork another kvm_pdf.j2 + interface: + br-ex: + address: ${_param:external_address} + proto: static + apache: + server: + bind: + ~ports: ~ + ~modules: + - rewrite + - wsgi + # sync from common-ha kvm role + glusterfs: + server: + service: glusterd + volumes: + nova_instances: + storage: /srv/glusterfs/nova_instances + replica: 3 + bricks: + - ${_param:cluster_node01_address}:/srv/glusterfs/nova_instances + - ${_param:cluster_node02_address}:/srv/glusterfs/nova_instances + - ${_param:cluster_node03_address}:/srv/glusterfs/nova_instances + options: + cluster.readdir-optimize: 'True' + nfs.disable: 'True' + network.remote-dio: 'True' + cluster.favorite-child-policy: mtime + diagnostics.client-log-level: WARNING + diagnostics.brick-log-level: WARNING +{%- endif %} neutron: server: vlan_aware_vms: true + root_helper_daemon: false keystone: server: cacert: /etc/ssl/certs/mcp_os_cacert + openrc_extra: + volume_device_name: vdc bind: server: control: diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_control_init.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_control_init.yml index deb4cd7e9..7c1fac5f9 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_control_init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_control_init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_database.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_database.yml index 17c4e1cf6..221c84f6c 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_database.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_database.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_database_init.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_database_init.yml index 731fe6ed6..b7d09cfff 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_database_init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_database_init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_init.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_init.yml.j2 index 8f4edefea..f6533855b 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_init.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -12,35 +12,56 @@ parameters: openstack_version: pike # openstack service addresses +{%- if conf.MCP_VCP %} openstack_proxy_control_address: ${_param:opnfv_openstack_proxy_control_address} openstack_proxy_node01_control_address: ${_param:opnfv_openstack_proxy_node01_control_address} openstack_proxy_node02_control_address: ${_param:opnfv_openstack_proxy_node02_control_address} +{%- else %} + openstack_proxy_control_address: ${_param:opnfv_openstack_control_address} + openstack_proxy_node01_control_address: ${_param:opnfv_openstack_control_node01_address} + openstack_proxy_node02_control_address: ${_param:opnfv_openstack_control_node03_address} +{%- endif %} + openstack_proxy_address: ${_param:opnfv_openstack_proxy_address} openstack_proxy_node01_address: ${_param:opnfv_openstack_proxy_node01_address} openstack_proxy_node02_address: ${_param:opnfv_openstack_proxy_node02_address} + openstack_control_address: ${_param:opnfv_openstack_control_address} openstack_control_node01_address: ${_param:opnfv_openstack_control_node01_address} openstack_control_node02_address: ${_param:opnfv_openstack_control_node02_address} openstack_control_node03_address: ${_param:opnfv_openstack_control_node03_address} + +{%- if conf.MCP_VCP %} openstack_database_address: ${_param:opnfv_openstack_database_address} openstack_database_node01_address: ${_param:opnfv_openstack_database_node01_address} openstack_database_node02_address: ${_param:opnfv_openstack_database_node02_address} openstack_database_node03_address: ${_param:opnfv_openstack_database_node03_address} + openstack_message_queue_address: ${_param:opnfv_openstack_message_queue_address} openstack_message_queue_node01_address: ${_param:opnfv_openstack_message_queue_node01_address} openstack_message_queue_node02_address: ${_param:opnfv_openstack_message_queue_node02_address} openstack_message_queue_node03_address: ${_param:opnfv_openstack_message_queue_node03_address} - - openstack_telemetry_hostname: mdb - openstack_telemetry_node01_hostname: mdb01 - openstack_telemetry_node02_hostname: mdb02 - openstack_telemetry_node03_hostname: mdb03 - openstack_telemetry_address: ${_param:opnfv_openstack_telemetry_address} openstack_telemetry_node01_address: ${_param:opnfv_openstack_telemetry_node01_address} openstack_telemetry_node02_address: ${_param:opnfv_openstack_telemetry_node02_address} openstack_telemetry_node03_address: ${_param:opnfv_openstack_telemetry_node03_address} +{%- else %} + openstack_database_address: ${_param:openstack_control_address} + openstack_database_node01_address: ${_param:openstack_control_node01_address} + openstack_database_node02_address: ${_param:openstack_control_node02_address} + openstack_database_node03_address: ${_param:openstack_control_node03_address} + + openstack_message_queue_address: ${_param:openstack_control_address} + openstack_message_queue_node01_address: ${_param:openstack_control_node01_address} + openstack_message_queue_node02_address: ${_param:openstack_control_node02_address} + openstack_message_queue_node03_address: ${_param:openstack_control_node03_address} + + openstack_telemetry_address: ${_param:openstack_control_address} + openstack_telemetry_node01_address: ${_param:openstack_control_node01_address} + openstack_telemetry_node02_address: ${_param:openstack_control_node02_address} + openstack_telemetry_node03_address: ${_param:openstack_control_node03_address} +{%- endif %} # OpenStack Compute openstack_compute_node01_single_address: ${_param:opnfv_openstack_compute_node01_single_address} @@ -56,6 +77,7 @@ parameters: openstack_compute_node02_external_address: ${_param:opnfv_openstack_compute_node02_external_address} # openstack service hostnames +{%- if conf.MCP_VCP %} openstack_proxy_hostname: prx openstack_proxy_node01_hostname: prx01 openstack_proxy_node02_hostname: prx02 @@ -71,16 +93,50 @@ parameters: openstack_message_queue_node01_hostname: msg01 openstack_message_queue_node02_hostname: msg02 openstack_message_queue_node03_hostname: msg03 + openstack_telemetry_hostname: mdb + openstack_telemetry_node01_hostname: mdb01 + openstack_telemetry_node02_hostname: mdb02 + openstack_telemetry_node03_hostname: mdb03 +{%- else %} + openstack_proxy_hostname: ${_param:openstack_control_hostname} + openstack_proxy_node01_hostname: ${_param:openstack_control_node01_hostname} + openstack_proxy_node02_hostname: ${_param:openstack_control_node03_hostname} + openstack_control_hostname: kvm + openstack_control_node01_hostname: kvm01 + openstack_control_node02_hostname: kvm02 + openstack_control_node03_hostname: kvm03 + openstack_database_hostname: ${_param:openstack_control_hostname} + openstack_database_node01_hostname: ${_param:openstack_control_node01_hostname} + openstack_database_node02_hostname: ${_param:openstack_control_node02_hostname} + openstack_database_node03_hostname: ${_param:openstack_control_node03_hostname} + openstack_message_queue_hostname: ${_param:openstack_control_hostname} + openstack_message_queue_node01_hostname: ${_param:openstack_control_node01_hostname} + openstack_message_queue_node02_hostname: ${_param:openstack_control_node02_hostname} + openstack_message_queue_node03_hostname: ${_param:openstack_control_node03_hostname} + openstack_telemetry_hostname: ${_param:openstack_control_hostname} + openstack_telemetry_node01_hostname: ${_param:openstack_control_node01_hostname} + openstack_telemetry_node02_hostname: ${_param:openstack_control_node02_hostname} + openstack_telemetry_node03_hostname: ${_param:openstack_control_node03_hostname} +{%- endif %} # openstack compute openstack_compute_node01_hostname: cmp001 openstack_compute_node02_hostname: cmp002 + # opendaylight options +{%- if conf.MCP_VCP %} + opendaylight_server_node01_hostname: odl01 + opendaylight_server_node01_single_address: ${_param:opnfv_opendaylight_server_node01_single_address} +{%- else %} + opendaylight_control_hostname: ${_param:openstack_control_node02_hostname} + opendaylight_server_node01_hostname: ${_param:opendaylight_control_hostname} + opendaylight_server_node01_single_address: ${_param:opnfv_openstack_control_node02_address} +{%- endif %} + openstack_region: RegionOne admin_email: root@localhost # Neutron osv/nodvr neutron_control_dvr: 'False' - neutron_l3_ha: 'True' neutron_global_physnet_mtu: 1500 neutron_external_mtu: 1500 neutron_gateway_dvr: 'False' @@ -110,7 +166,11 @@ parameters: nova_service_host: ${_param:openstack_control_address} neutron_version: ${_param:openstack_version} neutron_service_host: ${_param:openstack_control_address} +{%- if conf.MCP_VCP %} glusterfs_service_host: ${_param:infra_kvm_address} +{%- else %} + glusterfs_service_host: ${_param:openstack_control_address} +{%- endif %} mysql_admin_user: root mysql_admin_password: opnfv_secret mysql_cinder_password: opnfv_secret @@ -188,9 +248,12 @@ parameters: linux: system: repo: + uca-staging: + source: "deb http://ppa.launchpad.net/ubuntu-cloud-archive/${_param:openstack_version}-staging/ubuntu xenial main" + key_id: 9F68104E + key_server: keyserver.ubuntu.com uca: source: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/${_param:openstack_version} main" - architectures: amd64 key_id: EC4926EA key_server: keyserver.ubuntu.com kernel: @@ -200,6 +263,7 @@ parameters: net.ipv4.tcp_fin_timeout: 30 network: host: +{%- if conf.MCP_VCP %} prx: address: ${_param:openstack_proxy_control_address} names: @@ -295,6 +359,28 @@ parameters: names: - ${_param:openstack_telemetry_node03_hostname} - ${_param:openstack_telemetry_node03_hostname}.${_param:cluster_domain} +{%- else %} + kvm: + address: ${_param:openstack_control_address} + names: + - ${_param:openstack_control_hostname} + - ${_param:openstack_control_hostname}.${_param:cluster_domain} + kvm01: + address: ${_param:openstack_control_node01_address} + names: + - ${_param:openstack_control_node01_hostname} + - ${_param:openstack_control_node01_hostname}.${_param:cluster_domain} + kvm02: + address: ${_param:openstack_control_node02_address} + names: + - ${_param:openstack_control_node02_hostname} + - ${_param:openstack_control_node02_hostname}.${_param:cluster_domain} + kvm03: + address: ${_param:openstack_control_node03_address} + names: + - ${_param:openstack_control_node03_hostname} + - ${_param:openstack_control_node03_hostname}.${_param:cluster_domain} +{%- endif %} cmp001: address: ${_param:openstack_compute_node01_control_address} names: diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_interface_vcp_biport.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_interface_vcp_biport.yml.j2 index f0fabbafa..cc92e5df9 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_interface_vcp_biport.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_interface_vcp_biport.yml.j2 @@ -1,13 +1,15 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{%- if conf.MCP_VCP %} classes: - - cluster.baremetal-mcp-pike-common-ha.include.proxy + - cluster.mcp-pike-common-ha.include.maas_proxy + - cluster.mcp-pike-common-ha.include.lab_proxy_pdf parameters: _param: dhcp_nic: ${_param:opnfv_vcp_vm_primary_interface} @@ -27,3 +29,4 @@ parameters: name: ${_param:single_nic} address: ${_param:single_address} netmask: ${_param:opnfv_net_public_mask} +{%- endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_interface_vcp_triport.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_interface_vcp_triport.yml.j2 index 47f2f76f4..7fef8ae9f 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_interface_vcp_triport.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_interface_vcp_triport.yml.j2 @@ -1,13 +1,15 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{%- if conf.MCP_VCP %} classes: - - cluster.baremetal-mcp-pike-common-ha.include.proxy + - cluster.mcp-pike-common-ha.include.maas_proxy + - cluster.mcp-pike-common-ha.include.lab_proxy_pdf parameters: _param: dhcp_nic: ${_param:opnfv_vcp_vm_primary_interface} @@ -40,3 +42,4 @@ parameters: name: ${_param:control_nic} address: ${_param:control_address} netmask: 255.255.255.0 +{%- endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_message_queue.yml index 13f8e5a13..be6c5a311 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_message_queue.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_message_queue.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_proxy.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_proxy.yml.j2 new file mode 100644 index 000000000..26943b7b6 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_proxy.yml.j2 @@ -0,0 +1,98 @@ +############################################################################## +# 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.nginx.server.single + - system.nginx.server.proxy.openstack_api + - system.nginx.server.proxy.openstack_vnc + - system.nginx.server.proxy.openstack_web + - system.nginx.server.proxy.openstack.aodh + - system.nginx.server.proxy.openstack.ceilometer + - system.horizon.server.single + - system.salt.minion.cert.proxy + - system.sphinx.server.doc.reclass + - service.keepalived.cluster.single + - system.keepalived.cluster.instance.openstack_web_public_vip +parameters: + _param: + cluster_vip_address: ${_param:openstack_proxy_address} + keepalived_openstack_web_public_vip_address: ${_param:cluster_vip_address} + keepalived_openstack_web_public_vip_interface: ${_param:single_nic} + keepalived_vip_address: ${_param:openstack_proxy_control_address} + keepalived_vip_interface: ${_param:control_nic} + keepalived_vip_virtual_router_id: 240 + nginx_proxy_ssl: + enabled: true + authority: ${_param:salt_minion_ca_authority} + engine: salt + mode: secure + salt_minion_ca_host: cfg01.${_param:cluster_domain} + linux: + system: + package: + 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 + site: + nginx_proxy_novnc: &nginx_openstack_proxy_address + host: + address: ${_param:openstack_proxy_address} + nginx_proxy_openstack_api_aodh: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_ceilometer: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_cinder: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_glance: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_heat: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_heat_cfn: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_heat_cloudwatch: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_keystone: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_keystone_private: + <<: *nginx_openstack_proxy_address + nginx_proxy_openstack_api_neutron: + <<: *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: + <<: *nginx_openstack_proxy_address + nginx_static_reclass_doc: + <<: *nginx_openstack_proxy_address +{%- endif %} + salt: + minion: + cert: + proxy: + alternative_names: "IP:${_param:openstack_proxy_address}" + key_usage: 'digitalSignature, keyEncipherment' + keepalived: + cluster: + vrrp_scripts: + check_pidof: + args: 'nginx' diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_telemetry.yml b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_telemetry.yml index 94c0ce468..a42189a80 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-common-ha/openstack_telemetry.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-ha/openstack_telemetry.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/haproxy_openstack_api.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/haproxy_openstack_api.yml index 649b75c8c..21653d7cb 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/haproxy_openstack_api.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/haproxy_openstack_api.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/infra/config.yml index 7e3a49491..8a620fa83 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -21,10 +21,10 @@ parameters: _param: openstack_control_node01_hostname: ctl01 reclass_data_repository: local - reclass_config_master: ${_param:opnfv_salt_master_ip} + reclass_config_master: ${_param:opnfv_infra_config_pxe_address} salt_master_environment_repository: "https://github.com/tcpcloud" salt_master_environment_revision: master - single_address: 172.16.10.100 + 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} @@ -33,6 +33,11 @@ parameters: linux: network: interface: + dhcp: + enabled: true + type: eth + proto: dhcp + name: ${_param:opnfv_fn_vm_primary_interface} single_int: enabled: true name: ${_param:opnfv_fn_vm_secondary_interface} @@ -40,6 +45,13 @@ parameters: proto: static address: ${_param:single_address} netmask: 255.255.255.0 + pxe: + 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 salt: master: file_recv: true @@ -59,11 +71,11 @@ parameters: single_address: ${_param:openstack_control_node01_address} openstack_compute_node01: params: - single_address: 172.16.10.105 - tenant_address: 10.1.0.105 - external_address: 10.16.0.105 + 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: 172.16.10.106 - tenant_address: 10.1.0.106 - external_address: 10.16.0.106 + 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} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/infra/init.yml index 464048396..ede41940a 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/infra/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/init_options.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/init_options.yml index 9540b9436..69aba92ad 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/init_options.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/init_options.yml @@ -1,26 +1,28 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 parameters: _param: # infra service addresses - infra_config_address: 172.16.10.100 + infra_config_address: ${_param:opnfv_infra_config_address} # openstack service addresses - openstack_control_address: 172.16.10.101 - openstack_control_node01_address: 172.16.10.101 - openstack_control_node02_address: 172.16.10.102 - openstack_control_node03_address: 172.16.10.103 + openstack_control_address: ${_param:opnfv_openstack_control_node01_address} + openstack_control_node01_address: ${_param:opnfv_openstack_control_node01_address} + openstack_control_node02_address: ${_param:opnfv_openstack_control_node02_address} + openstack_control_node03_address: ${_param:opnfv_openstack_control_node03_address} openstack_database_address: ${_param:openstack_control_address} openstack_message_queue_address: ${_param:openstack_control_address} openstack_message_queue_node01_address: ${_param:openstack_control_node01_address} openstack_message_queue_node02_address: ${_param:openstack_control_node02_address} openstack_message_queue_node03_address: ${_param:openstack_control_node03_address} - openstack_gateway_address: 172.16.10.110 + 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/virtual-mcp-pike-common-noha/openstack_compute.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute.yml index da933dc27..3d84e6c18 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_compute.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,7 +7,6 @@ ############################################################################## --- classes: - - system.linux.storage.loopback - service.nfs.client - system.nova.compute.single - service.cinder.volume.single @@ -15,19 +14,21 @@ classes: - system.ceilometer.agent.cluster - system.ceilometer.client.nova_compute - system.ceilometer.client.cinder_volume + - system.linux.system.repo.mcp.openstack + - cluster.mcp-pike-common-noha.openstack_compute_pdf parameters: _param: - primary_interface: ${_param:opnfv_fn_vm_secondary_interface} - tenant_interface: ${_param:opnfv_fn_vm_tertiary_interface} - external_interface: ${_param:opnfv_fn_vm_quaternary_interface} interface_mtu: 9000 linux_system_codename: xenial - loopback_device_size: 20 + ~cinder_lvm_devices: ['/dev/vdb'] nova: compute: libvirt_service: libvirtd libvirt_bin: /etc/default/libvirtd + disk_cachemodes: file=directsync,block=none vncproxy_url: http://${_param:cluster_vip_address}:6080 + bind: + vnc_address: ${_param:single_address} network: region: ${_param:openstack_region} user: neutron @@ -37,6 +38,7 @@ parameters: compute: notification: true vlan_aware_vms: true + root_helper_daemon: false agent_mode: ${_param:neutron_compute_agent_mode} message_queue: host: ${_param:openstack_control_address} @@ -65,31 +67,3 @@ parameters: sysctl: vm.dirty_ratio: 10 vm.dirty_background_ratio: 5 - network: - bridge: openvswitch - interface: - dhcp_int: - enabled: true - name: ${_param:opnfv_fn_vm_primary_interface} - proto: dhcp - type: eth - mtu: ${_param:interface_mtu} - primary_interface: - enabled: true - name: ${_param:primary_interface} - proto: manual - type: eth - tenant_interface: - enabled: true - name: ${_param:tenant_interface} - mtu: ${_param:interface_mtu} - proto: manual - type: eth - br-mgmt: - enabled: true - type: bridge - proto: static - address: ${_param:single_address} - netmask: 255.255.255.0 - use_interfaces: - - ${_param:primary_interface} diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute_pdf.yml.j2 new file mode 100644 index 000000000..64af148fd --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_compute_pdf.yml.j2 @@ -0,0 +1,44 @@ +############################################################################## +# 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 +############################################################################## +{#- NOTE: br-{mgmt,ctl} are cross-referenced, careful when changing names #} +{%- import 'net_map.j2' as nm with context %} +--- +parameters: + _param: + primary_interface: {{ nm.cmp001.nic_mgmt }} + tenant_interface: {{ nm.cmp001.nic_private }} + external_interface: {{ nm.cmp001.nic_public }} + linux: + network: + bridge: openvswitch + interface: + dhcp_int: + enabled: true + name: {{ nm.cmp001.nic_admin }} + proto: dhcp + type: eth + mtu: ${_param:interface_mtu} + primary_interface: + enabled: true + name: ${_param:primary_interface} + proto: manual + type: eth + tenant_interface: + enabled: true + name: ${_param:tenant_interface} + mtu: ${_param:interface_mtu} + proto: manual + type: eth + br-mgmt: + enabled: true + type: bridge + proto: static + address: ${_param:single_address} + netmask: 255.255.255.0 + use_interfaces: + - ${_param:primary_interface} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_control.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control.yml index 98256745f..01b320973 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -43,7 +43,8 @@ classes: - system.aodh.server.single - system.horizon.server.single - service.haproxy.proxy.single - - cluster.virtual-mcp-pike-common-noha.haproxy_openstack_api + - cluster.mcp-pike-common-noha.haproxy_openstack_api + - cluster.mcp-pike-common-noha.openstack_control_pdf parameters: _param: linux_system_codename: xenial @@ -52,25 +53,11 @@ parameters: package: python-msgpack: version: latest - network: - interface: - single_int: - enabled: true - name: ${_param:opnfv_fn_vm_secondary_interface} - type: eth - proto: static - address: ${_param:single_address} - netmask: 255.255.255.0 - public_int: - enabled: true - name: ${_param:opnfv_fn_vm_quaternary_interface} - type: eth - proto: static - address: ${_param:cluster_public_host} - netmask: 255.255.255.0 keystone: server: admin_email: ${_param:admin_email} + openrc_extra: + volume_device_name: vdc glance: server: storage: @@ -140,3 +127,4 @@ parameters: neutron: server: vlan_aware_vms: true + root_helper_daemon: false diff --git a/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control_pdf.yml.j2 new file mode 100644 index 000000000..8219637dc --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_control_pdf.yml.j2 @@ -0,0 +1,32 @@ +############################################################################## +# 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: + linux: + network: + interface: + dhcp_int: + enabled: true + name: {{ nm.ctl01.nic_admin }} + proto: dhcp + type: eth + single_int: + enabled: true + name: {{ nm.ctl01.nic_mgmt }} + type: eth + proto: static + address: ${_param:single_address} + netmask: 255.255.255.0 + public_int: + enabled: true + name: {{ nm.ctl01.nic_public }} + type: eth + proto: static + address: ${_param:cluster_public_host} + netmask: 255.255.255.0 diff --git a/mcp/reclass/nodes/cfg01.baremetal-mcp-pike-ovs-dpdk-ha.local.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_gateway.yml index df38d09b8..8061bb1fe 100644 --- a/mcp/reclass/nodes/cfg01.baremetal-mcp-pike-ovs-dpdk-ha.local.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_gateway.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,12 +7,14 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra.config + - cluster.mcp-pike-common-noha.openstack_gateway_pdf parameters: _param: + interface_mtu: 9000 linux_system_codename: xenial - reclass_data_revision: master - linux: - system: - name: cfg01 - domain: baremetal-mcp-pike-ovs-dpdk-ha.local + neutron: + gateway: + notification: true + agent_mode: ${_param:neutron_gateway_agent_mode} + vlan_aware_vms: true + root_helper_daemon: false diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_gateway.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_gateway_pdf.yml.j2 index 9822de7d3..7067d59a4 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_gateway.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_gateway_pdf.yml.j2 @@ -1,30 +1,24 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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: - primary_interface: ${_param:opnfv_fn_vm_secondary_interface} - tenant_interface: ${_param:opnfv_fn_vm_tertiary_interface} - external_interface: ${_param:opnfv_fn_vm_quaternary_interface} - interface_mtu: 9000 - linux_system_codename: xenial - neutron: - gateway: - notification: true - agent_mode: ${_param:neutron_gateway_agent_mode} - vlan_aware_vms: true + primary_interface: {{ nm.ctl01.nic_mgmt }} + tenant_interface: {{ nm.ctl01.nic_private }} + external_interface: {{ nm.ctl01.nic_public }} linux: network: bridge: openvswitch interface: dhcp_int: enabled: true - name: ${_param:opnfv_fn_vm_primary_interface} + name: {{ nm.ctl01.nic_admin }} proto: dhcp type: eth mtu: ${_param:interface_mtu} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_init.yml b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_init.yml index d5606b594..7c6ce90b7 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-common-noha/openstack_init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-common-noha/openstack_init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -9,12 +9,12 @@ parameters: _param: openstack_version: pike - apt_mk_version: stable + apt_mk_version: nightly mcp_repo_version: 1.1 openstack_region: RegionOne admin_email: root@localhost cluster_public_protocol: http - cluster_public_host: 10.16.0.101 + cluster_public_host: ${_param:opnfv_openstack_control_node01_external_address} neutron_public_protocol: http neutron_control_dvr: 'False' neutron_l3_ha: 'False' @@ -31,11 +31,11 @@ parameters: cluster_vip_address: ${_param:cluster_public_host} cluster_local_address: ${_param:openstack_control_address} cluster_node01_hostname: ctl01 - cluster_node01_address: 172.16.10.101 + cluster_node01_address: ${_param:opnfv_openstack_control_node01_address} cluster_node02_hostname: ctl02 - cluster_node02_address: 172.16.10.102 + cluster_node02_address: ${_param:opnfv_openstack_control_node02_address} cluster_node03_hostname: ctl03 - cluster_node03_address: 172.16.10.103 + cluster_node03_address: ${_param:opnfv_openstack_control_node03_address} rabbitmq_secret_key: opnfv_secret rabbitmq_admin_password: opnfv_secret rabbitmq_openstack_password: opnfv_secret @@ -52,8 +52,6 @@ parameters: ceilometer_database_host: ${_param:cluster_local_address} cinder_version: ${_param:openstack_version} cinder_service_host: ${_param:cluster_local_address} - ceilometer_graphite_publisher_host: 172.16.10.107 - ceilometer_graphite_publisher_port: 2013 nova_version: ${_param:openstack_version} nova_service_host: ${_param:cluster_local_address} nova_vncproxy_url: http://${_param:cluster_vip_address}:8060 @@ -96,9 +94,14 @@ parameters: linux: system: repo: + uca-staging: + # yamllint disable rule:line-length + source: "deb http://ppa.launchpad.net/ubuntu-cloud-archive/${_param:openstack_version}-staging/ubuntu xenial main" + key_id: 9F68104E + key_server: keyserver.ubuntu.com + # yamllint enable rule:line-length uca: source: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/${_param:openstack_version} main" - architectures: amd64 key_id: EC4926EA key_server: keyserver.ubuntu.com kernel: @@ -124,12 +127,12 @@ parameters: - gtw01 - gtw01.${_param:cluster_domain} cmp01: - address: 172.16.10.105 + address: ${_param:opnfv_openstack_compute_node01_control_address} names: - cmp01 - cmp01.${_param:cluster_domain} cmp02: - address: 172.16.10.106 + address: ${_param:opnfv_openstack_compute_node02_control_address} names: - cmp02 - cmp02.${_param:cluster_domain} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/config.yml index d9f723a7c..b812dea89 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,8 +8,9 @@ --- classes: - system.reclass.storage.system.opendaylight_control_single - - cluster.baremetal-mcp-pike-common-ha.infra.config - - cluster.baremetal-mcp-pike-odl-ha.infra + - cluster.mcp-pike-common-ha.infra.config + - cluster.mcp-pike-odl-ha.infra + - cluster.all-mcp-arch-common.infra.config_pdf parameters: reclass: storage: diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init.yml new file mode 100644 index 000000000..419c05947 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init.yml @@ -0,0 +1,14 @@ +############################################################################## +# 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.mcp-pike-common-ha.infra + - cluster.mcp-pike-odl-ha.openstack +parameters: + _param: + cluster_name: mcp-pike-odl-ha diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/kvm.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init_vcp.yml.j2 index b4c2a67ac..385326561 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/kvm.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/init_vcp.yml.j2 @@ -1,11 +1,12 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{%- if conf.MCP_VCP %} classes: - - cluster.baremetal-mcp-pike-common-ha.infra.kvm - - cluster.baremetal-mcp-pike-ovs-ha.infra + - cluster.mcp-pike-odl-ha.infra +{%- endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/kvm.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/kvm.yml.j2 index bbc80e271..5fc4776d9 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/kvm.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/kvm.yml.j2 @@ -1,14 +1,16 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{%- if conf.MCP_VCP %} +# NOTE(armband): we don't want to pull in salt.control for novcp classes: - - cluster.baremetal-mcp-pike-common-ha.infra.kvm - - cluster.baremetal-mcp-pike-odl-ha.infra + - cluster.mcp-pike-common-ha.infra.kvm + - cluster.mcp-pike-odl-ha.infra parameters: salt: control: @@ -16,7 +18,7 @@ parameters: # Default production sizing opendaylight.server: cpu: 4 - ram: 6144 + ram: 8192 disk_profile: small net_profile: default cluster: @@ -27,3 +29,4 @@ parameters: provider: ${_param:infra_kvm_node02_hostname}.${_param:cluster_domain} image: ${_param:salt_control_xenial_image} size: opendaylight.server +{%- endif %} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/maas.yml index 50676fc2c..6662f1fad 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/infra/maas.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,8 +7,8 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.infra - + - cluster.mcp-pike-common-ha.infra.maas + - cluster.mcp-pike-odl-ha.infra parameters: _param: - cluster_name: virtual-mcp-pike-ovs-dpdk-noha + hwe_kernel: 'ga-16.04' diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/init.yml index e0d15e607..80942c27f 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,5 +8,5 @@ --- classes: - cluster.all-mcp-arch-common - - cluster.baremetal-mcp-pike-odl-ha.infra - - cluster.baremetal-mcp-pike-odl-ha.openstack + - cluster.mcp-pike-odl-ha.infra + - cluster.mcp-pike-odl-ha.openstack diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/opendaylight/control.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/opendaylight/control.yml.j2 index 50eb342e5..a5db82387 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/opendaylight/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/opendaylight/control.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,9 +7,11 @@ ############################################################################## --- classes: - - system.opendaylight.server.single - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-odl-ha + - service.opendaylight.server.single + - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport +{%- if conf.MCP_VCP %} + - cluster.mcp-pike-odl-ha +{%- endif %} parameters: _param: linux_system_codename: xenial @@ -17,14 +19,12 @@ parameters: server: odl_bind_ip: ${_param:single_address} odl_rest_port: 8282 - java_min_mem: 4g - java_max_mem: 4g + java_min_mem: 6g + java_max_mem: 6g router_enabled: true karaf_features: odl_default: - odl-restconf-all - odl-aaa-authn - - odl-dlux-all - - odl-mdsal-apidocs netvirt: - odl-netvirt-openstack diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute.yml new file mode 100644 index 000000000..6c3e0d04c --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute.yml @@ -0,0 +1,17 @@ +############################################################################## +# 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: + - service.neutron.gateway.opendaylight.single + - cluster.mcp-pike-common-ha.openstack_compute + - cluster.mcp-pike-odl-ha.openstack.compute_pdf + - cluster.mcp-pike-odl-ha.infra +parameters: + neutron: + gateway: + agent_mode: ${_param:neutron_gateway_agent_mode} diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 new file mode 100644 index 000000000..912537f8f --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/compute_pdf.yml.j2 @@ -0,0 +1,49 @@ +############################################################################## +# 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 %} +{#- 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.rsplit('-')[0] %} +{%- set vlans = { vlan_private_start: nm.cmp001.nic_private } %} +--- +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 %} + + br-mesh: + enabled: true + type: bridge + address: ${_param:tenant_address} + netmask: 255.255.255.0 + mtu: 1500 + use_interfaces: + - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/control.yml index 2cbb8cae9..e907e3d4c 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,11 +8,14 @@ --- classes: - system.neutron.control.opendaylight.cluster - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_control - - cluster.baremetal-mcp-pike-odl-ha.infra + - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_control + - cluster.mcp-pike-odl-ha.infra parameters: - neutron: + keystone: server: - backend: - router: ${_param:opendaylight_router} + openrc_extra: + # For HA, all public services are available through nginx on prx + sdn_controller_ip: ${_param:cluster_public_host} + sdn_username: admin # Hardcoded to default ODL values for now + sdn_password: admin diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/database.yml new file mode 100644 index 000000000..69cb24dbf --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/database.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_database + - cluster.mcp-pike-odl-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/init.yml.j2 index 0859dc9f0..5a3b36fb1 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/init.yml.j2 @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,21 +7,14 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_init + - cluster.mcp-pike-common-ha.openstack_init parameters: _param: # opendaylight options - opendaylight_server_node01_single_address: ${_param:opnfv_opendaylight_server_node01_single_address} opendaylight_service_host: ${_param:opendaylight_server_node01_single_address} - opendaylight_server_node01_hostname: odl01 - opendaylight_router: odl-router_v2 neutron_tenant_network_types: "flat,vxlan" - nova_cpu_pinning: "1,2,3,4,5,7,8,9,10,11" - compute_hugepages_size: 1G - compute_hugepages_count: 16 - compute_hugepages_mount: /mnt/hugepages_1G - compute_kernel_isolcpu: ${_param:nova_cpu_pinning} +{%- if conf.MCP_VCP %} linux: network: host: @@ -30,3 +23,4 @@ parameters: names: - ${_param:opendaylight_server_node01_hostname} - ${_param:opendaylight_server_node01_hostname}.${_param:cluster_domain} +{%- endif %} diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/message_queue.yml new file mode 100644 index 000000000..604728da1 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/message_queue.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_message_queue + - cluster.mcp-pike-odl-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/proxy.yml index 023ffd484..3c6b3a2cf 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/proxy.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/proxy.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,25 +7,13 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_triport - - cluster.baremetal-mcp-pike-common-ha.openstack_proxy - - cluster.baremetal-mcp-pike-odl-ha.infra + - cluster.mcp-pike-common-ha.openstack_interface_vcp_triport + - cluster.mcp-pike-common-ha.openstack_proxy + - cluster.mcp-pike-odl-ha.infra.init_vcp parameters: nginx: server: site: - nginx_proxy_opendaylight_web: - enabled: true - type: nginx_proxy - name: opendaylight_web - check: false - proxy: - host: ${_param:opendaylight_service_host} - port: 8181 - protocol: http - host: - name: ${_param:nginx_proxy_openstack_api_host} - port: 8181 nginx_proxy_opendaylight_rest: enabled: true type: nginx_proxy diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/telemetry.yml new file mode 100644 index 000000000..20df2aab6 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-ha/openstack/telemetry.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_telemetry + - cluster.mcp-pike-odl-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/infra/config.yml index 8e38ff81d..b63ac68b5 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -9,8 +9,9 @@ classes: - system.reclass.storage.system.opendaylight_control_single - system.reclass.storage.system.openstack_gateway_single - - cluster.virtual-mcp-pike-common-noha.infra.config - - cluster.virtual-mcp-pike-odl-noha + - cluster.mcp-pike-common-noha.infra.config + - cluster.mcp-pike-odl-noha + - cluster.all-mcp-arch-common.infra.config_pdf parameters: reclass: storage: @@ -23,5 +24,5 @@ parameters: single_address: ${_param:opendaylight_service_host} openstack_gateway_node01: params: - tenant_address: 10.1.0.110 - external_address: 10.16.0.110 + tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address} + external_address: ${_param:opnfv_openstack_gateway_node01_external_address} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/infra/init.yml index 2cf01eeec..1bdcbd225 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/infra/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,8 +7,8 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.infra + - cluster.mcp-pike-common-noha.infra parameters: _param: - cluster_name: virtual-mcp-pike-odl-noha + cluster_name: mcp-pike-odl-noha diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/init.yml index 7575d89b8..d770e7895 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,11 +8,10 @@ --- classes: - system.linux.system.single - - cluster.all-mcp-arch-common - - cluster.virtual-mcp-pike-common-noha.init_options - - cluster.virtual-mcp-pike-odl-noha.infra - - cluster.virtual-mcp-pike-odl-noha.openstack + - cluster.mcp-pike-common-noha.init_options + - cluster.mcp-pike-odl-noha.infra + - cluster.mcp-pike-odl-noha.openstack parameters: _param: - opendaylight_service_host: 172.16.10.111 + opendaylight_service_host: ${_param:opnfv_opendaylight_server_node01_single_address} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/opendaylight/control.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control.yml index f4404a69b..8854fc2bf 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/opendaylight/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -9,21 +9,12 @@ classes: - system.linux.system.repo.mcp.openstack - system.linux.system.repo.mcp.extra - - system.opendaylight.server.single - - cluster.virtual-mcp-pike-odl-noha + - service.opendaylight.server.single + - cluster.mcp-pike-odl-noha + - cluster.mcp-pike-odl-noha.opendaylight.control_pdf parameters: _param: linux_system_codename: xenial - linux: - network: - interface: - single_int: - enabled: true - name: ${_param:opnfv_fn_vm_secondary_interface} - type: eth - proto: static - address: ${_param:single_address} - netmask: 255.255.255.0 opendaylight: server: odl_bind_ip: ${_param:single_address} @@ -35,7 +26,5 @@ parameters: odl_default: - odl-restconf-all - odl-aaa-authn - - odl-dlux-all - - odl-mdsal-apidocs netvirt: - odl-netvirt-openstack diff --git a/mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control_pdf.yml.j2 new file mode 100644 index 000000000..fbb7de8b3 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/opendaylight/control_pdf.yml.j2 @@ -0,0 +1,25 @@ +############################################################################## +# 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: + linux: + network: + interface: + dhcp_int: + enabled: true + name: {{ nm.ctl01.nic_admin }} + proto: dhcp + type: eth + single_int: + enabled: true + name: {{ nm.ctl01.nic_mgmt }} + type: eth + proto: static + address: ${_param:single_address} + netmask: 255.255.255.0 diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/compute.yml index 4c42b585b..b0690167f 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/compute.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,32 +8,25 @@ --- classes: - service.neutron.compute.single - - cluster.virtual-mcp-pike-common-noha.openstack_compute - - cluster.virtual-mcp-pike-odl-noha + - service.neutron.compute.opendaylight.single + - cluster.mcp-pike-common-noha.openstack_compute + - cluster.mcp-pike-odl-noha parameters: - opendaylight: - client: - ovsdb_server_iface: ptcp:6639:127.0.0.1 - ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640 - tunnel_ip: ${_param:tenant_address} - provider_mappings: physnet1:br-floating linux: network: - gateway: ${_param:openstack_gateway_address} interface: external_interface: enabled: true + type: eth name: ${_param:external_interface} mtu: ${_param:interface_mtu} proto: manual - type: eth br-mesh: enabled: true type: bridge proto: static address: ${_param:tenant_address} netmask: 255.255.255.0 - gateway: 10.1.0.110 use_interfaces: - ${_param:tenant_interface} br-floating: @@ -50,7 +43,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/virtual-mcp-pike-odl-noha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/control.yml index ede9d4c5d..4c48d0798 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,27 +8,12 @@ --- classes: - system.neutron.control.opendaylight.single - - cluster.virtual-mcp-pike-common-noha.openstack_control - - cluster.virtual-mcp-pike-odl-noha + - cluster.mcp-pike-common-noha.openstack_control + - cluster.mcp-pike-odl-noha parameters: - neutron: - server: - backend: - router: ${_param:opendaylight_router} haproxy: proxy: listen: - opendaylight-web: - type: general-service - service_name: opendaylight - binds: - - address: ${_param:cluster_vip_address} - port: 8181 - servers: - - name: odl01 - host: ${_param:opendaylight_service_host} - port: 8181 - params: ${_param:haproxy_check} opendaylight-rest: type: general-service service_name: opendaylight @@ -40,3 +25,10 @@ parameters: host: ${_param:opendaylight_service_host} port: 8282 params: ${_param:haproxy_check} + keystone: + server: + openrc_extra: + # For noHA, all public services are available through haproxy on ctl + sdn_controller_ip: ${_param:cluster_vip_address} + sdn_username: admin # Hardcoded to default ODL values for now + sdn_password: admin diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/gateway.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/gateway.yml index 47d11cd5d..f4f646160 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/gateway.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/gateway.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,26 +7,10 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.openstack_gateway - - system.neutron.gateway.opendaylight.single - - cluster.virtual-mcp-pike-odl-noha + - cluster.mcp-pike-common-noha.openstack_gateway + - service.neutron.gateway.opendaylight.single + - cluster.mcp-pike-odl-noha parameters: - _param: - neutron_agents: - - neutron-dhcp-agent - - neutron-metadata-agent - neutron: - gateway: - pkgs: ${_param:neutron_agents} - services: ${_param:neutron_agents} - backend: - router: ${_param:opendaylight_router} - opendaylight: - client: - ovsdb_server_iface: ptcp:6639:127.0.0.1 - ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640 - tunnel_ip: ${_param:tenant_address} - provider_mappings: physnet1:br-floating linux: network: interface: diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/init.yml index cbf4e692e..2cd3083ff 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-odl-noha/openstack/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,7 +7,7 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.openstack_init + - cluster.mcp-pike-common-noha.openstack_init parameters: _param: neutron_tenant_network_types: "flat,vxlan" @@ -16,7 +16,7 @@ parameters: network: host: odl01: - address: 172.16.10.111 + address: ${_param:opnfv_opendaylight_server_node01_single_address} names: - odl01 - odl01.${_param:cluster_domain} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/config.yml index 1a55d7807..ca7491a02 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,5 +7,6 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.infra.config - - cluster.baremetal-mcp-pike-ovs-ha.infra + - cluster.mcp-pike-common-ha.infra.config + - cluster.mcp-pike-ovn-ha.infra + - cluster.all-mcp-arch-common.infra.config_pdf diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init.yml new file mode 100644 index 000000000..5c7438ab4 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init.yml @@ -0,0 +1,14 @@ +############################################################################## +# 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.mcp-pike-common-ha.infra + - cluster.mcp-pike-ovn-ha.openstack +parameters: + _param: + cluster_name: mcp-pike-ovn-ha diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init_vcp.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init_vcp.yml.j2 new file mode 100644 index 000000000..46acb7d2d --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/init_vcp.yml.j2 @@ -0,0 +1,12 @@ +############################################################################## +# 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 +############################################################################## +--- +{%- if conf.MCP_VCP %} +classes: + - cluster.mcp-pike-ovn-ha.infra +{%- endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/kvm.yml.j2 index dfe1e28ca..4a2355bf1 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/openstack/message_queue.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/kvm.yml.j2 @@ -1,12 +1,14 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{%- if conf.MCP_VCP %} +# NOTE(armband): we don't want to pull in salt.control for novcp classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_message_queue - - cluster.baremetal-mcp-pike-odl-ha + - cluster.mcp-pike-common-ha.infra.kvm + - cluster.mcp-pike-ovn-ha.infra +{%- endif %} diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/maas.yml new file mode 100644 index 000000000..398768e08 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/infra/maas.yml @@ -0,0 +1,11 @@ +############################################################################## +# 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.mcp-pike-common-ha.infra.maas + - cluster.mcp-pike-ovn-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/init.yml index 12a3ea211..69e8033c1 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,5 +8,5 @@ --- classes: - cluster.all-mcp-arch-common - - cluster.baremetal-mcp-pike-ovs-ha.infra - - cluster.baremetal-mcp-pike-ovs-ha.openstack + - cluster.mcp-pike-ovn-ha.infra + - cluster.mcp-pike-ovn-ha.openstack diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute.yml index 5914f50be..36073827a 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,9 +7,9 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_compute - - cluster.baremetal-mcp-pike-ovs-ha.openstack.compute_pdf - - cluster.baremetal-mcp-pike-ovs-ha.infra + - cluster.mcp-pike-common-ha.openstack_compute + - cluster.mcp-pike-ovn-ha.openstack.compute_pdf + - cluster.mcp-pike-ovn-ha.infra parameters: nova: compute: diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute_pdf.yml.j2 new file mode 100644 index 000000000..912537f8f --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/compute_pdf.yml.j2 @@ -0,0 +1,49 @@ +############################################################################## +# 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 %} +{#- 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.rsplit('-')[0] %} +{%- set vlans = { vlan_private_start: nm.cmp001.nic_private } %} +--- +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 %} + + br-mesh: + enabled: true + type: bridge + address: ${_param:tenant_address} + netmask: 255.255.255.0 + mtu: 1500 + use_interfaces: + - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/control.yml index 43bec6bcc..96ea48ea2 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,6 +8,6 @@ --- classes: - system.neutron.control.openvswitch.cluster - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_control - - cluster.baremetal-mcp-pike-ovs-ha.infra + - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_control + - cluster.mcp-pike-ovn-ha.infra diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/database.yml new file mode 100644 index 000000000..2ed79ab3b --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/database.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_database + - cluster.mcp-pike-ovn-ha.infra_vcp diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/init.yml index 19126f89d..02cd14adb 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,7 +7,7 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.openstack_init + - cluster.mcp-pike-common-ha.openstack_init parameters: _param: neutron_tenant_network_types: "flat,vxlan" diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/message_queue.yml new file mode 100644 index 000000000..db587ac94 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/message_queue.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_message_queue + - cluster.mcp-pike-ovn-ha.infra_vcp diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/proxy.yml index f58e632c7..49fec8246 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/maas.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/proxy.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,5 +7,6 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.infra.maas - - cluster.baremetal-mcp-pike-odl-ha.infra + - cluster.mcp-pike-common-ha.openstack_interface_vcp_triport + - cluster.mcp-pike-common-ha.openstack_proxy + - cluster.mcp-pike-ovn-ha.infra_vcp diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/telemetry.yml new file mode 100644 index 000000000..4b9d9acc2 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-ha/openstack/telemetry.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_telemetry + - cluster.mcp-pike-ovn-ha.infra_vcp diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/infra/config.yml index 4d0a77241..399ffc21a 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,5 +7,5 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.infra.config - - cluster.virtual-mcp-pike-ovn-noha + - cluster.mcp-pike-common-noha.infra.config + - cluster.mcp-pike-ovn-noha diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/infra/init.yml index 5a79adddf..cf43fa8e3 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/infra/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,8 +7,8 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.infra + - cluster.mcp-pike-common-noha.infra parameters: _param: - cluster_name: virtual-mcp-pike-ovn-noha + cluster_name: mcp-pike-ovn-noha diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/init.yml new file mode 100644 index 000000000..b3aa40415 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/init.yml @@ -0,0 +1,13 @@ +############################################################################## +# 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.linux.system.single + - cluster.mcp-pike-common-noha.init_options + - cluster.mcp-pike-ovn-noha.infra + - cluster.mcp-pike-ovn-noha.openstack diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/compute.yml index a08c65217..ad8658518 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/compute.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,9 +8,12 @@ --- classes: - service.neutron.compute.ovn.single - - cluster.virtual-mcp-pike-common-noha.openstack_compute - - cluster.virtual-mcp-pike-ovn-noha + - cluster.mcp-pike-common-noha.openstack_compute + - cluster.mcp-pike-ovn-noha parameters: + neutron: + compute: + controller_vip: ${_param:cluster_local_address} linux: network: interface: diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/control.yml index 59c000746..3d120ca9f 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/openstack/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,5 +8,5 @@ --- classes: - system.neutron.control.ovn.single - - cluster.virtual-mcp-pike-common-noha.openstack_control - - cluster.virtual-mcp-pike-ovn-noha + - cluster.mcp-pike-common-noha.openstack_control + - cluster.mcp-pike-ovn-noha diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/init.yml new file mode 100644 index 000000000..03d46ef91 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovn-noha/openstack/init.yml @@ -0,0 +1,10 @@ +############################################################################## +# 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.mcp-pike-common-noha.openstack_init diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/config.yml new file mode 100644 index 000000000..0b0632609 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/config.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.infra.config + - cluster.mcp-pike-ovs-dpdk-ha.infra + - cluster.all-mcp-arch-common.infra.config_dpdk_pdf diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init.yml index e3dd53629..5b49f2572 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,11 +7,11 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.infra - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.openstack + - cluster.mcp-pike-common-ha.infra + - cluster.mcp-pike-ovs-dpdk-ha.openstack parameters: _param: - cluster_name: baremetal-mcp-pike-ovs-dpdk-ha + cluster_name: mcp-pike-ovs-dpdk-ha linux: system: service: diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml.j2 new file mode 100644 index 000000000..9e85995bc --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/init_vcp.yml.j2 @@ -0,0 +1,12 @@ +############################################################################## +# 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 +############################################################################## +--- +{%- if conf.MCP_VCP %} +classes: + - cluster.mcp-pike-ovs-dpdk-ha.infra +{%- endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/kvm.yml.j2 index ad9336faa..b62118d4a 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/kvm.yml.j2 @@ -1,12 +1,14 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{%- if conf.MCP_VCP %} +# NOTE(armband): we don't want to pull in salt.control for novcp classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_message_queue - - cluster.baremetal-mcp-pike-ovs-dpdk-ha + - cluster.mcp-pike-common-ha.infra.kvm + - cluster.mcp-pike-ovs-dpdk-ha.infra +{%- endif %} diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/maas.yml new file mode 100644 index 000000000..f472885e2 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/infra/maas.yml @@ -0,0 +1,11 @@ +############################################################################## +# 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.mcp-pike-common-ha.infra.maas + - cluster.mcp-pike-ovs-dpdk-ha.infra diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/init.yml index ab450e045..07ad6734c 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,5 +8,5 @@ --- classes: - cluster.all-mcp-arch-common - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.openstack + - cluster.mcp-pike-ovs-dpdk-ha.infra + - cluster.mcp-pike-ovs-dpdk-ha.openstack diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute.yml new file mode 100644 index 000000000..d121c0807 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute.yml @@ -0,0 +1,28 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_compute + - cluster.mcp-pike-ovs-dpdk-ha.infra + - cluster.mcp-pike-ovs-dpdk-ha.openstack.compute_pdf + - system.neutron.compute.nfv.dpdk +parameters: + neutron: + gateway: + dpdk: 'True' + vhost_socket_dir: ${_param:compute_ovs_vhost_socket_dir} + backend: + tenant_vlan_range: ${_param:neutron_tenant_vlan_range} + nova: + compute: + libvirt_service: libvirtd + libvirt_bin: /etc/default/libvirtd + linux: + system: + kernel: + isolcpu: ${_param:compute_kernel_isolcpu} diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute_pdf.yml.j2 new file mode 100644 index 000000000..cf9a0b302 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/compute_pdf.yml.j2 @@ -0,0 +1,27 @@ +############################################################################## +# 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: + linux: + network: + ovs_nowait: true + interface: + dpdk0: + name: ${_param:dpdk0_name} + pci: ${_param:dpdk0_pci} + driver: ${_param:dpdk0_driver} + enabled: true + bridge: br-prv + type: dpdk_ovs_port + n_rxq: ${_param:dpdk0_n_rxq} + br-prv: + enabled: true + type: dpdk_ovs_bridge + br-floating: + datapath_type: netdev diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/control.yml index 82db9be87..e0423c33b 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/openstack/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,9 +8,9 @@ --- classes: - system.neutron.control.openvswitch.cluster - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_control - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra + - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_control + - cluster.mcp-pike-ovs-dpdk-ha.infra parameters: neutron: server: diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/database.yml new file mode 100644 index 000000000..324ec3f84 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/database.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_database + - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/init.yml index 2f62c0165..1f8ff4b9e 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,8 +7,8 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.infra - - cluster.baremetal-mcp-pike-ovs-ha.openstack + - cluster.mcp-pike-common-ha.openstack_init parameters: _param: - cluster_name: baremetal-mcp-pike-ovs-ha + neutron_tenant_network_types: "flat,vlan" + neutron_tenant_vlan_range: ${_param:opnfv_net_tenant_vlan} diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml new file mode 100644 index 000000000..f15e4310a --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/message_queue.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_message_queue + - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/proxy.yml new file mode 100644 index 000000000..09eda53c0 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/proxy.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_triport + - cluster.mcp-pike-common-ha.openstack_proxy + - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml index 014c57ffa..68d437864 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-odl-ha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-ha/openstack/telemetry.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,8 +7,6 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.infra - - cluster.baremetal-mcp-pike-odl-ha.openstack -parameters: - _param: - cluster_name: baremetal-mcp-pike-odl-ha + - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_telemetry + - cluster.mcp-pike-ovs-dpdk-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/infra/config.yml index e80c442ef..baf072fd8 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,21 +8,14 @@ --- classes: - system.reclass.storage.system.openstack_gateway_single - - cluster.virtual-mcp-pike-common-noha.infra.config - - cluster.virtual-mcp-pike-ovs-dpdk-noha + - cluster.mcp-pike-common-noha.infra.config + - cluster.mcp-pike-ovs-dpdk-noha + - cluster.all-mcp-arch-common.infra.config_dpdk_pdf parameters: reclass: storage: node: - openstack_compute_node01: - params: - dpdk0_name: ${_param:opnfv_fn_vm_tertiary_interface} - dpdk0_pci: '"0000:00:05.0"' - openstack_compute_node02: - params: - dpdk0_name: ${_param:opnfv_fn_vm_tertiary_interface} - dpdk0_pci: '"0000:00:05.0"' openstack_gateway_node01: params: - tenant_address: 10.1.0.110 - external_address: 10.16.0.110 + tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address} + external_address: ${_param:opnfv_openstack_gateway_node01_external_address} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/infra/init.yml index 0f21b9161..d8cb01596 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/infra/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/infra/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,8 +7,8 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.infra + - cluster.mcp-pike-common-noha.infra parameters: _param: - cluster_name: virtual-mcp-pike-ovs-noha + cluster_name: mcp-pike-ovs-dpdk-noha diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/init.yml index 0fd6fa790..8d3a7a588 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovn-noha/init.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/init.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,7 +8,6 @@ --- classes: - system.linux.system.single - - cluster.all-mcp-arch-common - - cluster.virtual-mcp-pike-common-noha.init_options - - cluster.virtual-mcp-pike-ovn-noha.infra - - cluster.virtual-mcp-pike-ovn-noha.openstack + - cluster.mcp-pike-common-noha.init_options + - cluster.mcp-pike-ovs-dpdk-noha.infra + - cluster.mcp-pike-ovs-dpdk-noha.openstack diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/compute.yml index c59cdaade..53ba74592 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/compute.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -10,8 +10,8 @@ classes: - system.nova.compute.nfv.hugepages - system.neutron.compute.nfv.dpdk - service.neutron.compute.single - - cluster.virtual-mcp-pike-common-noha.openstack_compute - - cluster.virtual-mcp-pike-ovs-dpdk-noha + - cluster.mcp-pike-common-noha.openstack_compute + - cluster.mcp-pike-ovs-dpdk-noha parameters: neutron: compute: @@ -23,11 +23,13 @@ parameters: dpdk0: name: ${_param:dpdk0_name} pci: ${_param:dpdk0_pci} - driver: igb_uio + driver: ${_param:dpdk0_driver} enabled: true bridge: br-prv type: dpdk_ovs_port - n_rxq: 2 + n_rxq: ${_param:dpdk0_n_rxq} br-prv: enabled: true type: dpdk_ovs_bridge + tenant_interface: + type: dpdk # Not a meaningful type, just match 'dpdk' for filtering diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/control.yml index 4dbaae829..4be308d0e 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,10 +8,10 @@ --- classes: - system.neutron.control.openvswitch.single - - cluster.virtual-mcp-pike-common-noha.openstack_control - - cluster.virtual-mcp-pike-ovs-dpdk-noha + - cluster.mcp-pike-common-noha.openstack_control + - cluster.mcp-pike-ovs-dpdk-noha parameters: neutron: server: backend: - tenant_vlan_range: 1000:1999 + tenant_vlan_range: ${_param:opnfv_net_tenant_vlan} diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/gateway.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/gateway.yml index ec943a857..e7c077528 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/gateway.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/gateway.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,9 +7,9 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.openstack_gateway + - cluster.mcp-pike-common-noha.openstack_gateway - service.neutron.gateway.single - - cluster.virtual-mcp-pike-ovs-dpdk-noha + - cluster.mcp-pike-ovs-dpdk-noha parameters: neutron: gateway: diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/init.yml new file mode 100644 index 000000000..9ef4b1b31 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-dpdk-noha/openstack/init.yml @@ -0,0 +1,13 @@ +############################################################################## +# 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.mcp-pike-common-noha.openstack_init +parameters: + _param: + neutron_tenant_network_types: "flat,vlan" diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/kvm.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/config.yml index bb2087d70..cab196d12 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-dpdk-ha/infra/kvm.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,5 +7,6 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-common-ha.infra.kvm - - cluster.baremetal-mcp-pike-ovs-dpdk-ha.infra + - cluster.mcp-pike-common-ha.infra.config + - cluster.mcp-pike-ovs-ha.infra + - cluster.all-mcp-arch-common.infra.config_pdf diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init.yml new file mode 100644 index 000000000..c0c873c00 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init.yml @@ -0,0 +1,14 @@ +############################################################################## +# 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.mcp-pike-common-ha.infra + - cluster.mcp-pike-ovs-ha.openstack +parameters: + _param: + cluster_name: mcp-pike-ovs-ha diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init_vcp.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init_vcp.yml.j2 new file mode 100644 index 000000000..74023ce14 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/init_vcp.yml.j2 @@ -0,0 +1,12 @@ +############################################################################## +# 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 +############################################################################## +--- +{%- if conf.MCP_VCP %} +classes: + - cluster.mcp-pike-ovs-ha.infra +{%- endif %} diff --git a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/kvm.yml.j2 index 745fd6fd8..0d49e5d10 100644 --- a/mcp/reclass/classes/cluster/baremetal-mcp-pike-ovs-ha/openstack/message_queue.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/kvm.yml.j2 @@ -1,12 +1,14 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 ############################################################################## --- +{%- if conf.MCP_VCP %} +# NOTE(armband): we don't want to pull in salt.control for novcp classes: - - cluster.baremetal-mcp-pike-common-ha.openstack_interface_vcp_biport - - cluster.baremetal-mcp-pike-common-ha.openstack_message_queue - - cluster.baremetal-mcp-pike-ovs-ha + - cluster.mcp-pike-common-ha.infra.kvm + - cluster.mcp-pike-ovs-ha.infra +{%- endif %} diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/maas.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/maas.yml new file mode 100644 index 000000000..d0aabd90f --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/infra/maas.yml @@ -0,0 +1,11 @@ +############################################################################## +# 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.mcp-pike-common-ha.infra.maas + - cluster.mcp-pike-ovs-ha.infra diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/init.yml new file mode 100644 index 000000000..a603c8450 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/init.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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 + - cluster.mcp-pike-ovs-ha.infra + - cluster.mcp-pike-ovs-ha.openstack diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute.yml new file mode 100644 index 000000000..fa815e8be --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute.yml @@ -0,0 +1,17 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_compute + - cluster.mcp-pike-ovs-ha.openstack.compute_pdf + - cluster.mcp-pike-ovs-ha.infra +parameters: + nova: + compute: + libvirt_service: libvirtd + libvirt_bin: /etc/default/libvirtd diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 new file mode 100644 index 000000000..912537f8f --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/compute_pdf.yml.j2 @@ -0,0 +1,49 @@ +############################################################################## +# 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 %} +{#- 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.rsplit('-')[0] %} +{%- set vlans = { vlan_private_start: nm.cmp001.nic_private } %} +--- +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 %} + + br-mesh: + enabled: true + type: bridge + address: ${_param:tenant_address} + netmask: 255.255.255.0 + mtu: 1500 + use_interfaces: + - {{ nm.cmp001.nic_private }}{% if vlan_private_start | int > 0 %}.{{ vlan_private_start }}{% endif %} diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/control.yml new file mode 100644 index 000000000..a70a8a07f --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/control.yml @@ -0,0 +1,13 @@ +############################################################################## +# 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.neutron.control.openvswitch.cluster + - cluster.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_control + - cluster.mcp-pike-ovs-ha.infra diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/database.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/database.yml new file mode 100644 index 000000000..33c86e8c1 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/database.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_database + - cluster.mcp-pike-ovs-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/init.yml new file mode 100644 index 000000000..02cd14adb --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/init.yml @@ -0,0 +1,13 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_init +parameters: + _param: + neutron_tenant_network_types: "flat,vxlan" diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/message_queue.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/message_queue.yml new file mode 100644 index 000000000..629b2794b --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/message_queue.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_message_queue + - cluster.mcp-pike-ovs-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/proxy.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/proxy.yml new file mode 100644 index 000000000..3698965f6 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/proxy.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_triport + - cluster.mcp-pike-common-ha.openstack_proxy + - cluster.mcp-pike-ovs-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/telemetry.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/telemetry.yml new file mode 100644 index 000000000..26341ea7b --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-ha/openstack/telemetry.yml @@ -0,0 +1,12 @@ +############################################################################## +# 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.mcp-pike-common-ha.openstack_interface_vcp_biport + - cluster.mcp-pike-common-ha.openstack_telemetry + - cluster.mcp-pike-ovs-ha.infra.init_vcp diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/infra/config.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/infra/config.yml index 66c246859..4f7428207 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/infra/config.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/infra/config.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,13 +8,14 @@ --- classes: - system.reclass.storage.system.openstack_gateway_single - - cluster.virtual-mcp-pike-common-noha.infra.config - - cluster.virtual-mcp-pike-ovs-noha + - cluster.mcp-pike-common-noha.infra.config + - cluster.mcp-pike-ovs-noha + - cluster.all-mcp-arch-common.infra.config_pdf parameters: reclass: storage: node: openstack_gateway_node01: params: - tenant_address: 10.1.0.110 - external_address: 10.16.0.110 + tenant_address: ${_param:opnfv_openstack_gateway_node01_tenant_address} + external_address: ${_param:opnfv_openstack_gateway_node01_external_address} diff --git a/mcp/config/states/networking_gw b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/infra/init.yml index ea7c87b01..54b50d2a8 100755..100644 --- a/mcp/config/states/networking_gw +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/infra/init.yml @@ -1,4 +1,3 @@ -#!/bin/bash -e ############################################################################## # Copyright (c) 2018 Mirantis Inc., Enea AB and others. # All rights reserved. This program and the accompanying materials @@ -6,7 +5,10 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## +--- +classes: + - cluster.mcp-pike-common-noha.infra -CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x - -salt -I 'neutron:gateway' cmd.run 'ifup --force --ignore-errors br-ex' +parameters: + _param: + cluster_name: mcp-pike-ovs-noha diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/init.yml new file mode 100644 index 000000000..94267fad4 --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/init.yml @@ -0,0 +1,13 @@ +############################################################################## +# 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.linux.system.single + - cluster.mcp-pike-common-noha.init_options + - cluster.mcp-pike-ovs-noha.infra + - cluster.mcp-pike-ovs-noha.openstack diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/compute.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/compute.yml index 52edf879f..1a8bbd801 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/compute.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/compute.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,8 +8,8 @@ --- classes: - service.neutron.compute.single - - cluster.virtual-mcp-pike-common-noha.openstack_compute - - cluster.virtual-mcp-pike-ovs-noha + - cluster.mcp-pike-common-noha.openstack_compute + - cluster.mcp-pike-ovs-noha parameters: linux: network: diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/control.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/control.yml index 4e03c4b7e..9b699b6b1 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/control.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/control.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,5 +8,5 @@ --- classes: - system.neutron.control.openvswitch.single - - cluster.virtual-mcp-pike-common-noha.openstack_control - - cluster.virtual-mcp-pike-ovs-noha + - cluster.mcp-pike-common-noha.openstack_control + - cluster.mcp-pike-ovs-noha diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/gateway.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/gateway.yml index 0eec95cc4..ff0b79a1f 100644 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/openstack/gateway.yml +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/gateway.yml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -7,9 +7,9 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-common-noha.openstack_gateway + - cluster.mcp-pike-common-noha.openstack_gateway - service.neutron.gateway.single - - cluster.virtual-mcp-pike-ovs-noha + - cluster.mcp-pike-ovs-noha parameters: linux: network: diff --git a/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/init.yml b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/init.yml new file mode 100644 index 000000000..e94c4a00d --- /dev/null +++ b/mcp/reclass/classes/cluster/mcp-pike-ovs-noha/openstack/init.yml @@ -0,0 +1,13 @@ +############################################################################## +# 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.mcp-pike-common-noha.openstack_init +parameters: + _param: + neutron_tenant_network_types: "flat,vxlan" diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/init.yml deleted file mode 100644 index 07e3ef2ca..000000000 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/init.yml +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.linux.system.single - - cluster.all-mcp-arch-common - - cluster.virtual-mcp-pike-common-noha.init_options - - cluster.virtual-mcp-pike-ovs-dpdk-noha.infra - - cluster.virtual-mcp-pike-ovs-dpdk-noha.openstack diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/init.yml deleted file mode 100644 index 5445a07ea..000000000 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-dpdk-noha/openstack/init.yml +++ /dev/null @@ -1,21 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.virtual-mcp-pike-common-noha.openstack_init -parameters: - _param: - neutron_tenant_network_types: "flat,vlan" - compute_hugepages_size: 2M - compute_hugepages_count: 2048 - compute_hugepages_mount: /mnt/hugepages_2M - compute_dpdk_driver: uio - compute_ovs_pmd_cpu_mask: "0x6" - compute_ovs_dpdk_socket_mem: "1024" - compute_ovs_dpdk_lcore_mask: "0x8" - compute_ovs_memory_channels: "2" diff --git a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/init.yml deleted file mode 100644 index b29ac95ca..000000000 --- a/mcp/reclass/classes/cluster/virtual-mcp-pike-ovs-noha/init.yml +++ /dev/null @@ -1,14 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.linux.system.single - - cluster.all-mcp-arch-common - - cluster.virtual-mcp-pike-common-noha.init_options - - cluster.virtual-mcp-pike-ovs-noha.infra - - cluster.virtual-mcp-pike-ovs-noha.openstack diff --git a/mcp/reclass/classes/system b/mcp/reclass/classes/system -Subproject 86594f66eb239eda9424b58c96914fdb27e3e7f +Subproject 198b5b7459c9f602ded773e966888705d866f6d diff --git a/mcp/reclass/nodes/cfg01.baremetal-mcp-pike-odl-ha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-odl-ha.local.yml index fb067f038..cbab34b45 100644 --- a/mcp/reclass/nodes/cfg01.baremetal-mcp-pike-odl-ha.local.yml +++ b/mcp/reclass/nodes/cfg01.mcp-pike-odl-ha.local.yml @@ -7,7 +7,7 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-odl-ha.infra.config + - cluster.mcp-pike-odl-ha.infra.config parameters: _param: linux_system_codename: xenial @@ -15,4 +15,4 @@ parameters: linux: system: name: cfg01 - domain: baremetal-mcp-pike-odl-ha.local + domain: mcp-pike-odl-ha.local diff --git a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovn-noha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-odl-noha.local.yml index fb40f6545..a4a21ba6a 100644 --- a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovn-noha.local.yml +++ b/mcp/reclass/nodes/cfg01.mcp-pike-odl-noha.local.yml @@ -7,7 +7,7 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-ovn-noha.infra.config + - cluster.mcp-pike-odl-noha.infra.config parameters: _param: linux_system_codename: xenial @@ -15,4 +15,4 @@ parameters: linux: system: name: cfg01 - domain: virtual-mcp-pike-ovn-noha.local + domain: mcp-pike-odl-noha.local diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovn-ha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovn-ha.local.yml new file mode 100644 index 000000000..2c370db60 --- /dev/null +++ b/mcp/reclass/nodes/cfg01.mcp-pike-ovn-ha.local.yml @@ -0,0 +1,18 @@ +############################################################################## +# 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.mcp-pike-ovn-ha.infra.config +parameters: + _param: + linux_system_codename: xenial + reclass_data_revision: master + linux: + system: + name: cfg01 + domain: mcp-pike-ovn-ha.local diff --git a/mcp/reclass/nodes/cfg01.baremetal-mcp-pike-ovs-ha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovn-noha.local.yml index dc9c8c748..0df357a26 100644 --- a/mcp/reclass/nodes/cfg01.baremetal-mcp-pike-ovs-ha.local.yml +++ b/mcp/reclass/nodes/cfg01.mcp-pike-ovn-noha.local.yml @@ -7,7 +7,7 @@ ############################################################################## --- classes: - - cluster.baremetal-mcp-pike-ovs-ha.infra.config + - cluster.mcp-pike-ovn-noha.infra.config parameters: _param: linux_system_codename: xenial @@ -15,4 +15,4 @@ parameters: linux: system: name: cfg01 - domain: baremetal-mcp-pike-ovs-ha.local + domain: mcp-pike-ovn-noha.local diff --git a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-odl-noha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-ha.local.yml index 8828a9312..c31233bb5 100644 --- a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-odl-noha.local.yml +++ b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-ha.local.yml @@ -7,7 +7,7 @@ ############################################################################## --- classes: - - cluster.virtual-mcp-pike-odl-noha.infra.config + - cluster.mcp-pike-ovs-dpdk-ha.infra.config parameters: _param: linux_system_codename: xenial @@ -15,4 +15,4 @@ parameters: linux: system: name: cfg01 - domain: virtual-mcp-pike-odl-noha.local + domain: mcp-pike-ovs-dpdk-ha.local diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-noha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-noha.local.yml new file mode 100644 index 000000000..394a9f6b6 --- /dev/null +++ b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-dpdk-noha.local.yml @@ -0,0 +1,18 @@ +############################################################################## +# Copyright (c) 2017 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.mcp-pike-ovs-dpdk-noha.infra.config +parameters: + _param: + linux_system_codename: xenial + reclass_data_revision: master + linux: + system: + name: cfg01 + domain: mcp-pike-ovs-dpdk-noha.local diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovs-ha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-ha.local.yml new file mode 100644 index 000000000..5e3cb0186 --- /dev/null +++ b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-ha.local.yml @@ -0,0 +1,18 @@ +############################################################################## +# 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.mcp-pike-ovs-ha.infra.config +parameters: + _param: + linux_system_codename: xenial + reclass_data_revision: master + linux: + system: + name: cfg01 + domain: mcp-pike-ovs-ha.local diff --git a/mcp/reclass/nodes/cfg01.mcp-pike-ovs-noha.local.yml b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-noha.local.yml new file mode 100644 index 000000000..793e7c0d4 --- /dev/null +++ b/mcp/reclass/nodes/cfg01.mcp-pike-ovs-noha.local.yml @@ -0,0 +1,18 @@ +############################################################################## +# Copyright (c) 2017 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.mcp-pike-ovs-noha.infra.config +parameters: + _param: + linux_system_codename: xenial + reclass_data_revision: master + linux: + system: + name: cfg01 + domain: mcp-pike-ovs-noha.local diff --git a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-dpdk-noha.local.yml b/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-dpdk-noha.local.yml deleted file mode 100644 index 4c435f873..000000000 --- a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-dpdk-noha.local.yml +++ /dev/null @@ -1,18 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.virtual-mcp-pike-ovs-dpdk-noha.infra.config -parameters: - _param: - linux_system_codename: xenial - reclass_data_revision: master - linux: - system: - name: cfg01 - domain: virtual-mcp-pike-ovs-dpdk-noha.local diff --git a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-noha.local.yml b/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-noha.local.yml deleted file mode 100644 index 7a715cfb8..000000000 --- a/mcp/reclass/nodes/cfg01.virtual-mcp-pike-ovs-noha.local.yml +++ /dev/null @@ -1,18 +0,0 @@ -############################################################################## -# Copyright (c) 2017 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.virtual-mcp-pike-ovs-noha.infra.config -parameters: - _param: - linux_system_codename: xenial - reclass_data_revision: master - linux: - system: - name: cfg01 - domain: virtual-mcp-pike-ovs-noha.local diff --git a/mcp/salt-formulas/maas/machines/delete.sls b/mcp/salt-formulas/maas/machines/delete.sls index dbb625a02..2903f9226 100644 --- a/mcp/salt-formulas/maas/machines/delete.sls +++ b/mcp/salt-formulas/maas/machines/delete.sls @@ -10,6 +10,7 @@ maas_login_admin: cmd.run: - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials" + - unless: 'test -e /var/lib/maas/.maas_credentials' # TODO: implement delete_machine via _modules/maas.py delete_machine: diff --git a/mcp/salt-formulas/maas/machines/mark_broken_fixed.sls b/mcp/salt-formulas/maas/machines/mark_broken_fixed.sls index 17a7df8d8..46691bb09 100644 --- a/mcp/salt-formulas/maas/machines/mark_broken_fixed.sls +++ b/mcp/salt-formulas/maas/machines/mark_broken_fixed.sls @@ -10,10 +10,11 @@ maas_login_admin: cmd.run: - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials" + - unless: 'test -e /var/lib/maas/.maas_credentials' # TODO: implement mark_broken_fixed_machine via _modules/maas.py mark_broken_fixed_machine: cmd.run: - - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine mark-broken {{ pillar['system_id'] }} && sleep 10 && maas opnfv machine mark-fixed {{ pillar['system_id'] }}" + - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine mark-broken {{ pillar['system_id'] }} && sleep 10 && maas opnfv machine mark-fixed {{ pillar['system_id'] }} && maas opnfv machine test {{ pillar['system_id'] }} testing_scripts=fio" - require: - cmd: maas_login_admin diff --git a/mcp/salt-formulas/maas/machines/override_failed_testing.sls b/mcp/salt-formulas/maas/machines/override_failed_testing.sls new file mode 100644 index 000000000..e7fe1d267 --- /dev/null +++ b/mcp/salt-formulas/maas/machines/override_failed_testing.sls @@ -0,0 +1,20 @@ +############################################################################## +# 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 "maas/map.jinja" import region with context %} + +maas_login_admin: + cmd.run: + - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials" + - unless: 'test -e /var/lib/maas/.maas_credentials' + +# TODO: implement override_failed_testing via _modules/maas.py +mark_broken_fixed_machine: + cmd.run: + - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine override-failed-testing {{ pillar['system_id'] }}" + - require: + - cmd: maas_login_admin diff --git a/mcp/salt-formulas/maas/machines/set_storage_layout.sls b/mcp/salt-formulas/maas/machines/set_storage_layout.sls new file mode 100644 index 000000000..0b7e37153 --- /dev/null +++ b/mcp/salt-formulas/maas/machines/set_storage_layout.sls @@ -0,0 +1,20 @@ +############################################################################## +# 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 "maas/map.jinja" import region with context %} + +maas_login_admin: + cmd.run: + - name: "maas-region apikey --username {{ region.admin.username }} > /var/lib/maas/.maas_credentials" + - unless: 'test -e /var/lib/maas/.maas_credentials' + +# TODO: implement set_storage_layout via _modules/maas.py +set_storage_layout: + cmd.run: + - name: "maas login {{ region.admin.username }} http://{{ region.bind.host }}:5240/MAAS/api/2.0 - < /var/lib/maas/.maas_credentials && maas opnfv machine set-storage-layout {{ pillar['system_id'] }} storage_layout={{ pillar['storage_layout'] | default('lvm') }} lv_size={{ pillar['lv_size'] | default('100%') }}" + - require: + - cmd: maas_login_admin diff --git a/mcp/salt-formulas/maas/pxe_nat.sls b/mcp/salt-formulas/maas/pxe_nat.sls new file mode 100644 index 000000000..701bae07a --- /dev/null +++ b/mcp/salt-formulas/maas/pxe_nat.sls @@ -0,0 +1,37 @@ +############################################################################## +# Copyright (c) 2017 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 +############################################################################## +net.ipv4.ip_forward: + sysctl.present: + - value: 1 + +iptables_pxe_nat: + iptables.append: + - table: nat + - chain: POSTROUTING + - jump: MASQUERADE + - destination: 0/0 + - source: {{ salt['pillar.get']('_param:single_address') }}/24 + - save: True + +iptables_pxe_source: + iptables.append: + - table: filter + - chain: INPUT + - jump: ACCEPT + - destination: 0/0 + - source: {{ salt['pillar.get']('_param:single_address') }}/24 + - save: True + +iptables_pxe_destination: + iptables.append: + - table: filter + - chain: INPUT + - jump: ACCEPT + - destination: {{ salt['pillar.get']('_param:single_address') }}/24 + - source: 0/0 + - save: True diff --git a/mcp/salt-formulas/opendaylight/client.sls b/mcp/salt-formulas/opendaylight/client.sls deleted file mode 100644 index dba51b399..000000000 --- a/mcp/salt-formulas/opendaylight/client.sls +++ /dev/null @@ -1,38 +0,0 @@ -############################################################################## -# Copyright (c) 2017 Mirantis Inc. 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 "opendaylight/map.jinja" import client with context %} -{%- if client.get('enabled', True) %} - -opendaylight_client_packages: - pkg.installed: - - pkgs: {{ client.pkgs }} - -{%- if pillar.linux.network.bridge is defined and pillar.linux.network.bridge == 'openvswitch' %} -ovs_set_manager: - cmd.run: - - name: "ovs-vsctl set-manager {{ client.ovsdb_server_iface }} {{ client.ovsdb_odl_iface }}" - - unless: "ovs-vsctl get-manager | grep -Fx {{ client.ovsdb_odl_iface }}" - -ovs_set_tunnel_endpoint: - cmd.run: - - name: "ovs-vsctl set Open_vSwitch . other_config:local_ip={{ client.tunnel_ip }}" - - unless: "ovs-vsctl get Open_vSwitch . other_config | fgrep local_ip" - - require: - - cmd: ovs_set_manager - -{%- if client.provider_mappings is defined %} -ovs_set_provider_mapping: - cmd.run: - - name: "ovs-vsctl set Open_vSwitch . other_config:provider_mappings={{ client.provider_mappings }}" - - unless: "ovs-vsctl get Open_vSwitch . other_config | fgrep provider_mappings" - - require: - - cmd: ovs_set_manager -{%- endif %} - -{%- endif %} -{%- endif %} diff --git a/mcp/salt-formulas/opendaylight/files/jetty.xml b/mcp/salt-formulas/opendaylight/files/jetty.xml index e6371883a..de2ac677d 100644 --- a/mcp/salt-formulas/opendaylight/files/jetty.xml +++ b/mcp/salt-formulas/opendaylight/files/jetty.xml @@ -84,7 +84,7 @@ DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> <Property name="jetty.host"/> </Set> <Set name="port"> - <Property name="jetty.port" default="8181"/> + <Property name="jetty.port" default="{{ server.odl_rest_port }}"/> </Set> <Set name="idleTimeout"> <Property name="http.timeout" default="300000"/> @@ -94,37 +94,6 @@ DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> </Arg> </Call> - <Call name="addConnector"> - <Arg> - <New class="org.eclipse.jetty.server.ServerConnector"> - <Arg name="server"> - <Ref refid="Server" /> - </Arg> - <Arg name="factories"> - <Array type="org.eclipse.jetty.server.ConnectionFactory"> - <Item> - <New class="org.eclipse.jetty.server.HttpConnectionFactory"> - <Arg name="config"> - <Ref refid="http-legacy" /> - </Arg> - </New> - </Item> - </Array> - </Arg> - <Set name="host">{{ server.odl_bind_ip }} - <Property name="jetty.host"/> - </Set> - <Set name="port"> - <Property name="jetty.port" default="{{ server.odl_rest_port }}"/> - </Set> - <Set name="idleTimeout"> - <Property name="http.timeout" default="300000"/> - </Set>q - <Set name="name">jetty-legacy</Set> - </New> - </Arg> - </Call> - <!-- =========================================================== --> <!-- Configure Authentication Realms --> <!-- Realms may be configured for the entire server here, or --> diff --git a/mcp/salt-formulas/opendaylight/files/setenv.shell b/mcp/salt-formulas/opendaylight/files/setenv.shell index d7dfbd96c..2921ade14 100644 --- a/mcp/salt-formulas/opendaylight/files/setenv.shell +++ b/mcp/salt-formulas/opendaylight/files/setenv.shell @@ -19,4 +19,3 @@ export EXTRA_JAVA_OPTS='{{ server.java_extra_opts }}' # Additional JVM options # export KARAF_OPTS # Additional available Karaf options # export KARAF_DEBUG # Enable debug mode # export KARAF_REDIRECT # Enable/set the std/err redirection when using bin/start - diff --git a/mcp/salt-formulas/opendaylight/map.jinja b/mcp/salt-formulas/opendaylight/map.jinja index 9e9df1dc1..38575111e 100644 --- a/mcp/salt-formulas/opendaylight/map.jinja +++ b/mcp/salt-formulas/opendaylight/map.jinja @@ -11,7 +11,7 @@ 'karaf_features': {'default': ['standard', 'wrap', 'ssh']}, 'odl_rest_port': '8282', 'odl_bind_ip': '0.0.0.0', - 'repo': 'odl-team/nitrogen', + 'repo': 'odl-team/oxygen', 'log_levels': {}, 'enable_ha': false, 'ha_node_ips': [], @@ -26,9 +26,3 @@ 'repo': 'opendaylight-6-testing' }, }, merge=salt['pillar.get']('opendaylight:server')) %} - -{%- set client = salt['grains.filter_by']({ - 'Debian': { - 'pkgs': ['python-networking-odl'], - }, -}, merge=salt['pillar.get']('opendaylight:client')) %} diff --git a/mcp/salt-formulas/opendaylight/server.sls b/mcp/salt-formulas/opendaylight/server.sls index f953cddc0..51a4d9f95 100644 --- a/mcp/salt-formulas/opendaylight/server.sls +++ b/mcp/salt-formulas/opendaylight/server.sls @@ -15,10 +15,10 @@ opendaylight_repo_key: - name: "apt-key adv --keyserver keyserver.ubuntu.com --recv 44C05248" {%- if system.proxy is defined and system.proxy.keyserver is defined %} - env: -{%- if system.proxy.keyserver.http is defined %} +{%- if system.proxy.keyserver.http is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.http %} - http_proxy: {{ system.proxy.keyserver.http }} {%- endif %} -{%- if system.proxy.keyserver.https is defined %} +{%- if system.proxy.keyserver.https is defined and grains['dns']['nameservers'][0] in system.proxy.keyserver.https %} - https_proxy: {{ system.proxy.keyserver.https }} {%- endif %} {%- endif %} @@ -29,8 +29,8 @@ opendaylight_repo: # https://github.com/saltstack/salt/pull/45224 # - ppa: {{ server.repo }} - human_name: opendaylight-ppa - - name: deb http://ppa.launchpad.net/odl-team/nitrogen/ubuntu xenial main - - file: /etc/apt/sources.list.d/odl-team-ubuntu-nitrogen-xenial.list + - name: deb http://ppa.launchpad.net/odl-team/{{ server.version }}/ubuntu xenial main + - file: /etc/apt/sources.list.d/odl-team-ubuntu-{{ server.version }}-xenial.list opendaylight: pkg.installed: @@ -49,6 +49,13 @@ opendaylight: - ini: /opt/opendaylight/etc/org.apache.karaf.features.cfg - ini: /opt/opendaylight/etc/org.ops4j.pax.web.cfg +# TODO: use service.masked state once salt get updated to 2017.7.0+ +service.mask: + module.run: + - m_name: opendaylight + - require_in: + - pkg: opendaylight + /opt/opendaylight/etc/jetty.xml: file.managed: - source: salt://opendaylight/files/jetty.xml @@ -78,6 +85,7 @@ opendaylight: ini.options_present: - sections: org.ops4j.pax.web.listening.addresses: {{ server.odl_bind_ip }} + org.osgi.service.http.port: {{ server.odl_rest_port }} {%- if server.get('router_enabled', false) %} /opt/opendaylight/etc/custom.properties: diff --git a/mcp/salt-formulas/opnfv/route_wrapper.sls b/mcp/salt-formulas/opnfv/route_wrapper.sls new file mode 100644 index 000000000..6132f317e --- /dev/null +++ b/mcp/salt-formulas/opnfv/route_wrapper.sls @@ -0,0 +1,27 @@ +############################################################################## +# 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 +############################################################################## +/usr/local/sbin/route: + file.managed: + - contents: | + #!/bin/sh + + # Workaround salt-managed routes breaking ifup when route already exists + route_binary='/sbin/route' + route_output=$("${route_binary}" "$@" 2>&1) + route_return=$? + + if [ -n "${route_output}" ]; then + if echo "${route_output}" | grep -q 'SIOCADDRT: File exists'; then + exit 0 + fi + echo "${route_output}" + fi + exit "${route_return}" + - user: root + - group: root + - mode: 755 diff --git a/mcp/scripts/.gitignore b/mcp/scripts/.gitignore new file mode 100644 index 000000000..a7f658e4e --- /dev/null +++ b/mcp/scripts/.gitignore @@ -0,0 +1,3 @@ +mcp.rsa* +user-data.*.sh +xdf_data.sh diff --git a/mcp/scripts/globals.sh b/mcp/scripts/globals.sh index fe8d7a3f9..54f015cf6 100644 --- a/mcp/scripts/globals.sh +++ b/mcp/scripts/globals.sh @@ -12,8 +12,45 @@ export CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x export SSH_KEY=${SSH_KEY:-"/var/lib/opnfv/mcp.rsa"} export SALT_MASTER=${INSTALLER_IP:-10.20.0.2} export SALT_MASTER_USER=${SALT_MASTER_USER:-ubuntu} + +# Derived from INSTALLER_IP +export MCPCONTROL_NET=${MCPCONTROL_NET:-${SALT_MASTER%.*}.0} +export MCPCONTROL_PREFIX=${MCPCONTROL_PREFIX:-24} export MAAS_IP=${MAAS_IP:-${SALT_MASTER%.*}.3} -# Derivated from above global vars +# Derived from above global vars, not overideable export SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i ${SSH_KEY}" export SSH_SALT="${SALT_MASTER_USER}@${SALT_MASTER}" + +############################################################################## +# BEGIN of colored notification wrappers +# + +# same as `notify_i` + trailing '\n'; +function notify() { + local msg=${1}; shift + notify_i "${msg}\n" "$@" +} + +# Inline (no newline added) colored output notification wrapper +function notify_i() { + tput setaf "${2:-1}" || true + echo -en "${1:-"[WARN] Unsupported opt arg: $3\\n"}" + tput sgr0 +} + +# same as `notify` + extra '\n' before and after; +function notify_n() { + local msg=${1}; shift + notify_i "\n${msg}\n\n" "$@" +} + +# same as `notify` + stderr output + exit; +function notify_e() { + local msg=${1}; shift + notify_i "\n${msg}\n\n" "$@" 1>&2 + exit 1 +} +# +# END of colored notification wrapper +############################################################################## diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh index d91dcc3e1..ce5db251f 100644 --- a/mcp/scripts/lib.sh +++ b/mcp/scripts/lib.sh @@ -1,7 +1,7 @@ #!/bin/bash -e -# shellcheck disable=SC2155,SC1001 +# shellcheck disable=SC2155,SC1001,SC2015,SC2128 ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -38,10 +38,11 @@ function get_base_image { function __kernel_modules { # Load mandatory kernel modules: loop, nbd local image_dir=$1 - sudo modprobe loop + test -e /dev/loop-control || sudo modprobe loop if sudo modprobe nbd max_part=8 || sudo modprobe -f nbd max_part=8; then return 0 fi + if [ -e /dev/nbd0 ]; then return 0; fi # nbd might be inbuilt # CentOS (or RHEL family in general) do not provide 'nbd' out of the box echo "[WARN] 'nbd' kernel module cannot be loaded!" if [ ! -e /etc/redhat-release ]; then @@ -120,7 +121,7 @@ function mount_image { break fi done - OPNFV_LOOP_DEV=$(losetup -f) + OPNFV_LOOP_DEV=$(sudo losetup -f) OPNFV_MAP_DEV=/dev/mapper/$(basename "${OPNFV_NBD_DEV}")p1 export OPNFV_MNT_DIR OPNFV_LOOP_DEV [ -n "${OPNFV_NBD_DEV}" ] && [ -n "${OPNFV_LOOP_DEV}" ] || exit 1 @@ -213,7 +214,7 @@ function cleanup_mounts { fi fi if [ -n "${OPNFV_LOOP_DEV}" ] && \ - losetup "${OPNFV_LOOP_DEV}" 1>&2 > /dev/null; then + sudo losetup "${OPNFV_LOOP_DEV}" 1>&2 > /dev/null; then sudo losetup -d "${OPNFV_LOOP_DEV}" fi if [ -n "${OPNFV_NBD_DEV}" ]; then @@ -225,6 +226,7 @@ function cleanup_mounts { function cleanup_uefi { # Clean up Ubuntu boot entry if cfg01, kvm nodes online from previous deploy local cmd_str="ssh ${SSH_OPTS} ${SSH_SALT}" + ping -c 1 -w 1 "${SALT_MASTER}" || return 0 [ ! "$(hostname)" = 'cfg01' ] || cmd_str='eval' ${cmd_str} "sudo salt -C 'kvm* or cmp*' cmd.run \ \"which efibootmgr > /dev/null 2>&1 && \ @@ -282,14 +284,21 @@ function prepare_vms { ln -sf "${image_dir}/${_tmp}" "${image_dir}/${image}" fi - envsubst < user-data.template > user-data.sh # CWD should be <mcp/scripts> - # Create config ISO and resize OS disk image for each foundation node VM for node in "${vnodes[@]}"; do - ./create-config-drive.sh -k "$(basename "${SSH_KEY}").pub" -u user-data.sh \ - -h "${node}" "${image_dir}/mcp_${node}.iso" + if [[ "${node}" =~ ^(cfg01|mas01) ]]; then + user_data='user-data.mcp.sh' + else + user_data='user-data.admin.sh' + fi + ./create-config-drive.sh -k "$(basename "${SSH_KEY}").pub" \ + -u "${user_data}" -h "${node}" "${image_dir}/mcp_${node}.iso" cp "${image_dir}/${image}" "${image_dir}/mcp_${node}.qcow2" qemu-img resize "${image_dir}/mcp_${node}.qcow2" 100G + # Prepare dedicated drive for cinder on cmp nodes + if [[ "${node}" =~ ^(cmp) ]]; then + qemu-img create "${image_dir}/mcp_${node}_storage.qcow2" 100G + fi done # VCP VMs base image specific changes @@ -310,19 +319,72 @@ function prepare_vms { fi } +function jumpserver_pkg_install { + if [ -n "$(command -v apt-get)" ]; then + pkg_type='deb'; pkg_cmd='sudo apt-get install -y' + else + pkg_type='rpm'; pkg_cmd='sudo yum install -y --skip-broken' + fi + eval "$(parse_yaml "./requirements_${pkg_type}.yaml")" + for section in 'common' "$(uname -i)"; do + section_var="requirements_pkg_${section}[*]" + pkg_list+=" ${!section_var}" + done + # shellcheck disable=SC2086 + ${pkg_cmd} ${pkg_list} +} + +function jumpserver_check_requirements { + # shellcheck disable=SC2178 + local vnodes=$1; shift + local br=("$@") + local err_br_not_found='Linux bridge not found!' + local err_br_virsh_net='is a virtual network, Linux bridge expected!' + local warn_br_endpoint="Endpoints might be inaccessible from external hosts!" + # MaaS requires a Linux bridge for PXE/admin + if [[ "${vnodes}" =~ mas01 ]]; then + if ! brctl showmacs "${br[0]}" >/dev/null 2>&1; then + notify_e "[ERROR] PXE/admin (${br[0]}) ${err_br_not_found}" + fi + # Assume virsh network name matches bridge name (true if created by us) + if virsh net-info "${br[0]}" >/dev/null 2>&1; then + notify_e "[ERROR] ${br[0]} ${err_br_virsh_net}" + fi + fi + # If virtual nodes are present, public should be a Linux bridge + if [ "$(echo "${vnodes}" | wc -w)" -gt 2 ]; then + if ! brctl showmacs "${br[3]}" >/dev/null 2>&1; then + if [[ "${vnodes}" =~ mas01 ]]; then + # Baremetal nodes *require* a proper public network + notify_e "[ERROR] Public (${br[3]}) ${err_br_not_found}" + else + notify_n "[WARN] Public (${br[3]}) ${err_br_not_found}" 3 + notify_n "[WARN] ${warn_br_endpoint}" 3 + fi + fi + if virsh net-info "${br[3]}" >/dev/null 2>&1; then + if [[ "${vnodes}" =~ mas01 ]]; then + notify_e "[ERROR] ${br[3]} ${err_br_virsh_net}" + else + notify_n "[WARN] ${br[3]} ${err_br_virsh_net}" 3 + notify_n "[WARN] ${warn_br_endpoint}" 3 + fi + fi + fi +} + function create_networks { local vnode_networks=("$@") # create required networks, including constant "mcpcontrol" - # FIXME(alav): since we renamed "pxe" to "mcpcontrol", we need to make sure - # we delete the old "pxe" virtual network, or it would cause IP conflicts. - for net in "pxe" "mcpcontrol" "${vnode_networks[@]}"; do + for net in "mcpcontrol" "${vnode_networks[@]}"; do if virsh net-info "${net}" >/dev/null 2>&1; then virsh net-destroy "${net}" || true virsh net-undefine "${net}" fi # in case of custom network, host should already have the bridge in place - if [ -f "net_${net}.xml" ] && [ ! -d "/sys/class/net/${net}/bridge" ]; then - virsh net-define "net_${net}.xml" + if [ -f "virsh_net/net_${net}.xml" ] && \ + [ ! -d "/sys/class/net/${net}/bridge" ]; then + virsh net-define "virsh_net/net_${net}.xml" virsh net-autostart "${net}" virsh net-start "${net}" fi @@ -334,7 +396,6 @@ function create_vms { # vnode data should be serialized with the following format: # '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]' IFS='|' read -r -a vnodes <<< "$1"; shift - local vnode_networks=("$@") # AArch64: prepare arch specific arguments local virt_extra_args="" @@ -348,20 +409,30 @@ function create_vms { IFS=',' read -r -a vnode_data <<< "${serialized_vnode_data}" # prepare network args - net_args=" --network network=mcpcontrol,model=virtio" - if [ "${DEPLOY_TYPE:-}" = 'baremetal' ]; then + local vnode_networks=("$@") + if [[ "${vnode_data[0]}" =~ ^(cfg01|mas01) ]]; then + net_args=" --network network=mcpcontrol,model=virtio" # 3rd interface gets connected to PXE/Admin Bridge (cfg01, mas01) vnode_networks[2]="${vnode_networks[0]}" + else + net_args=" --network bridge=${vnode_networks[0]},model=virtio" fi for net in "${vnode_networks[@]:1}"; do net_args="${net_args} --network bridge=${net},model=virtio" done + # dedicated storage drive for cinder on cmp nodes + virt_extra_storage= + if [[ "${vnode_data[0]}" =~ ^(cmp) ]]; then + virt_extra_storage="--disk path=${image_dir}/mcp_${vnode_data[0]}_storage.qcow2,format=qcow2,bus=virtio,cache=none,io=native" + fi + # shellcheck disable=SC2086 virt-install --name "${vnode_data[0]}" \ --ram "${vnode_data[1]}" --vcpus "${vnode_data[2]}" \ --cpu host-passthrough --accelerate ${net_args} \ --disk path="${image_dir}/mcp_${vnode_data[0]}.qcow2",format=qcow2,bus=virtio,cache=none,io=native \ + ${virt_extra_storage} \ --os-type linux --os-variant none \ --boot hd --vnc --console pty --autostart --noreboot \ --disk path="${image_dir}/mcp_${vnode_data[0]}.iso",device=cdrom \ @@ -443,12 +514,11 @@ function wait_for { for attempt in $(seq "${total_attempts}"); do echo "[wait_for] Attempt ${attempt}/${total_attempts%.*} for: ${cmdstr}" if [ "${total_attempts%.*}" = "${total_attempts}" ]; then - # shellcheck disable=SC2015 eval "${cmdstr}" && echo "[wait_for] OK: ${cmdstr}" && return 0 || true else - !(eval "${cmdstr}" || echo __fuel_wf_failure__) |& tee /dev/stderr | \ - grep -Eq '(Not connected|No response|__fuel_wf_failure__)' && \ - echo "[wait_for] OK: ${cmdstr}" && return 0 || true + ! (eval "${cmdstr}" || echo 'No response') |& tee /dev/stderr | \ + grep -Eq '(Not connected|No response)' && \ + echo "[wait_for] OK: ${cmdstr}" && return 0 || true fi sleep "${sleep_time}" done @@ -460,15 +530,18 @@ function wait_for { function do_sysctl_cfg { local _conf='/etc/sysctl.d/99-opnfv-fuel-bridge.conf' # https://wiki.libvirt.org/page/Net.bridge.bridge-nf-call_and_sysctl.conf - echo 'net.bridge.bridge-nf-call-arptables = 0' |& sudo tee "${_conf}" - echo 'net.bridge.bridge-nf-call-iptables = 0' |& sudo tee -a "${_conf}" - echo 'net.bridge.bridge-nf-call-ip6tables = 0' |& sudo tee -a "${_conf}" - sudo sysctl -q -p "${_conf}" + if modprobe br_netfilter bridge; then + echo 'net.bridge.bridge-nf-call-arptables = 0' |& sudo tee "${_conf}" + echo 'net.bridge.bridge-nf-call-iptables = 0' |& sudo tee -a "${_conf}" + echo 'net.bridge.bridge-nf-call-ip6tables = 0' |& sudo tee -a "${_conf}" + # Some distros / sysadmins explicitly blacklist br_netfilter + sudo sysctl -q -p "${_conf}" || true + fi } function get_nova_compute_pillar_data { local value=$(salt -C 'I@nova:compute and *01*' pillar.get _param:"${1}" --out yaml | cut -d ' ' -f2) if [ "${value}" != "''" ]; then - echo ${value} + echo "${value}" fi } diff --git a/mcp/scripts/lib_template.sh b/mcp/scripts/lib_template.sh new file mode 100644 index 000000000..0fbe628b7 --- /dev/null +++ b/mcp/scripts/lib_template.sh @@ -0,0 +1,88 @@ +#!/bin/bash -e +# shellcheck disable=SC2155,SC1001,SC2015,SC2128 +############################################################################## +# 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 +############################################################################## +# +# Library of shell functions dedicated to j2 template handling +# + +PHAROS_GEN_CFG='./pharos/config/utils/generate_config.py' +PHAROS_IA='./pharos/config/installers/fuel/pod_config.yml.j2' +PHAROS_VALIDATE_SCHEMA_SCRIPT='./pharos/config/utils/validate_schema.py' +PHAROS_SCHEMA_PDF='./pharos/config/pdf/pod1.schema.yaml' +PHAROS_SCHEMA_IDF='./pharos/config/pdf/idf-pod1.schema.yaml' + +# Handles pod_config and scenarios only +function do_templates_scenario { + local image_dir=$1; shift + local target_lab=$1; shift + local target_pod=$1; shift + local lab_config_uri=$1; shift + local scenario_dir=$1 + + BASE_CONFIG_PDF="${lab_config_uri}/labs/${target_lab}/${target_pod}.yaml" + BASE_CONFIG_IDF="${lab_config_uri}/labs/${target_lab}/idf-${target_pod}.yaml" + LOCAL_PDF="${image_dir}/$(basename "${BASE_CONFIG_PDF}")" + LOCAL_IDF="${image_dir}/$(basename "${BASE_CONFIG_IDF}")" + + # Make sample PDF/IDF available via default lab-config (pharos submodule) + ln -sf "$(readlink -f "../config/labs/local")" "./pharos/labs/" + + # Expand scenario file and main reclass input (pod_config.yaml) based on PDF + if ! curl --create-dirs -o "${LOCAL_PDF}" "${BASE_CONFIG_PDF}"; then + notify_e "[ERROR] Could not retrieve PDF (Pod Descriptor File)!" + elif ! curl -o "${LOCAL_IDF}" "${BASE_CONFIG_IDF}"; then + notify_e "[ERROR] Could not retrieve IDF (Installer Descriptor File)!" + fi + # Check first if configuration files are valid + if [[ ! "$target_pod" =~ "virtual" ]]; then + if ! "${PHAROS_VALIDATE_SCHEMA_SCRIPT}" -y "${LOCAL_PDF}" \ + -s "${PHAROS_SCHEMA_PDF}"; then + notify_e "[ERROR] PDF does not match yaml schema!" + elif ! "${PHAROS_VALIDATE_SCHEMA_SCRIPT}" -y "${LOCAL_IDF}" \ + -s "${PHAROS_SCHEMA_IDF}"; then + notify_e "[ERROR] IDF does not match yaml schema!" + fi + fi + if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" \ + -j "${PHAROS_IA}" -v > "${image_dir}/pod_config.yml"; then + notify_e "[ERROR] Could not convert PDF+IDF to reclass model input!" + fi + printenv | \ + awk '/^(SALT|MCP|MAAS).*=/ { gsub(/=/,": "); print }' >> "${LOCAL_PDF}" + j2args=$(find "${scenario_dir}" -name '*.j2' -exec echo -j {} \;) + # shellcheck disable=SC2086 + if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" ${j2args} -b -v \ + -i "$(dirname "$(readlink -f "${PHAROS_IA}")")"; then + notify_e '[ERROR] Could not convert j2 scenario definitions!' + fi +} + +# Expand reclass and virsh network templates based on PDF + IDF + others +function do_templates_cluster { + local image_dir=$1; shift + local target_lab=$1; shift + local target_pod=$1; shift + local git_repo_root=$1; shift + local extra_yaml=("$@") + + RECLASS_CLUSTER_DIR=$(cd "${git_repo_root}/mcp/reclass/classes/cluster"; pwd) + LOCAL_PDF="${image_dir}/${target_pod}.yaml" + + for _yaml in "${extra_yaml[@]}"; do + awk '/^---$/{f=1;next;}f' "${_yaml}" >> "${LOCAL_PDF}" + done + # shellcheck disable=SC2046 + j2args=$(find "${RECLASS_CLUSTER_DIR}" "$(readlink -f virsh_net)" $(readlink -f ./*j2) \ + -name '*.j2' -exec echo -j {} \;) + # shellcheck disable=SC2086 + if ! "${PHAROS_GEN_CFG}" -y "${LOCAL_PDF}" ${j2args} -b -v \ + -i "$(dirname "$(readlink -f "${PHAROS_IA}")")"; then + notify_e '[ERROR] Could not convert PDF to network definitions!' + fi +} diff --git a/mcp/scripts/net_public.xml b/mcp/scripts/net_public.xml deleted file mode 100644 index d6df4aa30..000000000 --- a/mcp/scripts/net_public.xml +++ /dev/null @@ -1,14 +0,0 @@ -<!-- - Copyright (c) 2017 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 ---> -<network> - <name>public</name> - <bridge name="public"/> - <forward mode="nat"/> - <ip address="10.16.0.1" netmask="255.255.255.0" /> -</network> diff --git a/mcp/scripts/pharos b/mcp/scripts/pharos -Subproject 77b600ef0d64210c1b5fd72581cfe7752fa00c8 +Subproject 68dc60c1aa7199279995c1fee59ad151b5012af diff --git a/mcp/scripts/requirements_deb.yaml b/mcp/scripts/requirements_deb.yaml index 9a6ec8273..04ddcf631 100644 --- a/mcp/scripts/requirements_deb.yaml +++ b/mcp/scripts/requirements_deb.yaml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -23,15 +23,14 @@ requirements_pkg: - rsync - uuid-runtime - virtinst + # python is indirectly required for PDF parsing + - python + - python-ipaddress + - python-jinja2 + - python-yaml + - python-jsonschema # Optional, arch-specific requirements, matched by key name = $(uname -m) aarch64: # AArch64 VMs use AAVMF (guest UEFI) - ipxe-qemu - qemu-efi - # Optional, deploy-type-specific requirements - baremetal: - # For baremetal, python is indirectly required for PDF parsing - - python - - python-ipaddress - - python-jinja2 - - python-yaml diff --git a/mcp/scripts/requirements_rpm.yaml b/mcp/scripts/requirements_rpm.yaml index ebd7e85dc..3df4d0a80 100644 --- a/mcp/scripts/requirements_rpm.yaml +++ b/mcp/scripts/requirements_rpm.yaml @@ -1,5 +1,5 @@ ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -16,6 +16,8 @@ requirements_pkg: - elfutils-libelf-devel - e2fsprogs - genisoimage + - gcc + - gdisk - git - kpartx - libvirt @@ -27,14 +29,13 @@ requirements_pkg: - util-linux - virt-install - wget - # Optional, arch-specific requirements, matched by key name = $(uname -m) - aarch64: - # AArch64 VMs use AAVMF (guest UEFI) - - AAVMF - # Optional, deploy-type-specific requirements - baremetal: - # For baremetal, python is indirectly required for PDF parsing + # For python is indirectly required for PDF parsing - python - python-ipaddress - python-jinja2 - python-yaml + - python-jsonschema + # Optional, arch-specific requirements, matched by key name = $(uname -m) + aarch64: + # AArch64 VMs use AAVMF (guest UEFI) + - AAVMF diff --git a/mcp/scripts/salt.sh b/mcp/scripts/salt.sh index 03218e27f..aecfecea4 100755 --- a/mcp/scripts/salt.sh +++ b/mcp/scripts/salt.sh @@ -16,15 +16,15 @@ F_GIT_DIR=$(cd "${F_GIT_ROOT}/mcp" && git rev-parse --git-dir) F_GIT_SUBD=${F_GIT_ROOT#${F_GIT_DIR%%/.git*}} OPNFV_TMP_DIR="/home/${SALT_MASTER_USER}/opnfv" OPNFV_GIT_DIR="/root/opnfv" -OPNFV_FUEL_DIR="/root/fuel" +OPNFV_FUEL_DIR="/root/fuel" # Should be in sync with patch.sh, scripts patches OPNFV_RDIR="reclass/classes/cluster/all-mcp-arch-common" OPNFV_VCP_IMG="mcp/scripts/base_image_opnfv_fuel_vcp.img" OPNFV_VCP_DIR="/srv/salt/env/prd/salt/files/control/images" LOCAL_GIT_DIR="${F_GIT_ROOT%${F_GIT_SUBD}}" -LOCAL_PDF_RECLASS=$1 -NODE_MASK='*' - -[[ "${CLUSTER_DOMAIN}" =~ virtual ]] || NODE_MASK='mas01*' +LOCAL_PDF_RECLASS=$1; shift +# shellcheck disable=SC2116,SC2086 +LOCAL_VIRT_NODES=$(echo ${*//cfg01/}) # unquoted to filter space +NODE_MASK="${LOCAL_VIRT_NODES// /|}" # push to cfg01 current git repo first (including submodules), at ~ubuntu/opnfv # later we move it to ~root/opnfv (and ln as ~root/fuel); delete the temp clone @@ -63,18 +63,25 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s -e << SALT_INSTALL_END ln -sf ${OPNFV_GIT_DIR}${F_GIT_SUBD} ${OPNFV_FUEL_DIR} 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 && \ ln -sf /usr/share/salt-formulas/reclass/service/opendaylight + # Armband APT-MK nightly/extra repo for forked & extended reclass + wget -qO - https://linux.enea.com/apt-mk/public.gpg | apt-key add - + echo 'deb http://linux.enea.com/apt-mk/xenial nightly extra' > \ + '/etc/apt/sources.list.d/armband_mcp_extra.list' + apt-get update + cd /srv/salt/scripts export DEBIAN_FRONTEND=noninteractive echo 'Dpkg::Use-Pty "0";' > /etc/apt/apt.conf.d/90silence-dpkg OLD_DOMAIN=\$(grep -sPzo "id: cfg01\.\K(\S*)" /etc/salt/minion.d/minion.conf) || true BOOTSTRAP_SALTSTACK_OPTS=" -r -dX stable 2016.11 " \ - MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=stable \ + MASTER_HOSTNAME=cfg01.${CLUSTER_DOMAIN} DISTRIB_REVISION=nightly \ EXTRA_FORMULAS="nfs" \ ./salt-master-init.sh salt-key -Ay @@ -96,21 +103,26 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s -e << SALT_INSTALL_END fi # Init specific to VMs on FN (all for virtual, cfg|mas for baremetal) - salt -C "${NODE_MASK} or cfg01*" saltutil.sync_all - wait_for 3.0 'salt -C "${NODE_MASK} or cfg01*" state.apply salt' wait_for 3.0 'salt -C "cfg01*" state.apply linux' + if [[ "${LOCAL_VIRT_NODES}" =~ mas ]]; then + wait_for 3.0 'salt -C "mas*" test.ping' + else + wait_for 3.0 '(for n in ${LOCAL_VIRT_NODES}; do salt -C \${n}.* test.ping || exit; done)' + fi + wait_for 3.0 'salt -C "E@^(${NODE_MASK}|cfg01).*" saltutil.sync_all' + wait_for 3.0 'salt -C "E@^(${NODE_MASK}|cfg01).*" state.apply salt' - salt -C "${NODE_MASK} and not cfg01*" state.sls linux || true - salt -C "${NODE_MASK} and not cfg01*" pkg.upgrade refresh=False + wait_for 3.0 'salt -C "E@^(${NODE_MASK}).*" state.sls linux.system,linux.storage' + wait_for 2.0 'salt -C "E@^(${NODE_MASK}).*" state.sls linux.network' || true + salt -C "E@^(${NODE_MASK}).*" state.sls opnfv.route_wrapper + salt -C "E@^(${NODE_MASK}).*" system.reboot + wait_for 90.0 'salt -C "E@^(${NODE_MASK}).*" test.ping' + wait_for 3.0 'salt -C "E@^(${NODE_MASK}).*" pkg.upgrade refresh=False dist_upgrade=True' - salt -C "${NODE_MASK} or cfg01*" state.sls ntp + wait_for 3.0 'salt -C "E@^(${NODE_MASK}|cfg01).*" state.sls ntp' if [ -f "${OPNFV_FUEL_DIR}/${OPNFV_VCP_IMG}" ]; then mkdir -p "${OPNFV_VCP_DIR}" mv "${OPNFV_FUEL_DIR}/${OPNFV_VCP_IMG}" "${OPNFV_VCP_DIR}/" fi - - # symlink manually until package with required commit is available - cd /usr/share/salt-formulas/env/aodh/files - ln -sf ocata pike SALT_INSTALL_END diff --git a/mcp/scripts/sysinfo_print.sh b/mcp/scripts/sysinfo_print.sh index bff36aff4..49ed8247c 100755 --- a/mcp/scripts/sysinfo_print.sh +++ b/mcp/scripts/sysinfo_print.sh @@ -10,9 +10,19 @@ # Collect jump server system information for deploy debugging # +# HW info +cat /proc/cpuinfo +free -mh +df -h + # Network info brctl show +ip a +route -n # Distro & pkg info cat /etc/*-release uname -a + +# Misc info +sudo losetup -a diff --git a/mcp/scripts/user-data.admin.sh.j2 b/mcp/scripts/user-data.admin.sh.j2 new file mode 100644 index 000000000..d9b86c79c --- /dev/null +++ b/mcp/scripts/user-data.admin.sh.j2 @@ -0,0 +1,14 @@ +#!/bin/bash +############################################################################## +# 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 +############################################################################## +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 +service salt-minion restart diff --git a/mcp/scripts/user-data.template b/mcp/scripts/user-data.mcp.sh.j2 index 189310be4..bd80961e6 100644 --- a/mcp/scripts/user-data.template +++ b/mcp/scripts/user-data.mcp.sh.j2 @@ -1,6 +1,6 @@ #!/bin/bash ############################################################################## -# Copyright (c) 2017 Mirantis Inc., Enea AB and others. +# 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 @@ -8,6 +8,6 @@ ############################################################################## rm /etc/salt/minion_id rm -f /etc/salt/pki/minion/minion_master.pub -echo "id: $(hostname).${CLUSTER_DOMAIN}" > /etc/salt/minion -echo "master: ${SALT_MASTER}" >> /etc/salt/minion +echo "id: $(hostname).{{ conf.cluster.domain }}" > /etc/salt/minion +echo "master: {{ conf.SALT_MASTER }}" >> /etc/salt/minion service salt-minion restart diff --git a/mcp/scripts/net_internal.xml b/mcp/scripts/virsh_net/net_internal.xml index 8cf875e7c..8cf875e7c 100644 --- a/mcp/scripts/net_internal.xml +++ b/mcp/scripts/virsh_net/net_internal.xml diff --git a/mcp/scripts/net_mcpcontrol.xml.template b/mcp/scripts/virsh_net/net_mcpcontrol.xml.j2 index e0034fd16..95424db4e 100644 --- a/mcp/scripts/net_mcpcontrol.xml.template +++ b/mcp/scripts/virsh_net/net_mcpcontrol.xml.j2 @@ -6,13 +6,14 @@ which accompanies this distribution, and is available at http://www.apache.org/licenses/LICENSE-2.0 --> +{#- conf.MCPCONTROL_NET & co are mandatory, defaults are set via globals.sh #} <network> <name>mcpcontrol</name> <bridge name="mcpcontrol"/> <forward mode="nat"/> - <ip address="${SALT_MASTER%.*}.1" netmask="255.255.255.0"> + <ip address="{{ conf.MCPCONTROL_NET | ipaddr_index(1) }}" netmask="{{ conf.MCPCONTROL_PREFIX | netmask }}"> <dhcp> - <range start="${SALT_MASTER%.*}.2" end="${SALT_MASTER%.*}.254"/> + <range start="{{ conf.MCPCONTROL_NET | ipaddr_index(2) }}" end="{{ conf.MCPCONTROL_NET | ipaddr_index(254) }}"/> </dhcp> </ip> </network> diff --git a/mcp/scripts/net_mgmt.xml b/mcp/scripts/virsh_net/net_mgmt.xml.j2 index 4fbec712a..a558293fa 100644 --- a/mcp/scripts/net_mgmt.xml +++ b/mcp/scripts/virsh_net/net_mgmt.xml.j2 @@ -6,8 +6,15 @@ 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 %} <network> <name>mgmt</name> <bridge name="mgmt"/> - <ip address="172.16.10.1" netmask="255.255.255.0"/> + <ip address="{{ mgmt_network | ipaddr_index(1) }}" netmask="{{ mgmt_prefix | netmask }}"/> </network> diff --git a/mcp/scripts/virsh_net/net_public.xml.j2 b/mcp/scripts/virsh_net/net_public.xml.j2 new file mode 100644 index 000000000..737b638b3 --- /dev/null +++ b/mcp/scripts/virsh_net/net_public.xml.j2 @@ -0,0 +1,32 @@ +<!-- + 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 +--> +{%- 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 %} +<network> + <name>public</name> + <bridge name="public"/> +{%- if 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 }}"/> +{%- endif %} +</network> diff --git a/mcp/scripts/virsh_net/net_pxebr.xml.j2 b/mcp/scripts/virsh_net/net_pxebr.xml.j2 new file mode 100644 index 000000000..f82780cf7 --- /dev/null +++ b/mcp/scripts/virsh_net/net_pxebr.xml.j2 @@ -0,0 +1,26 @@ +<!-- + 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 +--> +{%- 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 %} +<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. --> + <dhcp> + <range start="{{ pxebr_network | ipaddr_index(4) }}" end="{{ pxebr_network | ipaddr_index(254) }}"/> + </dhcp> + </ip> +</network> diff --git a/mcp/scripts/xdf_data.sh.j2 b/mcp/scripts/xdf_data.sh.j2 new file mode 100644 index 000000000..8c9d5d969 --- /dev/null +++ b/mcp/scripts/xdf_data.sh.j2 @@ -0,0 +1,71 @@ +#!/bin/bash -e +# shellcheck disable=SC2034 +############################################################################## +# 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 +############################################################################## +# +# Data derived from XDF (PDF/IDF/SDF/etc), used as input in deploy.sh +# + +{%- set arch = conf[conf.MCP_JUMP_ARCH] -%} + +{%- macro bash_arr(_l) -%} + ({%- for n in _l -%}'{{ n }}' {% endfor -%}) +{%- endmacro -%} + +{#- Pack list as `sep`-separated string, replacing spaces with '|' -#} +{%- macro pack(x = [], sep = ',') -%} + {{ x | join(sep) | replace(' ', '|') }} +{%- endmacro -%} + +{#- Pack all vnode data as string -#} +{%- macro serialize_vnodes() -%} + {%- set V = conf.virtual -%} + {%- set arr = [] -%} + {%- for n in V.nodes -%} + {%- if n not in V -%}{%- do V.update({n: {}}) -%}{%- endif -%} + {%- do arr.append(pack([n, V[n].ram or arch.default.ram, + V[n].vcpus or arch.default.vcpus])) -%} + {%- endfor -%} + '{{ pack(arr, '|') }}' +{%- endmacro -%} + +{#- Pack apt_pkg data as string -#} +{%- macro serialize_apt_pkg() -%} + {%- set arr = [] -%} + {%- set sections = [arch.common] -%} + {%- if conf.MCP_VCP -%} + {%- do sections.append(arch.control) -%} + {%- endif -%} + {%- for c in sections -%} + {%- do arr.append(pack([pack(c.apt['keys']), pack(c.apt.repos), + pack(c.pkg.install), pack(c.pkg.remove)], '^')) -%} + {%- endfor -%} + '{{ pack(arr, '^') }}' +{%- endmacro -%} + +{%- set bridges = conf.idf.fuel.jumphost.bridges %} +# Determine bridge names based on IDF, where all bridges are now mandatory +OPNFV_BRIDGES=( + '{{ bridges.admin or "pxebr" }}' + '{{ bridges.mgmt or "mgmt" }}' + '{{ bridges.private or "internal" }}' + '{{ bridges.public or "public" }}' +) + +export CLUSTER_DOMAIN={{ conf.cluster.domain }} +cluster_states={{ bash_arr(conf.cluster.states) }} +virtual_nodes={{ bash_arr(conf.virtual.nodes) }} +base_image={{ arch.base_image }} + +# Serialize vnode data as '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]' +virtual_nodes_data={{ serialize_vnodes() }} + +# Serialize repos, packages to (pre-)install/remove for: +# - foundation node VM base image (virtual: all VMs, baremetal: cfg01|mas01) +# - virtualized control plane VM base image (only when VCP is used) +virtual_repos_pkgs={{ serialize_apt_pkg() }} |