diff options
261 files changed, 3700 insertions, 2933 deletions
diff --git a/.gitignore b/.gitignore index 38b444007..fe7a86422 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ **/docs_output/ **/releng/ **/mcp/deploy/images/ -**/mcp/scripts/mcp.rsa* **/mcp/scripts/user-data.sh -**/mcp/scripts/net_mcpcontrol.xml +**/mcp/scripts/virsh_net/*.xml **/mcp/scripts/*.img +**/net_map.j2 diff --git a/.gitmodules b/.gitmodules index 565943da6..c7c44587c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,7 +2,6 @@ path = mcp/reclass/classes/system url = https://github.com/Mirantis/reclass-system-salt-model branch = master - ignore = all [submodule "scripts"] path = mcp/deploy/scripts url = https://github.com/salt-formulas/salt-formulas-scripts diff --git a/README.rst b/README.rst index e1b9201aa..467c211bf 100644 --- a/README.rst +++ b/README.rst @@ -1,3 +1,3 @@ .. This work is licensed under a Creative Commons Attribution 4.0 International License. .. SPDX-License-Identifier: CC-BY-4.0 -.. (c) 2017 Ericsson AB, Mirantis Inc., Enea AB and others. +.. (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. diff --git a/ci/deploy.sh b/ci/deploy.sh index 9a22e9ec5..a5fec4d44 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -1,7 +1,7 @@ #!/bin/bash -e -# shellcheck disable=SC2034,SC2154,SC1090,SC1091 +# shellcheck disable=SC2034,SC2154,SC1090,SC1091,SC2155 ############################################################################## -# Copyright (c) 2017 Ericsson AB, Mirantis Inc., Enea AB and others. +# Copyright (c) 2018 Ericsson AB, Mirantis Inc., Enea AB and others. # jonas.bjurel@ericsson.com # All rights reserved. This program and the accompanying materials # are made available under the terms of the Apache License, Version 2.0 @@ -16,9 +16,9 @@ do_exit () { local RC=$? cleanup_mounts > /dev/null 2>&1 if [ ${RC} -eq 0 ]; then - notify "\n[OK] MCP: Openstack installation finished succesfully!\n\n" 2 + notify_n "[OK] MCP: Openstack installation finished succesfully!" 2 else - notify "\n[ERROR] MCP: Openstack installation threw a fatal error!\n\n" + notify_n "[ERROR] MCP: Openstack installation threw a fatal error!" fi } # @@ -38,7 +38,7 @@ $(notify "USAGE:" 2) $(basename "$0") -l lab-name -p pod-name -s deploy-scenario \\ [-b Lab Config Base URI] \\ [-S storage-dir] [-L /path/to/log/file.tar.gz] \\ - [-f[f]] [-F] [-e | -E[E]] [-d] [-D] + [-f[f]] [-F] [-e | -E[E]] [-d] [-D] [-N] $(notify "OPTIONS:" 2) -b Base-uri for the stack-configuration structure @@ -55,25 +55,26 @@ $(notify "OPTIONS:" 2) -s Deploy-scenario short-name -S Storage dir for VM images -L Deployment log path and file name + -N Experimental: Do not virtualize control plane (novcp) -$(notify "Description:" 2) +$(notify_i "Description:" 2) Deploys the Fuel@OPNFV stack on the indicated lab resource. This script provides the Fuel@OPNFV deployment abstraction. It depends on the OPNFV official configuration directory/file structure and provides a fairly simple mechanism to execute a deployment. -$(notify "Input parameters to the build script are:" 2) +$(notify_i "Input parameters to the build script are:" 2) -b Base URI to the configuration directory (needs to be provided in URI style, it can be a local resource: file:// or a remote resource http(s)://). A POD Descriptor File (PDF) and its Installer Descriptor File (IDF) companion should be available at: <base-uri>/labs/<lab-name>/<pod-name>.yaml <base-uri>/labs/<lab-name>/idf-<pod-name>.yaml - An example config is provided inside current repo in - <./mcp/config>. The default is using the git submodule tracking 'OPNFV Pharos' in <./mcp/scripts/pharos>. + An example config is provided inside current repo in + <./mcp/config>, automatically linked as <./mcp/scripts/pharos/labs/local>. -d Dry-run - Produce deploy config files, but do not execute deploy -D Debug logging - Enable extra logging in sh deploy scripts (set -x) -e Do not launch environment deployment @@ -90,6 +91,8 @@ $(notify "Input parameters to the build script are:" 2) -L Deployment log path and name, eg. -L /home/jenkins/job.log.tar.gz -l Lab name as defined in the configuration directory, e.g. lf -p POD name as defined in the configuration directory, e.g. pod2 +-N Experimental: Instead of virtualizing the control plane (VCP), deploy + control plane directly on baremetal nodes -P Skip installing dependency distro packages on current host This flag should only be used if you have kept back older packages that would be upgraded and that is undesirable on the current system. @@ -98,11 +101,11 @@ $(notify "Input parameters to the build script are:" 2) has to be defined in config directory (e.g. os-odl-nofeature-ha). -S Storage dir for VM images, default is mcp/deploy/images -$(notify "[NOTE] sudo & virsh priviledges are needed for this script to run" 3) +$(notify_i "[NOTE] sudo & virsh priviledges are needed for this script to run" 3) Example: -$(notify "sudo $(basename "$0") \\ +$(notify_i "sudo $(basename "$0") \\ -b file:///home/jenkins/securedlab \\ -l lf -p pod2 \\ -s os-odl-nofeature-ha" 2) @@ -114,28 +117,12 @@ EOF ############################################################################## ############################################################################## -# BEGIN of colored notification wrapper -# -notify() { - tput setaf "${2:-1}" || true - echo -en "${1:-"[WARN] Unsupported opt arg: $3\\n"}" - tput sgr0 -} -# -# END of colored notification wrapper -############################################################################## - -############################################################################## # BEGIN of variables to customize # CI_DEBUG=${CI_DEBUG:-0}; [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x REPO_ROOT_PATH=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")/..") DEPLOY_DIR=$(cd "${REPO_ROOT_PATH}/mcp/scripts"; pwd) STORAGE_DIR=$(cd "${REPO_ROOT_PATH}/mcp/deploy/images"; pwd) -RECLASS_CLUSTER_DIR=$(cd "${REPO_ROOT_PATH}/mcp/reclass/classes/cluster"; pwd) -DEPLOY_TYPE='baremetal' -BR_NAMES=('admin' 'mgmt' 'private' 'public') -OPNFV_BRIDGES=('pxebr' 'mgmt' 'internal' 'public') URI_REGEXP='(file|https?|ftp)://.*' BASE_CONFIG_URI="file://${REPO_ROOT_PATH}/mcp/scripts/pharos" @@ -146,9 +133,11 @@ USE_EXISTING_INFRA=${USE_EXISTING_INFRA:-0} INFRA_CREATION_ONLY=${INFRA_CREATION_ONLY:-0} NO_DEPLOY_ENVIRONMENT=${NO_DEPLOY_ENVIRONMENT:-0} ERASE_ENV=${ERASE_ENV:-0} +MCP_VCP=${MCP_VCP:-1} source "${DEPLOY_DIR}/globals.sh" source "${DEPLOY_DIR}/lib.sh" +source "${DEPLOY_DIR}/lib_template.sh" # # END of variables to customize @@ -158,13 +147,13 @@ source "${DEPLOY_DIR}/lib.sh" # BEGIN of main # set +x -while getopts "b:dDfEFl:L:p:Ps:S:he" OPTION +while getopts "b:dDfEFl:L:Np:Ps:S:he" OPTION do case $OPTION in b) BASE_CONFIG_URI=${OPTARG} if [[ ! $BASE_CONFIG_URI =~ ${URI_REGEXP} ]]; then - notify "[ERROR] -b $BASE_CONFIG_URI - invalid URI\n" + notify "[ERROR] -b $BASE_CONFIG_URI - invalid URI" usage exit 1 fi @@ -193,10 +182,15 @@ do L) DEPLOY_LOG="${OPTARG}" ;; + N) + MCP_VCP=0 + ;; p) TARGET_POD=${OPTARG} - if [[ "${TARGET_POD}" =~ "virtual" ]]; then - DEPLOY_TYPE='virtual' + if [[ "${TARGET_POD}" =~ virtual ]]; then + # All vPODs will use 'local-virtual1' PDF/IDF for now + TARGET_LAB='local' + TARGET_POD='virtual1' fi ;; P) @@ -215,23 +209,20 @@ do exit 0 ;; *) - notify "[ERROR] Arguments not according to new argument style\n" - exit 1 + notify_e "[ERROR] Unsupported arg, see -h for help" ;; esac done if [[ "$(sudo whoami)" != 'root' ]]; then - notify "[ERROR] This script requires sudo rights\n" 1>&2 - exit 1 + notify_e "[ERROR] This script requires sudo rights" fi # Validate mandatory arguments are set if [ -z "${TARGET_LAB}" ] || [ -z "${TARGET_POD}" ] || \ [ -z "${DEPLOY_SCENARIO}" ]; then - notify "[ERROR] At least one of the mandatory args is missing!\n" 1>&2 usage - exit 1 + notify_e "[ERROR] At least one of the mandatory args is missing!" fi [[ "${CI_DEBUG}" =~ (false|0) ]] || set -x @@ -248,26 +239,14 @@ pushd "${DEPLOY_DIR}" > /dev/null # Install required packages on jump server if [ ${USE_EXISTING_PKGS} -eq 1 ]; then - notify "[NOTE] Skipping distro pkg installation\n" 2 1>&2 + notify "[NOTE] Skipping distro pkg installation" 2 else - notify "[NOTE] Installing required distro pkgs\n" 2 1>&2 - 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' "${DEPLOY_TYPE}" "$(uname -m)"; do - section_var="requirements_pkg_${section}[*]" - pkg_list+=" ${!section_var}" - done - # shellcheck disable=SC2086 - ${pkg_cmd} ${pkg_list} + notify "[NOTE] Installing required distro pkgs" 2 + jumpserver_pkg_install fi if ! virsh list >/dev/null 2>&1; then - notify "[ERROR] This script requires hypervisor access\n" 1>&2 - exit 1 + notify_e "[ERROR] This script requires hypervisor access" fi # Collect jump server system information for deploy debugging @@ -276,116 +255,41 @@ fi # Clone git submodules and apply our patches make -C "${REPO_ROOT_PATH}/mcp/patches" deepclean patches-import -# Convert Pharos-compatible POD Descriptor File (PDF) to reclass model input -PHAROS_GEN_CONFIG_SCRIPT="./pharos/config/utils/generate_config.py" -PHAROS_INSTALLER_ADAPTER="./pharos/config/installers/fuel/pod_config.yml.j2" -BASE_CONFIG_PDF="${BASE_CONFIG_URI}/labs/${TARGET_LAB}/${TARGET_POD}.yaml" -BASE_CONFIG_IDF="${BASE_CONFIG_URI}/labs/${TARGET_LAB}/idf-${TARGET_POD}.yaml" -LOCAL_PDF="${STORAGE_DIR}/$(basename "${BASE_CONFIG_PDF}")" -LOCAL_IDF="${STORAGE_DIR}/$(basename "${BASE_CONFIG_IDF}")" -LOCAL_PDF_RECLASS="${STORAGE_DIR}/pod_config.yml" -if ! curl --create-dirs -o "${LOCAL_PDF}" "${BASE_CONFIG_PDF}"; then - if [ "${DEPLOY_TYPE}" = 'baremetal' ]; then - notify "[ERROR] Could not retrieve PDF (Pod Descriptor File)!\n" 1>&2 - exit 1 - else - notify "[WARN] Could not retrieve PDF (Pod Descriptor File)!\n" 3 - fi -elif ! curl -o "${LOCAL_IDF}" "${BASE_CONFIG_IDF}"; then - notify "[WARN] POD has no IDF (Installer Descriptor File)!\n" 3 -elif ! "${PHAROS_GEN_CONFIG_SCRIPT}" -y "${LOCAL_PDF}" \ - -j "${PHAROS_INSTALLER_ADAPTER}" > "${LOCAL_PDF_RECLASS}"; then - notify "[ERROR] Could not convert PDF to reclass model input!\n" 1>&2 - exit 1 -fi - # Check scenario file existence -SCENARIO_DIR="../config/scenario" -if [ ! -f "${SCENARIO_DIR}/${DEPLOY_TYPE}/${DEPLOY_SCENARIO}.yaml" ]; then - notify "[ERROR] Scenario definition file is missing!\n" 1>&2 - exit 1 +SCENARIO_DIR="$(readlink -f "../config/scenario")" +if [ ! -f "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml" ] && \ + [ ! -f "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml.j2" ]; then + notify_e "[ERROR] Scenario definition file is missing!" fi -# Check defaults file existence -if [ ! -f "${SCENARIO_DIR}/defaults-$(uname -i).yaml" ]; then - notify "[ERROR] Scenario defaults file is missing!\n" 1>&2 - exit 1 -fi +# key might not exist yet ... +generate_ssh_key +export MAAS_SSH_KEY="$(cat "$(basename "${SSH_KEY}").pub")" -# Get required infra deployment data -set +x -eval "$(parse_yaml "${SCENARIO_DIR}/defaults-$(uname -i).yaml")" -eval "$(parse_yaml "${SCENARIO_DIR}/${DEPLOY_TYPE}/${DEPLOY_SCENARIO}.yaml")" -eval "$(parse_yaml "${LOCAL_PDF_RECLASS}")" -[[ "${CI_DEBUG}" =~ (false|0) ]] || set -x - -export CLUSTER_DOMAIN=${cluster_domain} - -# Serialize vnode data as '<name0>,<ram0>,<vcpu0>|<name1>,<ram1>,<vcpu1>[...]' -for node in "${virtual_nodes[@]}"; do - virtual_custom_ram="virtual_${node}_ram" - virtual_custom_vcpus="virtual_${node}_vcpus" - virtual_nodes_data+="${node}," - virtual_nodes_data+="${!virtual_custom_ram:-$virtual_default_ram}," - virtual_nodes_data+="${!virtual_custom_vcpus:-$virtual_default_vcpus}|" -done -virtual_nodes_data=${virtual_nodes_data%|} - -# 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) -base_image_flavors=common -if [[ "${cluster_states[*]}" =~ virtual_control ]]; then - base_image_flavors+=" control" -fi -for sc in ${base_image_flavors}; do - for va in apt_keys apt_repos pkg_install pkg_remove; do - key=virtual_${sc}_${va} - eval "${key}=\${${key}[@]// /|}" - eval "${key}=\${${key}// /,}" - virtual_repos_pkgs+="${!key}^" - done -done -virtual_repos_pkgs=${virtual_repos_pkgs%^} - -# Expand reclass and virsh network templates -for tp in "${RECLASS_CLUSTER_DIR}/all-mcp-arch-common/opnfv/"*.template \ - net_*.template; do - eval "cat <<-EOF - $(<"${tp}") - EOF" 2> /dev/null > "${tp%.template}" -done +# Expand jinja2 templates based on PDF data and env vars +export MCP_VCP MCP_JUMP_ARCH=$(uname -i) +do_templates_scenario "${STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \ + "${BASE_CONFIG_URI}" "${SCENARIO_DIR}" +do_templates_cluster "${STORAGE_DIR}" "${TARGET_LAB}" "${TARGET_POD}" \ + "${REPO_ROOT_PATH}" \ + "${SCENARIO_DIR}/defaults.yaml" \ + "${SCENARIO_DIR}/${DEPLOY_SCENARIO}.yaml" -# Convert Pharos-compatible PDF to reclass network definitions -if [ "${DEPLOY_TYPE}" = 'baremetal' ]; then - find "${RECLASS_CLUSTER_DIR}" -name '*.j2' | while read -r tp - do - if ! "${PHAROS_GEN_CONFIG_SCRIPT}" -y "${LOCAL_PDF}" \ - -j "${tp}" > "${tp%.j2}"; then - notify "[ERROR] Could not convert PDF to reclass network defs!\n" - exit 1 - fi - done -fi +# Determine additional data (e.g. jump bridge names) based on XDF +source "${DEPLOY_DIR}/xdf_data.sh" -# Determine 'admin', 'mgmt', 'private' and 'public' bridge names based on IDF -for ((i = 0; i < ${#BR_NAMES[@]}; i++)); do - br_jump=$(eval echo "\$parameters__param_opnfv_jump_bridge_${BR_NAMES[i]}") - if [ -n "${br_jump}" ] && [ "${br_jump}" != 'None' ]; then - OPNFV_BRIDGES[${i}]="${br_jump}" - fi -done -notify "[NOTE] Using bridges: ${OPNFV_BRIDGES[*]}\n" 2 +# Jumpserver prerequisites check +notify "[NOTE] Using bridges: ${OPNFV_BRIDGES[*]}" 2 +jumpserver_check_requirements "${virtual_nodes[*]}" "${OPNFV_BRIDGES[@]}" # Infra setup if [ ${DRY_RUN} -eq 1 ]; then - notify "[NOTE] Dry run, skipping all deployment tasks\n" 2 1>&2 + notify "[NOTE] Dry run, skipping all deployment tasks" 2 exit 0 elif [ ${USE_EXISTING_INFRA} -gt 0 ]; then - notify "[NOTE] Use existing infra\n" 2 1>&2 + notify "[NOTE] Use existing infra" 2 check_connection else - generate_ssh_key prepare_vms "${base_image}" "${STORAGE_DIR}" "${virtual_repos_pkgs}" \ "${virtual_nodes[@]}" create_networks "${OPNFV_BRIDGES[@]}" @@ -396,16 +300,16 @@ else check_connection fi if [ ${USE_EXISTING_INFRA} -lt 2 ]; then - wait_for 5 "./salt.sh ${LOCAL_PDF_RECLASS}" + wait_for 5 "./salt.sh ${STORAGE_DIR}/pod_config.yml ${virtual_nodes[*]}" fi # Openstack cluster setup set +x if [ ${INFRA_CREATION_ONLY} -eq 1 ] || [ ${NO_DEPLOY_ENVIRONMENT} -eq 1 ]; then - notify "[NOTE] Skip openstack cluster setup\n" 2 + notify "[NOTE] Skip openstack cluster setup" 2 else for state in "${cluster_states[@]}"; do - notify "[STATE] Applying state: ${state}\n" 2 + notify "[STATE] Applying state: ${state}" 2 # shellcheck disable=SC2086,2029 wait_for 5 "ssh ${SSH_OPTS} ${SSH_SALT} sudo \ CI_DEBUG=$CI_DEBUG ERASE_ENV=$ERASE_ENV \ diff --git a/docs/release/installation/installation.instruction.rst b/docs/release/installation/installation.instruction.rst index 6c0bf4cb8..acf4aac4b 100644 --- a/docs/release/installation/installation.instruction.rst +++ b/docs/release/installation/installation.instruction.rst @@ -6,7 +6,7 @@ Abstract ======== -This document describes how to install the Euphrates release of +This document describes how to install the Fraser release of OPNFV when using Fuel as a deployment tool, covering its usage, limitations, dependencies and required system resources. This is an unified documentation for both x86_64 and aarch64 @@ -18,14 +18,14 @@ Introduction ============ This document provides guidelines on how to install and -configure the Euphrates release of OPNFV when using Fuel as a +configure the Fraser release of OPNFV when using Fuel as a deployment tool, including required software and hardware configurations. Although the available installation options provide a high degree of freedom in how the system is set up, including architecture, services and features, etc., said permutations may not provide an OPNFV compliant reference architecture. This document provides a -step-by-step guide that results in an OPNFV Euphrates compliant +step-by-step guide that results in an OPNFV Fraser compliant deployment. The audience of this document is assumed to have good knowledge of @@ -35,7 +35,7 @@ networking and Unix/Linux administration. Preface ======= -Before starting the installation of the Euphrates release of +Before starting the installation of the Fraser release of OPNFV, using Fuel as a deployment tool, some planning must be done. @@ -69,7 +69,7 @@ Hardware Requirements for Virtual Deploys ========================================= The following minimum hardware requirements must be met for the virtual -installation of Euphrates using Fuel: +installation of Fraser using Fuel: +----------------------------+--------------------------------------------------------+ | **HW Aspect** | **Requirement** | @@ -83,7 +83,7 @@ installation of Euphrates using Fuel: +----------------------------+--------------------------------------------------------+ | **RAM** | Minimum 32GB/server (Depending on VNF work load) | +----------------------------+--------------------------------------------------------+ -| **Disk** | Minimum 100GB (SSD or SCSI (15krpm) highly recommended | +| **Disk** | Minimum 100GB (SSD or SCSI (15krpm) highly recommended)| +----------------------------+--------------------------------------------------------+ @@ -92,7 +92,7 @@ Hardware Requirements for Baremetal Deploys =========================================== The following minimum hardware requirements must be met for the baremetal -installation of Euphrates using Fuel: +installation of Fraser using Fuel: +-------------------------+------------------------------------------------------+ | **HW Aspect** | **Requirement** | @@ -173,7 +173,7 @@ the Fuel OPNFV reference platform. All the networks involved in the OPNFV infrastructure as well as the provider networks and the private tenant VLANs needs to be manually configured. -Manual configuration of the Euphrates hardware platform should +Manual configuration of the Fraser hardware platform should be carried out according to the `OPNFV Pharos Specification <https://wiki.opnfv.org/display/pharos/Pharos+Specification>`_. @@ -185,10 +185,10 @@ The Jumpserver node should be pre-provisioned with an operating system, according to the Pharos specification. Relevant network bridges should also be pre-configured (e.g. admin_br, mgmt_br, public_br). - - The admin bridge (admin_br) is mandatory for the baremetal nodes PXE booting during fuel installation. - - The management bridge (mgmt_br) is required for testing suites (e.g. functest/yardstick), it is - suggested to pre-configure it for debugging purposes. - - The public bridge (public_br) is also nice to have for debugging purposes, but not mandatory. +- The admin bridge (admin_br) is mandatory for the baremetal nodes PXE booting during Fuel installation. +- The management bridge (mgmt_br) is required for testing suites (e.g. functest/yardstick), it is + suggested to pre-configure it for debugging purposes. +- The public bridge (public_br) is also nice to have for debugging purposes, but not mandatory. The user running the deploy script on the Jumpserver should belong to "sudo" and "libvirt" groups, and have passwordless sudo access. @@ -207,6 +207,13 @@ The following example adds the groups to the user "jenkins" ... %jenkins ALL=(ALL) NOPASSWD:ALL +The folder containing the temporary deploy artifacts (/home/jenkins/tmpdir in the examples below) +needs to have mask 777 in order for libvirt to be able to use them. + +.. code-block:: bash + + $ mkdir -p -m 777 /home/jenkins/tmpdir + For an AArch64 Jumpserver, the "libvirt" minimum required version is 3.x, 3.5 or newer highly recommended. While not mandatory, upgrading the kernel and QEMU on the Jumpserver is also highly recommended (especially on AArch64 Jumpservers). @@ -229,15 +236,15 @@ create a new sources list file `/apt/sources.list.d/armband.list` with the follo Fuel@OPNFV has been validated by CI using the following distributions installed on the Jumpserver: - - CentOS 7 (recommended by Pharos specification); - - Ubuntu Xenial; +- CentOS 7 (recommended by Pharos specification); +- Ubuntu Xenial; -**NOTE**: The install script expects 'libvirt' to be already running on the Jumpserver.In case libvirt +**NOTE**: The install script expects 'libvirt' to be already running on the Jumpserver. In case libvirt packages are missing, the script will install them; but depending on the OS distribution, the user might have to start the 'libvirtd' service manually, then run the deploy script again. Therefore, it -is recommened to install libvirt-bin explicitly on the Jumpserver before the deployment. +is recommended to install libvirt-bin explicitly on the Jumpserver before the deployment. -**NOTE**: It is also recommened to install the newer kernel on the Jumpserver before the deployment. +**NOTE**: It is also recommended to install the newer kernel on the Jumpserver before the deployment. **NOTE**: The install script will automatically install the rest of required distro package dependencies on the Jumpserver, unless explicitly asked not to (via -P deploy arg). This includes @@ -262,7 +269,7 @@ a reclass model. This model provides the formula inputs to Salt, to make the dep automatic based on deployment scenario. The reclass model covers: - - Infrastucture node definition: Salt Master node (cfg01) and MaaS node (mas01) + - Infrastructure node definition: Salt Master node (cfg01) and MaaS node (mas01) - OpenStack node definition: Controller nodes (ctl01, ctl02, ctl03) and Compute nodes (cmp001, cmp002) - Infrastructure components to install (software packages, services etc.) - OpenStack components and services (rabbitmq, galera etc.), as well as all configuration for them @@ -302,17 +309,18 @@ In this figure there are examples of two virtual deploys: - Jumphost 2 has a mix of Linux and virsh bridges; When Linux bridge exists for a specified network, the deploy script will skip creating a virsh bridge for it -**Note**: A virtual network "mcpcontrol" is always created. For virtual deploys, "mcpcontrol" is also - used for Admin, leaving the PXE/Admin bridge unused. +**Note**: A virtual network "mcpcontrol" is always created for initial connection +of the VMs on Jumphost. Automatic Installation of a Baremetal POD ========================================= The baremetal installation process can be done by editing the information about -hardware and environment in the reclass files, or by using a Pod Descriptor File (PDF). -This file contains all the information about the hardware and network of the deployment -the will be fed to the reclass model during deployment. +hardware and environment in the reclass files, or by using the files Pod Descriptor +File (PDF) and Installer Descriptor File (IDF) as described in the OPNFV Pharos project. +These files contain all the information about the hardware and network of the deployment +that will be fed to the reclass model during deployment. The installation is done automatically with the deploy script, which will: @@ -355,8 +363,8 @@ In the baremetal deploy all bridges but "mcpcontrol" are Linux bridges. For the required to pre-configure at least the admin_br bridge for the PXE/Admin. For the targets, the bridges are created by the deploy script. -**Note**: A virtual network "mcpcontrol" is always created. For baremetal deploys, PXE bridge is used -for baremetal node provisioning, while "mcpcontrol" is used to provision the infrastructure VMs only. +**Note**: A virtual network "mcpcontrol" is always created for initial connection +of the VMs on Jumphost. Steps to Start the Automatic Deploy @@ -380,11 +388,11 @@ These steps are common both for virtual and baremetal deploys. $ git clone https://git.opnfv.org/armband $ cd armband -#. Checkout the Euphrates release +#. Checkout the Fraser release .. code-block:: bash - $ git checkout opnfv-5.0.2 + $ git checkout opnfv-6.0.0 #. Start the deploy script @@ -416,15 +424,14 @@ Examples .. code-block:: bash - $ ci/deploy.sh -b file:///home/jenkins/tmpdir/securedlab \ - -l ericsson \ - -p virtual_kvm \ - -s os-nosdn-nofeature-noha \ - -D \ - -S /home/jenkins/tmpdir |& tee deploy.log + $ ci/deploy.sh -l ericsson \ + -p virtual3 \ + -s os-nosdn-nofeature-noha \ + -D \ + -S /home/jenkins/tmpdir |& tee deploy.log - Once the deployment is complete, the OpenStack Dashboard, Horizon is - available at http://<controller VIP>:8078, e.g. http://10.16.0.101:8078. + Once the deployment is complete, the OpenStack Dashboard, Horizon, is + available at http://<controller VIP>:8078 The administrator credentials are **admin** / **opnfv_secret**. #. Baremetal deploy @@ -433,8 +440,7 @@ Examples .. code-block:: bash - $ ci/deploy.sh -b file:///home/jenkins/tmpdir/securedlab \ - -l lf \ + $ ci/deploy.sh -l lf \ -p pod2 \ -s os-nosdn-nofeature-ha \ -D \ @@ -446,15 +452,11 @@ Examples Fuel@OPNFV LF POD2 Network Layout - Once the deployment is complete, the SaltStack Deployment Documentation is - available at http://<Proxy VIP>:8090, e.g. http://172.30.10.103:8090. - An aarch64 deploy on pod5 from Arm lab .. code-block:: bash - $ ci/deploy.sh -b file:///home/jenkins/tmpdir/securedlab \ - -l arm \ + $ ci/deploy.sh -l arm \ -p pod5 \ -s os-nosdn-nofeature-ha \ -D \ @@ -466,24 +468,43 @@ Examples Fuel@OPNFV ARM POD5 Network Layout -Pod Descriptor Files -==================== + Once the deployment is complete, the SaltStack Deployment Documentation is + available at http://<proxy public VIP>:8090 + +**NOTE**: The deployment uses the OPNFV Pharos project as input (PDF and IDF files) +for hardware and network configuration of all current OPNFV PODs. +When deploying a new POD, one can pass the `-b` flag to the deploy script to override +the path for the labconfig directory structure containing the PDF and IDF. + + .. code-block:: bash + + $ ci/deploy.sh -b file://<absolute_path_to_labconfig> \ + -l <lab_name> \ + -p <pod_name> \ + -s <scenario> \ + -D \ + -S <tmp_folder> |& tee deploy.log + + - <absolute_path_to_labconfig> is the absolute path to a local directory, populated + similar to Pharos, i.e. PDF/IDF reside in <absolute_path_to_labconfig>/labs/<lab_name> + - <lab_name> is the same as the directory in the path above + - <pod_name> is the name used for the PDF (<pod_name>.yaml) and IDF (idf-<pod_name>.yaml) files + + + +Pod and Installer Descriptor Files +================================== Descriptor files provide the installer with an abstraction of the target pod with all its hardware characteristics and required parameters. This information is split into two different files: Pod Descriptor File (PDF) and Installer Descriptor File (IDF). - -The Pod Descriptor File is a hardware and network description of the pod +The Pod Descriptor File is a hardware description of the pod infrastructure. The information is modeled under a yaml structure. A reference file with the expected yaml structure is available at *mcp/config/labs/local/pod1.yaml* -A common network section describes all the internal and provider networks -assigned to the pod. Each network is expected to have a vlan tag, IP subnet and -attached interface on the boards. Untagged vlans shall be defined as "native". - The hardware description is arranged into a main "jumphost" node and a "nodes" set for all target boards. For each node the following characteristics are defined: @@ -491,25 +512,57 @@ are defined: - Node parameters including CPU features and total memory. - A list of available disks. - Remote management parameters. -- Network interfaces list including mac address, speed and advanced features. -- IP list of fixed IPs for the node - -**Note**: the fixed IPs are ignored by the MCP installer script and it will instead -assign based on the network ranges defined under the pod network configuration. +- Network interfaces list including mac address, speed, advanced features and name. +**Note**: The fixed IPs are ignored by the MCP installer script and it will instead +assign based on the network ranges defined in IDF. The Installer Descriptor File extends the PDF with pod related parameters required by the installer. This information may differ per each installer type -and it is not considered part of the pod infrastructure. Fuel installer relies -on the IDF model to map the networks to the bridges on the foundation node and -to setup all node NICs by defining the expected OS device name and bus address. +and it is not considered part of the pod infrastructure. +The IDF file must be named after the PDF with the prefix "idf-". A reference file with the expected +structure is available at *mcp/config/labs/local/idf-pod1.yaml* +The file follows a yaml structure and two sections "net_config" and "fuel" are expected. -The file follows a yaml structure and a "fuel" section is expected. Contents and -references must be aligned with the PDF file. The IDF file must be named after -the PDF with the prefix "idf-". A reference file with the expected structure -is available at *mcp/config/labs/local/idf-pod1.yaml* +The "net_config" section describes all the internal and provider networks +assigned to the pod. Each used network is expected to have a vlan tag, IP subnet and +attached interface on the boards. Untagged vlans shall be defined as "native". +The "fuel" section defines several sub-sections required by the Fuel installer: + +- jumphost: List of bridge names for each network on the Jumpserver. +- network: List of device name and bus address info of all the target nodes. + The order must be aligned with the order defined in PDF file. Fuel installer relies on the IDF model + to setup all node NICs by defining the expected device name and bus address. +- maas: Defines the target nodes commission timeout and deploy timeout. (optional) +- reclass: Defines compute parameter tuning, including huge pages, cpu pinning + and other DPDK settings. (optional) + +The following parameters can be defined in the IDF files under "reclass". Those value will +overwrite the default configuration values in Fuel repository: + +- nova_cpu_pinning: List of CPU cores nova will be pinned to. Currently disabled. +- compute_hugepages_size: Size of each persistent huge pages. Usual values are '2M' and '1G'. +- compute_hugepages_count: Total number of persistent huge pages. +- compute_hugepages_mount: Mount point to use for huge pages. +- compute_kernel_isolcpu: List of certain CPU cores that are isolated from Linux scheduler. +- compute_dpdk_driver: Kernel module to provide userspace I/O support. +- compute_ovs_pmd_cpu_mask: Hexadecimal mask of CPUs to run DPDK Poll-mode drivers. +- compute_ovs_dpdk_socket_mem: Set of amount huge pages in MB to be used by OVS-DPDK daemon + taken for each NUMA node. Set size is equal to NUMA nodes count, elements are divided by comma. +- compute_ovs_dpdk_lcore_mask: Hexadecimal mask of DPDK lcore parameter used to run DPDK processes. +- compute_ovs_memory_channels: Number of memory channels to be used. +- dpdk0_driver: NIC driver to use for physical network interface. +- dpdk0_n_rxq: Number of RX queues. + + +The full description of the PDF and IDF file structure are available as yaml schemas. +The schemas are defined as a git submodule in Fuel repository. Input files provided +to the installer will be validated against the schemas. + +- *mcp/scripts/pharos/config/pdf/pod1.schema.yaml* +- *mcp/scripts/pharos/config/pdf/idf-pod1.schema.yaml* ============= Release Notes @@ -529,7 +582,7 @@ OPNFV OpenStack -4) `OpenStack Ocata Release Artifacts <http://www.openstack.org/software/ocata>`_ +4) `OpenStack Pike Release Artifacts <http://www.openstack.org/software/pike>`_ 5) `OpenStack Documentation <http://docs.openstack.org>`_ OpenDaylight diff --git a/docs/release/release-notes/release-notes.rst b/docs/release/release-notes/release-notes.rst index 0052ab63f..5ee3bc0ff 100644 --- a/docs/release/release-notes/release-notes.rst +++ b/docs/release/release-notes/release-notes.rst @@ -6,7 +6,7 @@ Abstract ======== -This document compiles the release notes for the Euphrates release of +This document compiles the release notes for the Fraser release of OPNFV when using Fuel as a deployment tool. This is an unified documentation for both x86_64 and aarch64 architectures. All information is common for both architectures except when explicitly stated. @@ -17,9 +17,9 @@ Important Notes =============== These notes provides release information for the use of Fuel as deployment -tool for the Euphrates release of OPNFV. +tool for the Fraser release of OPNFV. -The goal of the Euphrates release and this Fuel-based deployment process is +The goal of the Fraser release and this Fuel-based deployment process is to establish a lab ready platform accelerating further development of the OPNFV infrastructure. @@ -29,7 +29,7 @@ Carefully follow the installation-instructions. Summary ======= -For Euphrates, the typical use of Fuel as an OpenStack installer is +For Fraser, the typical use of Fuel as an OpenStack installer is supplemented with OPNFV unique components such as: - `OpenDaylight <http://www.opendaylight.org/software>`_ @@ -37,7 +37,7 @@ supplemented with OPNFV unique components such as: As well as OPNFV-unique configurations of the Hardware and Software stack. -This Euphrates artifact provides Fuel as the deployment stage tool in the +This Fraser artifact provides Fuel as the deployment stage tool in the OPNFV CI pipeline including: - Documentation built by Jenkins @@ -48,10 +48,10 @@ OPNFV CI pipeline including: - installation instructions -- Automated deployment of Euphrates with running on bare metal or a nested +- Automated deployment of Fraser with running on baremetal or a nested hypervisor environment (KVM) -- Automated validation of the Euphrates deployment +- Automated validation of the Fraser deployment ============ Release Data @@ -61,22 +61,23 @@ Release Data | **Project** | fuel/armband | | | | +--------------------------------------+--------------------------------------+ -| **Repo/tag** | opnfv-5.1.0 | +| **Repo/tag** | opnfv-6.0.0 | | | | +--------------------------------------+--------------------------------------+ -| **Release designation** | Euphrates 5.1 | +| **Release designation** | Fraser 6.0 | | | | +--------------------------------------+--------------------------------------+ -| **Release date** | December 15 2017 | +| **Release date** | April 27 2018 | | | | +--------------------------------------+--------------------------------------+ -| **Purpose of the delivery** | Euphrates alignment to Released | -| | MCP 1.0 baseline + features and | +| **Purpose of the delivery** | Fraser alignment to Released | +| | MCP baseline + features and | | | bug-fixes for the following | | | feaures: | | | | | | - Open vSwitch for NFV | | | - OpenDaylight | +| | - DPDK | +--------------------------------------+--------------------------------------+ Version Change @@ -84,25 +85,25 @@ Version Change Module Version Changes ---------------------- -This is the Euphrates 5.1 release. +This is the Fraser 6.0 release. It is based on following upstream versions: -- MCP 1.0 Base Release +- MCP Base Release -- OpenStack Ocata Release +- OpenStack Pike Release -- OpenDaylight +- OpenDaylight Oxygen Release Document Changes ---------------- -This is the Euphrates 5.1 release. +This is the Fraser 6.0 release. It comes with the following documentation: -- `Installation instructions <http://docs.opnfv.org/en/stable-euphrates/submodules/armband/docs/release/installation/installation.instruction.html>`_ +- :ref:`fuel-release-installation-label` - Release notes (This document) -- `User guide <http://docs.opnfv.org/en/stable-euphrates/submodules/fuel/docs/release/userguide/userguide.html>`_ +- :ref:`fuel-release-userguide-label` Reason for Version ================== @@ -111,14 +112,14 @@ Feature Additions ----------------- **JIRA TICKETS:** -`Euphrates 5.1 new features <https://jira.opnfv.org/issues/?filter=12114>`_ +`Fraser 6.0 new features <https://jira.opnfv.org/issues/?filter=12302>`_ Bug Corrections --------------- **JIRA TICKETS:** -`Euphrates 5.1 bug fixes <https://jira.opnfv.org/issues/?filter=12115>`_ +`Fraser 6.0 bug fixes <https://jira.opnfv.org/issues/?filter=12303>`_ (Also See respective Integrated feature project's bug tracking) @@ -135,12 +136,11 @@ Software Deliverables Documentation Deliverables -------------------------- -- `Installation instructions <http://docs.opnfv.org/en/stable-euphrates/submodules/armband/docs/release/installation/installation.instruction.html>`_ +- :ref:`fuel-release-installation-label` - Release notes (This document) -- `User guide <http://docs.opnfv.org/en/stable-euphrates/submodules/fuel/docs/release/userguide/userguide.html>`_ - +- :ref:`fuel-release-userguide-label` ========================================= Known Limitations, Issues and Workarounds @@ -163,7 +163,7 @@ Known Issues **JIRA TICKETS:** -`Known issues <https://jira.opnfv.org/issues/?filter=12116>`_ +`Known issues <https://jira.opnfv.org/issues/?filter=12304>`_ (Also See respective Integrated feature project's bug tracking) @@ -179,13 +179,13 @@ Workarounds ============ Test Results ============ -The Euphrates 5.1 release with the Fuel deployment tool has undergone QA test +The Fraser 6.0 release with the Fuel deployment tool has undergone QA test runs, see separate test results. ========== References ========== -For more information on the OPNFV Euphrates 5.1 release, please see: +For more information on the OPNFV Fraser 6.0 release, please see: OPNFV ===== @@ -197,7 +197,7 @@ OPNFV OpenStack ========= -4) `OpenStack Ocata Release Artifacts <http://www.openstack.org/software/ocata>`_ +4) `OpenStack Pike Release Artifacts <http://www.openstack.org/software/pike>`_ 5) `OpenStack Documentation <http://docs.openstack.org>`_ diff --git a/docs/release/scenarios/os-nosdn-ovs-ha/os-nosdn-ovs-ha.rst b/docs/release/scenarios/os-nosdn-ovs-ha/os-nosdn-ovs-ha.rst index 5e30ab542..c51a5f5b8 100644 --- a/docs/release/scenarios/os-nosdn-ovs-ha/os-nosdn-ovs-ha.rst +++ b/docs/release/scenarios/os-nosdn-ovs-ha/os-nosdn-ovs-ha.rst @@ -2,14 +2,14 @@ .. http://creativecommons.org/licenses/by/4.0 .. (c)2017 Mirantis Inc., Enea Software AB and others -This document provides scenario level details for Euphrates 5.0 of +This document provides scenario level details for Fraser 6.0 of deployment with no SDN controller and no extra features enabled. ============ Introduction ============ -This scenario is used primarily to validate and deploy a Ocata OpenStack +This scenario is used primarily to validate and deploy a Pike OpenStack deployment without any NFV features or SDN controller enabled. Scenario components and composition @@ -38,5 +38,5 @@ None References ========== -For more information on the OPNFV Euphrates release, please visit -http://www.opnfv.org/euphrates +For more information on the OPNFV Fraser release, please visit +http://www.opnfv.org/software diff --git a/docs/release/scenarios/os-nosdn-ovs-noha/os-nosdn-ovs-noha.rst b/docs/release/scenarios/os-nosdn-ovs-noha/os-nosdn-ovs-noha.rst index 7ac4e111a..99c4de041 100644 --- a/docs/release/scenarios/os-nosdn-ovs-noha/os-nosdn-ovs-noha.rst +++ b/docs/release/scenarios/os-nosdn-ovs-noha/os-nosdn-ovs-noha.rst @@ -2,14 +2,14 @@ .. http://creativecommons.org/licenses/by/4.0 .. (c) 2017 Mirantis Inc., Enea Software AB and others -This document provides scenario level details for Euphrates 5.0 of +This document provides scenario level details for Fraser 6.0 of deployment with no SDN controller and no extra features enabled. ============ Introduction ============ -This scenario is used primarily to validate and deploy a Ocata OpenStack +This scenario is used primarily to validate and deploy a Pike OpenStack deployment without any NFV features or SDN controller enabled. @@ -24,7 +24,7 @@ the DPDK-enabled Open vSwitch component. Scenario usage overview ======================= -Simply deploy this scenario by using the os-nosdn-ovs-ha.yaml deploy +Simply deploy this scenario by using the os-nosdn-ovs-noha.yaml deploy settings file. @@ -36,6 +36,5 @@ Tested on virtual deploy only. References ========== -For more information on the OPNFV Euphrates release, please visit -http://www.opnfv.org/euphrates - +For more information on the OPNFV Fraser release, please visit +http://www.opnfv.org/software diff --git a/docs/release/userguide/userguide.rst b/docs/release/userguide/userguide.rst index 2b46a84ac..fd9dfa736 100644 --- a/docs/release/userguide/userguide.rst +++ b/docs/release/userguide/userguide.rst @@ -6,9 +6,9 @@ Abstract ======== -This document contains details about how to use OPNFV Fuel - Euphrates +This document contains details about how to use OPNFV Fuel - Fraser release - after it was deployed. For details on how to deploy check the -installation instructions in the :ref:`references` section. +installation instructions in the :ref:`fuel_userguide_references` section. This is an unified documentation for both x86_64 and aarch64 architectures. All information is common for both architectures @@ -22,26 +22,25 @@ Network Overview Fuel uses several networks to deploy and administer the cloud: -+------------------+-------------------+---------------------------------------------------------+ -| Network name | Deploy Type | Description | -| | | | -+==================+===================+=========================================================+ -| **PXE/ADMIN** | baremetal only | Used for booting the nodes via PXE | -+------------------+-------------------+---------------------------------------------------------+ -| **MCPCONTROL** | baremetal & | Used to provision the infrastructure VMs (Salt & MaaS). | -| | virtual | On virtual deploys, it is used for Admin too (on target | -| | | VMs) leaving the PXE/Admin bridge unused | -+------------------+-------------------+---------------------------------------------------------+ -| **Mgmt** | baremetal & | Used for internal communication between | -| | virtual | OpenStack components | -+------------------+-------------------+---------------------------------------------------------+ -| **Internal** | baremetal & | Used for VM data communication within the | -| | virtual | cloud deployment | -+------------------+-------------------+---------------------------------------------------------+ -| **Public** | baremetal & | Used to provide Virtual IPs for public endpoints | -| | virtual | that are used to connect to OpenStack services APIs. | -| | | Used by Virtual machines to access the Internet | -+------------------+-------------------+---------------------------------------------------------+ ++------------------+---------------------------------------------------------+ +| Network name | Description | +| | | ++==================+=========================================================+ +| **PXE/ADMIN** | Used for booting the nodes via PXE and/or Salt | +| | control network | ++------------------+---------------------------------------------------------+ +| **MCPCONTROL** | Used to provision the infrastructure VMs (Salt & MaaS) | ++------------------+---------------------------------------------------------+ +| **Mgmt** | Used for internal communication between | +| | OpenStack components | ++------------------+---------------------------------------------------------+ +| **Internal** | Used for VM data communication within the | +| | cloud deployment | ++------------------+---------------------------------------------------------+ +| **Public** | Used to provide Virtual IPs for public endpoints | +| | that are used to connect to OpenStack services APIs. | +| | Used by Virtual machines to access the Internet | ++------------------+---------------------------------------------------------+ These networks - except mcpcontrol - can be linux bridges configured before the deploy on the @@ -60,27 +59,21 @@ Accessing the Cloud Access to any component of the deployed cloud is done from Jumpserver to user *ubuntu* with ssh key */var/lib/opnfv/mcp.rsa*. The example below is a connection to Salt master. - .. code-block:: bash + .. code-block:: bash - $ ssh -o StrictHostKeyChecking=no -i /var/lib/opnfv/mcp.rsa -l ubuntu 10.20.0.2 + $ ssh -o StrictHostKeyChecking=no -i /var/lib/opnfv/mcp.rsa -l ubuntu 10.20.0.2 **Note**: The Salt master IP is not hard set, it is configurable via INSTALLER_IP during deployment +Logging in to cluster nodes is possible from the Jumpserver and from Salt master. On the Salt master +cluster hostnames can be used instead of IP addresses: -The Fuel baremetal deploy has a Virtualized Control Plane (VCP) which means that the controller -services are installed in VMs on the baremetal targets (kvm servers). These VMs can also be -accessed with virsh console: user *opnfv*, password *opnfv_secret*. This method does not apply -to infrastructure VMs (Salt master and MaaS). + .. code-block:: bash -The example below is a connection to a controller VM. The connection is made from the baremetal -server kvm01. + $ sudo -i + $ ssh -i mcp.rsa ubuntu@ctl01 - .. code-block:: bash - - $ ssh -o StrictHostKeyChecking=no -i /var/lib/opnfv/mcp.rsa -l ubuntu x.y.z.141 - ubuntu@kvm01:~$ virsh console ctl01 - -User *ubuntu* has sudo rights. User *opnfv* has sudo rights only on aarch64 deploys. +User *ubuntu* has sudo rights. ============================= @@ -96,34 +89,34 @@ For example tell salt to execute a ping to 8.8.8.8 on all the nodes. .. figure:: img/saltstack.png Complex filters can be done to the target like compound queries or node roles. -For more information about Salt see the :ref:`references` section. +For more information about Salt see the :ref:`fuel_userguide_references` section. Some examples are listed below. Note that these commands are issued from Salt master -with *root* user. +as *root* user. #. View the IPs of all the components - .. code-block:: bash + .. code-block:: bash - root@cfg01:~$ salt "*" network.ip_addrs - cfg01.baremetal-mcp-ocata-odl-ha.local: + root@cfg01:~$ salt "*" network.ip_addrs + cfg01.mcp-pike-odl-ha.local: - 10.20.0.2 - 172.16.10.100 - mas01.baremetal-mcp-ocata-odl-ha.local: + mas01.mcp-pike-odl-ha.local: - 10.20.0.3 - 172.16.10.3 - 192.168.11.3 - ......................... + ......................... #. View the interfaces of all the components and put the output in a file with yaml format - .. code-block:: bash + .. code-block:: bash - root@cfg01:~$ salt "*" network.interfaces --out yaml --output-file interfaces.yaml - root@cfg01:~# cat interfaces.yaml - cfg01.baremetal-mcp-ocata-odl-ha.local: + root@cfg01:~$ salt "*" network.interfaces --out yaml --output-file interfaces.yaml + root@cfg01:~# cat interfaces.yaml + cfg01.mcp-pike-odl-ha.local: enp1s0: hwaddr: 52:54:00:72:77:12 inet: @@ -136,77 +129,77 @@ with *root* user. prefixlen: '64' scope: link up: true - ......................... + ......................... #. View installed packages in MaaS node - .. code-block:: bash + .. code-block:: bash - root@cfg01:~# salt "mas*" pkg.list_pkgs - mas01.baremetal-mcp-ocata-odl-ha.local: - ---------- - accountsservice: - 0.6.40-2ubuntu11.3 - acl: - 2.2.52-3 - acpid: - 1:2.0.26-1ubuntu2 - adduser: - 3.113+nmu3ubuntu4 - anerd: - 1 - ......................... + root@cfg01:~# salt "mas*" pkg.list_pkgs + mas01.mcp-pike-odl-ha.local: + ---------- + accountsservice: + 0.6.40-2ubuntu11.3 + acl: + 2.2.52-3 + acpid: + 1:2.0.26-1ubuntu2 + adduser: + 3.113+nmu3ubuntu4 + anerd: + 1 + ......................... #. Execute any linux command on all nodes (list the content of */var/log* in this example) - .. code-block:: bash + .. code-block:: bash - root@cfg01:~# salt "*" cmd.run 'ls /var/log' - cfg01.baremetal-mcp-ocata-odl-ha.local: - alternatives.log - apt - auth.log - boot.log - btmp - cloud-init-output.log - cloud-init.log - ......................... + root@cfg01:~# salt "*" cmd.run 'ls /var/log' + cfg01.mcp-pike-odl-ha.local: + alternatives.log + apt + auth.log + boot.log + btmp + cloud-init-output.log + cloud-init.log + ......................... #. Execute any linux command on nodes using compound queries filter - .. code-block:: bash + .. code-block:: bash - root@cfg01:~# salt -C '* and cfg01*' cmd.run 'ls /var/log' - cfg01.baremetal-mcp-ocata-odl-ha.local: - alternatives.log - apt - auth.log - boot.log - btmp - cloud-init-output.log - cloud-init.log - ......................... + root@cfg01:~# salt -C '* and cfg01*' cmd.run 'ls /var/log' + cfg01.mcp-pike-odl-ha.local: + alternatives.log + apt + auth.log + boot.log + btmp + cloud-init-output.log + cloud-init.log + ......................... #. Execute any linux command on nodes using role filter - .. code-block:: bash + .. code-block:: bash - root@cfg01:~# salt -I 'nova:compute' cmd.run 'ls /var/log' - cmp001.baremetal-mcp-ocata-odl-ha.local: - alternatives.log - apache2 - apt - auth.log - btmp - ceilometer - cinder - cloud-init-output.log - cloud-init.log - ......................... + root@cfg01:~# salt -I 'nova:compute' cmd.run 'ls /var/log' + cmp001.mcp-pike-odl-ha.local: + alternatives.log + apache2 + apt + auth.log + btmp + ceilometer + cinder + cloud-init-output.log + cloud-init.log + ......................... @@ -217,19 +210,19 @@ Accessing Openstack Once the deployment is complete, Openstack CLI is accessible from controller VMs (ctl01..03). Openstack credentials are at */root/keystonercv3*. - .. code-block:: bash + .. code-block:: bash - root@ctl01:~# source keystonercv3 - root@ctl01:~# openstack image list - +--------------------------------------+-----------------------------------------------+--------+ - | ID | Name | Status | - +======================================+===============================================+========+ - | 152930bf-5fd5-49c2-b3a1-cae14973f35f | CirrosImage | active | - | 7b99a779-78e4-45f3-9905-64ae453e3dcb | Ubuntu16.04 | active | - +--------------------------------------+-----------------------------------------------+--------+ + root@ctl01:~# source keystonercv3 + root@ctl01:~# openstack image list + +--------------------------------------+-----------------------------------------------+--------+ + | ID | Name | Status | + +======================================+===============================================+========+ + | 152930bf-5fd5-49c2-b3a1-cae14973f35f | CirrosImage | active | + | 7b99a779-78e4-45f3-9905-64ae453e3dcb | Ubuntu16.04 | active | + +--------------------------------------+-----------------------------------------------+--------+ -The OpenStack Dashboard, Horizon is available at http://<controller VIP>:8078, e.g. http://10.16.0.101:8078. +The OpenStack Dashboard, Horizon, is available at http://<proxy public VIP> The administrator credentials are *admin*/*opnfv_secret*. .. figure:: img/horizon_login.png @@ -239,19 +232,78 @@ A full list of IPs/services is available at <proxy public VIP>:8090 for baremeta .. figure:: img/salt_services_ip.png -For Virtual deploys, the most commonly used IPs are in the table below. +============================== +Guest Operating System Support +============================== + +There are a number of possibilities regarding the guest operating systems which can be spawned +on the nodes. The current system spawns virtual machines for VCP VMs on the KVM nodes and VMs +requested by users in OpenStack compute nodes. Currently the system supports the following +UEFI-images for the guests: + ++------------------+-------------------+------------------+ +| OS name | x86_64 status | aarch64 status | ++==================+===================+==================+ +| Ubuntu 17.10 | untested | Full support | ++------------------+-------------------+------------------+ +| Ubuntu 16.04 | Full support | Full support | ++------------------+-------------------+------------------+ +| Ubuntu 14.04 | untested | Full support | ++------------------+-------------------+------------------+ +| Fedora atomic 27 | untested | Not supported | ++------------------+-------------------+------------------+ +| Fedora cloud 27 | untested | Not supported | ++------------------+-------------------+------------------+ +| Debian | untested | Full support | ++------------------+-------------------+------------------+ +| Centos 7 | untested | Not supported | ++------------------+-------------------+------------------+ +| Cirros 0.3.5 | Full support | Full support | ++------------------+-------------------+------------------+ +| Cirros 0.4.0 | Full support | Full support | ++------------------+-------------------+------------------+ + + +The above table covers only UEFI image and implies OVMF/AAVMF firmware on the host. An x86 deployment +also supports non-UEFI images, however that choice is up to the underlying hardware and the administrator +to make. + +The images for the above operating systems can be found in their respective websites. + +=================== +Openstack Endpoints +=================== + +For each Openstack service three endpoints are created: admin, internal and public. + + .. code-block:: bash -+-----------+--------------+---------------+ -| Component | IP | Default value | -+===========+==============+===============+ -| gtw01 | x.y.z.110 | 172.16.10.110 | -+-----------+--------------+---------------+ -| ctl01 | x.y.z.100 | 172.16.10.100 | -+-----------+--------------+---------------+ -| cmp001 | x.y.z.105 | 172.16.10.105 | -+-----------+--------------+---------------+ -| cmp002 | x.y.z.106 | 172.16.10.106 | -+-----------+--------------+---------------+ + ubuntu@ctl01:~$ openstack endpoint list --service keystone + +----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------+ + | ID | Region | Service Name | Service Type | Enabled | Interface | URL | + +----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------+ + | 008fec57922b4e9e8bf02c770039ae77 | RegionOne | keystone | identity | True | internal | http://172.16.10.26:5000/v3 | + | 1a1f3c3340484bda9ef7e193f50599e6 | RegionOne | keystone | identity | True | admin | http://172.16.10.26:35357/v3 | + | b0a47d42d0b6491b995d7e6230395de8 | RegionOne | keystone | identity | True | public | https://10.0.15.2:5000/v3 | + +----------------------------------+-----------+--------------+--------------+---------+-----------+------------------------------+ + +MCP sets up all Openstack services to talk to each other over unencrypted +connections on the internal management network. All admin/internal endpoints use +plain http, while the public endpoints are https connections terminated via nginx +at the VCP proxy VMs. + +To access the public endpoints an SSL certificate has to be provided. For +convenience, the installation script will copy the required certificate into +to the cfg01 node at /etc/ssl/certs/os_cacert. + +Copy the certificate from the cfg01 node to the client that will access the https +endpoints and place it under /etc/ssl/certs. The SSL connection will be established +automatically after. + + .. code-block:: bash + + $ ssh -o StrictHostKeyChecking=no -i /var/lib/opnfv/mcp.rsa -l ubuntu 10.20.0.2 \ + "cat /etc/ssl/certs/os_cacert" | sudo tee /etc/ssl/certs/os_cacert ============================= @@ -274,36 +326,36 @@ After the installation is done, a webbrowser on the host can be used to view the #. Create a new directory at any location - .. code-block:: bash + .. code-block:: bash - $ mkdir -p modeler + $ mkdir -p modeler #. Place fuel repo in the above directory - .. code-block:: bash + .. code-block:: bash - $ cd modeler - $ git clone https://gerrit.opnfv.org/gerrit/fuel && cd fuel + $ cd modeler + $ git clone https://gerrit.opnfv.org/gerrit/fuel && cd fuel #. Create a container and mount the above host directory - .. code-block:: bash + .. code-block:: bash - $ docker run --privileged -it -v <absolute_path>/modeler:/host ubuntu bash + $ docker run --privileged -it -v <absolute_path>/modeler:/host ubuntu bash #. Install all the required packages inside the container. - .. code-block:: bash + .. code-block:: bash - $ apt-get update - $ apt-get install -y npm nodejs - $ npm install -g reclass-doc - $ cd /host/fuel/mcp/reclass - $ ln -s /usr/bin/nodejs /usr/bin/node - $ reclass-doc --output /host /host/fuel/mcp/reclass + $ apt-get update + $ apt-get install -y npm nodejs + $ npm install -g reclass-doc + $ cd /host/fuel/mcp/reclass + $ ln -s /usr/bin/nodejs /usr/bin/node + $ reclass-doc --output /host /host/fuel/mcp/reclass #. View the results from the host by using a browser. The file to open should be now at modeler/index.html @@ -311,14 +363,12 @@ After the installation is done, a webbrowser on the host can be used to view the .. figure:: img/reclass_doc.png -.. _references: +.. _fuel_userguide_references: ========== References ========== -1) `Installation instructions <http://docs.opnfv.org/en/stable-euphrates/submodules/fuel/docs/release/installation/installation.instruction.html>`_ +1) :ref:`fuel-release-installation-label` 2) `Saltstack Documentation <https://docs.saltstack.com/en/latest/topics>`_ -3) `Saltstack Formulas <http://salt-formulas.readthedocs.io/en/latest/develop/overview-reclass.html>`_ - - +3) `Saltstack Formulas <http://salt-formulas.readthedocs.io/en/latest/>`_ 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() }} |