X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=env%2Flib%2Fcommon.sh;h=2cd93d613c2cf1f455a718fa7a852af919578a2a;hb=e554714c7123d5f2244456cf9afed652933fe7b2;hp=52d4f616f92523411c498838a7179f377681dbec;hpb=b82ae6975d26581802457364993bee061350ae32;p=icn.git diff --git a/env/lib/common.sh b/env/lib/common.sh index 52d4f61..2cd93d6 100755 --- a/env/lib/common.sh +++ b/env/lib/common.sh @@ -1,49 +1,88 @@ -#!/bin/bash - -#supported OS version -UBUNTU_BIONIC=${UBUNTU_BIONIC:-Ubuntu 18.04.2 LTS} - -#offline mode variable -DOWNLOAD_PATH=${DOWNLOAD_PATH:-/opt/icn} -LOCAL_APT_REPO=${LOCAL_APT_REPO:-$DOWNLOAD_PATH/apt} -PIP_CACHE_DIR=${PIP_CACHE_DIR:-$DOWNLOAD_PATH/pip-cache-dir} -BUILD_DIR=${BUILD_DIR:-$DOWNLOAD_PATH/build-dir} -CONTAINER_IMAGES_DIR=${CONTAINER_IMAGES_DIR:-$OFFLINE_DOWNLOAD_PATH/docker-dir} - -#set variables -#Todo include over all variables here -KUBE_VERSION=${KUBE_VERSION:-"v1.15.0"} -POD_NETWORK_CIDR=${POD_NETWORK_CIDR:-"10.244.0.0/16"} -PODMAN_CNI_CONFLIST=${PODMAN_CNI_CONFLIST:-"https://raw.githubusercontent.com/containers/libpod/v1.4.4/cni/87-podman-bridge.conflist"} - -#Bootstrap K8s cluster -BS_DHCP_INTERFACE=${BS_DHCP_INTERFACE:-} -BS_DHCP_INTERFACE_IP=${BS_DHCP_INTERFACE_IP:-} -BS_DHCP_DIR=${BS_DHCP_DIR:-$DOWNLOAD_PATH/dhcp} - -#User Provider Network configuration -PROVIDER_NETWORK_GATEWAY=${PROVIDER_NETWORK_GATEWAY:-} -PROVIDER_NETWORK_DNS=${PROVIDER_NETWORK_DNS:-} - -#Ironic variables -IRONIC_IMAGE=${IRONIC_IMAGE:-"quay.io/metal3-io/ironic:master"} -IRONIC_INSPECTOR_IMAGE=${IRONIC_INSPECTOR_IMAGE:-"quay.io/metal3-io/ironic-inspector"} -IRONIC_BAREMETAL_IMAGE=${IRONIC_BAREMETAL_IMAGE:-"quay.io/metal3-io/baremetal-operator:master"} -IRONIC_BAREMETAL_SOCAT_IMAGE=${IRONIC_BAREMETAL_SOCAT_IMAGE:-"alpine/socat:latest"} +#!/usr/bin/env bash +set -eu -o pipefail IRONIC_DATA_DIR=${IRONIC_DATA_DIR:-"/opt/ironic"} +NODES_FILE=${NODES_FILE:-"${IRONIC_DATA_DIR}/nodes.json"} #IRONIC_PROVISIONING_INTERFACE is required to be provisioning, don't change it IRONIC_INTERFACE=${IRONIC_INTERFACE:-} IRONIC_PROVISIONING_INTERFACE=${IRONIC_PROVISIONING_INTERFACE:-"provisioning"} -IRONIC_IPMI_INTERFACE=${IRONIC_IPMI_INTERFACE:-} IRONIC_PROVISIONING_INTERFACE_IP=${IRONIC_PROVISIONING_INTERFACE_IP:-"172.22.0.1"} -IRONIC_IPMI_INTERFACE_IP=${IRONIC_IPMI_INTERFACE_IP:-} -BM_IMAGE_URL=${BM_IMAGE_URL:-"https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img"} -BM_IMAGE=${BM_IMAGE:-"bionic-server-cloudimg-amd64.img"} +BM_IMAGE_URL=${BM_IMAGE_URL:-"https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img"} +BM_IMAGE=${BM_IMAGE:-"focal-server-cloudimg-amd64.img"} -#Todo change into nodes list in json pattern -COMPUTE_NODE_FQDN=${COMPUTE_NODE_FQDN:-".akraino.org"} -COMPUTE_NODE_PASSWORD=${COMPUTE_NODE_PASSWORD:-"mypasswd"} +#Baremetal operator repository URL +BMOREPO="${BMOREPO:-https://github.com/metal3-io/baremetal-operator.git}" +#Path to clone the baremetal operator repo +BMOPATH="/opt/src/github.com/metal3-io/baremetal-operator" +#Bare Metal Operator version to use +# If changing this, the value in deploy/ironic/icn/kustomization.yaml +# must also be changed +BMO_VERSION="capm3-v0.5.4" + +#KuD repository URL +KUDREPO="${KUDREPO:-https://github.com/onap/multicloud-k8s.git}" +#Path to clone the KuD repo +KUDPATH="/opt/src/github.com/onap/multicloud-k8s" +#KuD version to use +KUD_VERSION="8157bf63753839ce4e9006978816fad3f63ca2de" + +#EMCO repository URL +EMCOREPO="${EMCOREPO:-https://gitlab.com/project-emco/core/emco-base.git}" +#Path to clone the EMCO repo +EMCOPATH="/opt/src/emco-base" +#EMCO version to use +EMCO_VERSION="v21.12" + +#Discard existing repo directory +FORCE_REPO_UPDATE="${FORCE_REPO_UPDATE:-false}" + +# The kustomize version to use +KUSTOMIZE_VERSION="v4.5.2" + +#Cluster API version to use +CAPI_VERSION="v0.4.7" + +#Cluster API version to use +CAPM3_VERSION="v0.5.4" + +#The flux version to use +FLUX_VERSION="0.27.0" + +#The sops version to use +SOPS_VERSION="v3.7.1" + +#Cert-Manager version to use +CERT_MANAGER_VERSION="v1.7.1" + +#CNI versions to use in cluster chart +CALICO_VERSION="v3.22.0" +FLANNEL_VERSION="v0.16.3" + +#Kata version to use +KATA_VERSION="2.3.2" +KATA_WEBHOOK_VERSION="2.3.2" + +#The kubectl version to install when KuD is not used to deploy the +#jump server K8s cluster +KUBECTL_VERSION="v1.20.7" + +#The yq version to use +YQ_VERSION="v4.20.1" + +#Istio repository URL +ISTIOREPO="${ISTIOREPO:-https://github.com/istio/istio.git}" +#Path to clone the Istio repo +ISTIOPATH="/opt/src/istio" +#Istio version to use +ISTIO_VERSION="1.10.3" + +#Addon versions +CDI_VERSION="v1.44.1" +CPU_MANAGER_VERSION="v1.4.1" +KUBEVIRT_VERSION="v0.50.0" +MULTUS_VERSION="v3.8" +NODUS_VERSION="dd9985e5be010b764b324b57c1afe985a59abf68" +QAT_VERSION="v0.23.0" #refered from onap function call_api { @@ -77,23 +116,214 @@ function call_api { } function list_nodes { - NODES_FILE="${IRONIC_DATA_DIR}/nodes.json" + if [ ! -f "$NODES_FILE" ]; then + exit 1 + fi + + # The boot MAC address must be specified when a port is included + # in the IPMI driver address (i.e when using the VirtualBMC + # controller). Note that the below is a bit of a hack as it only + # checks the first entry in NODES_FILE for the port. + if cat "$NODES_FILE" | + jq -r '.nodes[0].ipmi_driver_info.address' | grep -c ':[0-9]\+$' >/dev/null; then + BOOT_LINK=$(cat "$NODES_FILE" | + jq -r '.nodes[0].net.links | map(.id=="provisioning_nic") | index(true)') + cat "$NODES_FILE" | + jq -r --argjson BOOT_LINK $BOOT_LINK '.nodes[] | [ + .name, + .ipmi_driver_info.username, + .ipmi_driver_info.password, + .ipmi_driver_info.address, + .net.links[$BOOT_LINK].ethernet_mac_address, + .os.username, + .os.password, + .os.image_name + ] | @csv' | + sed 's/"//g' + else + cat "$NODES_FILE" | + jq -r '.nodes[] | [ + .name, + .ipmi_driver_info.username, + .ipmi_driver_info.password, + .ipmi_driver_info.address, + "", + .os.username, + .os.password, + .os.image_name + ] | @csv' | + sed 's/"//g' + fi +} + +function node_userdata { + name="$1" + username="$2" + password="$3" + COMPUTE_NODE_FQDN="$name.akraino.icn.org" - if [ ! -f $IRONIC_DATA_DIR/nodes.json ]; then + # validate that the user isn't expecting the deprecated + # COMPUTE_NODE_PASSWORD to be used + if [ "$password" != "${COMPUTE_NODE_PASSWORD:-$password}" ]; then + cat < ${BM_IMAGE}.md5sum + fi + popd + fi +}