From: Kuralamudhan Ramakrishnan Date: Tue, 15 Feb 2022 18:00:05 +0000 (+0000) Subject: Merge "Replace ipmi with redfish-virtualmedia in VM site" X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=commitdiff_plain;h=790dc20efb05a3113b97800926a80753e9a89e98;hp=038ef9e91d14bb90a81a6273a461a6472e18b408;p=icn.git Merge "Replace ipmi with redfish-virtualmedia in VM site" --- diff --git a/Makefile b/Makefile index 096fd4f..b5a8ea7 100644 --- a/Makefile +++ b/Makefile @@ -1,75 +1,95 @@ SHELL:=/bin/bash -BMDIR:=$(CURDIR)/env/metal3 -KUD_PATH:=$(CURDIR)/deploy/kud -SDWAN_VERIFIER_PATH:=$(CURDIR)/sdwan/test -BOOTLOADER_ENV:=$(CURDIR)/env/ubuntu/bootloader-env help: @echo " Targets:" - @echo " test -- run unit tests" @echo " jump_server -- install jump server into this machine" - @echo " cluster -- provision cluster(s)" - @echo " verifier -- run verifier tests for CI & CD logs" @echo " unit -- run the unit tests" + @echo " verifier -- run verifier tests for CI & CD logs" + @echo " vm_cluster -- deploy VM compute cluster" + @echo " pod11_cluster -- deploy pod11 compute cluster" @echo " help -- this help output" install: jump_server -jump_server: package_prerequisite \ - kud_bm_deploy_mini \ - bmo_install \ - capi_install \ - flux_install +# The jump server -clean_jump_server: bmo_clean_host \ - kud_bm_reset \ - clean_packages +jump_server: management_cluster \ + tools \ + ironic_bridge \ + controllers -package_prerequisite: - pushd $(BMDIR) && ./01_install_package.sh && popd +jump_server_clean: ironic_bridge_clean \ + management_cluster_clean -bmo_clean: - ./deploy/baremetal-operator/baremetal-operator.sh clean +# The jump server requires a K8s cluster to install into + +management_cluster: + source user_config.sh && \ + ./deploy/kud/kud_bm_launch.sh minimal + +management_cluster_clean: + ./deploy/kud/kud_bm_launch.sh reset + +# Tools used during the installation of jump server components + +tools: kustomize \ + clusterctl \ + flux_cli \ + sops \ + emcoctl + +kustomize: + ./deploy/kustomize/kustomize.sh deploy + +clusterctl: + ./deploy/clusterctl/clusterctl.sh deploy + +flux_cli: + ./deploy/flux-cli/flux-cli.sh deploy -bmo_clean_host: - pushd $(BMDIR) && ./06_host_cleanup.sh && popd +sops: + ./deploy/sops/sops.sh deploy -clean_packages: - pushd $(BOOTLOADER_ENV) && \ - ./02_clean_bootloader_package_req.sh --only-packages && popd +emcoctl: golang + ./deploy/emcoctl/emcoctl.sh deploy -bmo_install: +golang: + ./deploy/golang/golang.sh deploy + +# Provisioning network configuration in the jump server + +ironic_bridge: source user_config.sh && env && \ - pushd $(BMDIR) && ./02_configure.sh && popd && \ - ./deploy/ironic/ironic.sh deploy && \ - ./deploy/cert-manager/cert-manager.sh deploy && \ + ./deploy/ironic/ironic.sh deploy-bridge + +ironic_bridge_clean: + ./deploy/ironic/ironic.sh clean-bridge + +# Jump server components + +controllers: baremetal_operator \ + cluster_api \ + flux + +baremetal_operator: ironic cert_manager ./deploy/baremetal-operator/baremetal-operator.sh deploy -kud_bm_deploy_mini: - source user_config.sh && \ - pushd $(KUD_PATH) && ./kud_bm_launch.sh minimal && popd +baremetal_operator_clean: + ./deploy/baremetal-operator/baremetal-operator.sh clean -kud_bm_reset: - pushd $(KUD_PATH) && ./kud_bm_launch.sh reset && popd +ironic: + ./deploy/ironic/ironic.sh deploy -sdwan_verifier: - pushd $(SDWAN_VERIFIER_PATH) && bash sdwan_verifier.sh && popd +cert_manager: + ./deploy/cert-manager/cert-manager.sh deploy -capi_install: +cluster_api: ./deploy/cluster-api/cluster-api.sh deploy -flux_install: +flux: ./deploy/flux/flux.sh deploy -unit: bashate - -bashate: - bashate -i E006,E003,E002,E010,E011,E042,E043 `find . -type f -not -path './cmd/bpa-operator/vendor/*' -not -path './ci/jjb/shell/*' -name "*.sh"` - -bm_verifer: jump_server \ - pod11_cluster \ - pod11_clean_cluster \ - clean_jump_server +# Example compute clusters pod11_cluster: ./deploy/site/pod11/pod11.sh deploy @@ -77,23 +97,37 @@ pod11_cluster: ./deploy/kata/kata.sh test ./deploy/addons/addons.sh test -pod11_clean_cluster: +pod11_cluster_clean: ./deploy/site/pod11/pod11.sh clean -verifier: vm_verifier - -vm_verifier: jump_server \ - vm_cluster \ - vm_clean_cluster \ - clean_jump_server - vm_cluster: ./deploy/site/vm/vm.sh deploy ./deploy/site/vm/vm.sh wait ./deploy/kata/kata.sh test ./deploy/addons/addons.sh test -vm_clean_cluster: +vm_cluster_clean: ./deploy/site/vm/vm.sh clean -.PHONY: all bashate +# Test targets + +unit: bashate + +bashate: + bashate -i E006,E003,E002,E010,E011,E042,E043 `find . -type f -not -path './ci/jjb/shell/*' -not -path './build/*' -name "*.sh"` + +verifier: vm_verifier + +vm_verifier: jump_server \ + vm_cluster \ + vm_cluster_clean \ + jump_server_clean + +bm_verifier: jump_server \ + pod11_cluster \ + pod11_cluster_clean \ + jump_server_clean + +SDWAN_VERIFIER_PATH:=$(CURDIR)/sdwan/test +sdwan_verifier: + pushd $(SDWAN_VERIFIER_PATH) && bash sdwan_verifier.sh && popd diff --git a/ci/ci.sh b/ci/ci.sh index 4de87fb..fcc9d5d 100755 --- a/ci/ci.sh +++ b/ci/ci.sh @@ -87,11 +87,11 @@ function update_jobs { # This will create all 344 jobs: # jenkins-jobs update ${JJB_PATH}:${ICN_DIR}/ci/jjb/project.yaml - # These are the ICN jobs we are interested in (note intentional misspelling of bm_verifer): + # These are the ICN jobs we are interested in if [[ ${WITH_VAGRANT} == "yes" ]]; then jenkins-jobs update ${JJB_PATH} icn-master-vagrant-verify-verifier fi - jenkins-jobs update ${JJB_PATH} icn-master-bm-verify-bm_verifer + jenkins-jobs update ${JJB_PATH} icn-master-bm-verify-bm_verifier jenkins-jobs update ${JJB_PATH} icn-bluval-daily-master #jenkins-jobs update ${JJB_PATH} icn-master-verify @@ -99,8 +99,6 @@ function update_jobs { # if [[ ${WITH_VAGRANT} == "yes" ]]; then # jenkins-jobs update ${JJB_PATH} icn-master-vagrant-verify-verify_nestedk8s # fi - # jenkins-jobs update ${JJB_PATH} icn-master-bm-verify-bm_verify_nestedk8s - # jenkins-jobs update ${JJB_PATH} icn-master-bm-verify-kud_bm_verifier } function install_jenkins_id { diff --git a/ci/jjb/project.yaml b/ci/jjb/project.yaml index 0813a59..2120f05 100644 --- a/ci/jjb/project.yaml +++ b/ci/jjb/project.yaml @@ -18,9 +18,7 @@ project-name: icn nexus_log_subdir: intel/ICN_CD_logs target: - - bm_verifer - - bm_verify_nestedk8s - - kud_bm_verifier + - bm_verifier stream: - master: branch: master diff --git a/demo/networkslice/free5gc/helm/slice_install.sh b/demo/networkslice/free5gc/helm/slice_install.sh index 12cf012..21ea4a0 100755 --- a/demo/networkslice/free5gc/helm/slice_install.sh +++ b/demo/networkslice/free5gc/helm/slice_install.sh @@ -47,7 +47,7 @@ function check_status_exit { echo "$2 NF failed to run in the $1 namespace" exit 2 fi - done + done } for f5gnf in ${NF_0[@]}; do diff --git a/deploy/addons/addons.sh b/deploy/addons/addons.sh index 75a8ad3..9f27982 100755 --- a/deploy/addons/addons.sh +++ b/deploy/addons/addons.sh @@ -10,6 +10,10 @@ source $LIBDIR/common.sh BUILDDIR=${SCRIPTDIR/deploy/build} mkdir -p ${BUILDDIR} +function install_deps { + apt-get install -y jq +} + function is_emco_ready { local -r cluster_name=${CLUSTER_NAME:-icn} local -r cluster_kubeconfig="${BUILDDIR}/${cluster_name}.conf" @@ -85,12 +89,20 @@ function is_addon_ready { } function test_addons { + install_deps + # Create a temporary kubeconfig file for the tests local -r cluster_name=${CLUSTER_NAME:-icn} local -r cluster_kubeconfig="${BUILDDIR}/${cluster_name}.conf" clusterctl -n metal3 get kubeconfig ${cluster_name} >${cluster_kubeconfig} clone_kud_repository + # The vFW test in EMCO v21.12 does not use KubeVirt, so patch the + # KuD test and continue to use it + pushd ${KUDPATH} + patch -p1 --forward <${SCRIPTDIR}/plugin_fw_v2.patch || true + popd + pushd ${KUDPATH}/kud/tests failed_kud_tests="" container_runtime=$(KUBECONFIG=${cluster_kubeconfig} kubectl get nodes -o jsonpath='{.items[].status.nodeInfo.containerRuntimeVersion}') diff --git a/deploy/addons/plugin_fw_v2.patch b/deploy/addons/plugin_fw_v2.patch new file mode 100644 index 0000000..461a46d --- /dev/null +++ b/deploy/addons/plugin_fw_v2.patch @@ -0,0 +1,165 @@ +diff --git a/kud/tests/plugin_fw_v2.yaml b/kud/tests/plugin_fw_v2.yaml +index b4dbf77..940ed6d 100644 +--- a/kud/tests/plugin_fw_v2.yaml ++++ b/kud/tests/plugin_fw_v2.yaml +@@ -22,7 +22,7 @@ file: + version: emco/v2 + resourceContext: + anchor: cluster-providers/{{$.ClusterProvider}}/clusters/{{$cluster.Name}}/labels +-label-name: {{$.ClusterLabel}} ++clusterLabel: {{$.ClusterLabel}} + + --- + version: emco/v2 +@@ -104,9 +104,9 @@ resourceContext: + metadata: + name: {{$cluster.Name}} + spec: +- cluster-provider: {{$.ClusterProvider}} +- cluster-name: {{$cluster.Name}} +- loadbalancer-ip: "0.0.0.0" ++ clusterProvider: {{$.ClusterProvider}} ++ cluster: {{$cluster.Name}} ++ loadbalancerIp: "0.0.0.0" + {{- end }} + + --- +@@ -116,7 +116,7 @@ resourceContext: + metadata: + name: {{.CompositeApp}} + spec: +- version: {{.Version}} ++ compositeAppVersion: {{.Version}} + + --- + version: emco/v2 +@@ -159,7 +159,7 @@ resourceContext: + metadata : + name: packetgen-profile + spec: +- app-name: packetgen ++ app: packetgen + file: + {{.PackagesPath}}/profile.tar.gz + +@@ -170,7 +170,7 @@ resourceContext: + metadata : + name: firewall-profile + spec: +- app-name: firewall ++ app: firewall + file: + {{.PackagesPath}}/profile.tar.gz + +@@ -181,7 +181,7 @@ resourceContext: + metadata : + name: sink-profile + spec: +- app-name: sink ++ app: sink + file: + {{.PackagesPath}}/profile.tar.gz + +@@ -192,18 +192,18 @@ resourceContext: + metadata: + name: {{.DeploymentIntentGroup}} + spec: +- profile: {{.CompositeProfile}} ++ compositeProfile: {{.CompositeProfile}} + version: {{.Release}} +- logical-cloud: {{.LogicalCloud}} +- override-values: +- - app-name: packetgen ++ logicalCloud: {{.LogicalCloud}} ++ overrideValues: ++ - app: packetgen + values: + ".Values.service.ports.nodePort": '30888' +- - app-name: firewall ++ - app: firewall + values: + ".Values.global.dcaeCollectorIp": 1.2.3.4 + ".Values.global.dcaeCollectorPort": '8888' +- - app-name: sink ++ - app: sink + values: + ".Values.service.ports.nodePort": '30677' + +@@ -232,8 +232,8 @@ resourceContext: + metadata: + name: packetgen_workload_intent + spec: +- application-name: packetgen +- workload-resource: {{.Release}}-packetgen ++ app: packetgen ++ workloadResource: {{.Release}}-packetgen + type: VirtualMachine + + --- +@@ -243,8 +243,8 @@ resourceContext: + metadata: + name: firewall_workload_intent + spec: +- application-name: firewall +- workload-resource: {{.Release}}-firewall ++ app: firewall ++ workloadResource: {{.Release}}-firewall + type: VirtualMachine + + --- +@@ -254,8 +254,8 @@ resourceContext: + metadata: + name: sink_workload_intent + spec: +- application-name: sink +- workload-resource: {{.Release}}-sink ++ app: sink ++ workloadResource: {{.Release}}-sink + type: Deployment + + --- +@@ -361,11 +361,11 @@ resourceContext: + metadata: + name: packetgen-placement-intent + spec: +- app-name: packetgen ++ app: packetgen + intent: + allOf: +- - provider-name: {{.ClusterProvider}} +- cluster-label-name: {{.ClusterLabel}} ++ - clusterProvider: {{.ClusterProvider}} ++ clusterLabel: {{.ClusterLabel}} + + --- + version: emco/v2 +@@ -374,11 +374,11 @@ resourceContext: + metadata: + name: firewall-placement-intent + spec: +- app-name: firewall ++ app: firewall + intent: + allOf: +- - provider-name: {{.ClusterProvider}} +- cluster-label-name: {{.ClusterLabel}} ++ - clusterProvider: {{.ClusterProvider}} ++ clusterLabel: {{.ClusterLabel}} + + --- + version: emco/v2 +@@ -387,11 +387,11 @@ resourceContext: + metadata: + name: sink-placement-intent + spec: +- app-name: sink ++ app: sink + intent: + allOf: +- - provider-name: {{.ClusterProvider}} +- cluster-label-name: {{.ClusterLabel}} ++ - clusterProvider: {{.ClusterProvider}} ++ clusterLabel: {{.ClusterLabel}} + + {{- range $index, $cluster := .Clusters }} + --- diff --git a/deploy/clusterctl/clusterctl.sh b/deploy/clusterctl/clusterctl.sh new file mode 100755 index 0000000..21293e4 --- /dev/null +++ b/deploy/clusterctl/clusterctl.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -eux -o pipefail + +SCRIPTDIR="$(readlink -f $(dirname ${BASH_SOURCE[0]}))" +LIBDIR="$(dirname $(dirname ${SCRIPTDIR}))/env/lib" + +source $LIBDIR/common.sh + +function deploy { + curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/${CAPI_VERSION}/clusterctl-linux-amd64 -o clusterctl + sudo install -o root -g root -m 0755 clusterctl /usr/local/bin/clusterctl + rm clusterctl + clusterctl version +} + +case $1 in + "deploy") deploy ;; + *) cat < /dev/null 2>&1; then + sudo iptables -I INPUT -i ${IRONIC_PROVISIONING_INTERFACE} -p tcp -m tcp --dport ${port} -j ACCEPT + fi + done + + # Allow access to dhcp and tftp server for pxeboot + for port in 67 69 ; do + if ! sudo iptables -C INPUT -i ${IRONIC_PROVISIONING_INTERFACE} -p udp --dport ${port} -j ACCEPT 2>/dev/null ; then + sudo iptables -I INPUT -i ${IRONIC_PROVISIONING_INTERFACE} -p udp --dport ${port} -j ACCEPT + fi + done +} + +function deploy_bridge { + configure_ironic_bridge + configure_ironic_interfaces +} + +function clean_bridge { + ip link set provisioning down || true + ip link del provisioning type bridge || true +} + # This may be used to update the in-place Ironic YAML files from the # upstream project. We cannot use the upstream sources directly as # they require an envsubst step before kustomize build. @@ -42,19 +101,24 @@ function deploy { function clean { kustomize build ${SCRIPTDIR}/icn | kubectl delete -f - + rm -rf ${IRONIC_DATA_DIR} } case $1 in "build-source") build_source ;; "clean") clean ;; + "clean-bridge") clean_bridge ;; "deploy") deploy ;; + "deploy-bridge") deploy_bridge ;; *) cat < /dev/null 2>&1; then - sudo iptables -I INPUT -i $IRONIC_PROVISIONING_INTERFACE -p tcp -m tcp --dport $port -j ACCEPT - fi - done - - #Allow access to dhcp and tftp server for pxeboot - for port in 67 69 ; do - if ! sudo iptables -C INPUT -i $IRONIC_PROVISIONING_INTERFACE -p udp --dport $port -j ACCEPT 2>/dev/null ; then - sudo iptables -I INPUT -i $IRONIC_PROVISIONING_INTERFACE -p udp --dport $port -j ACCEPT - fi - done -} - -function configure { - configure_ironic_bridge - configure_ironic_interfaces -} - -configure diff --git a/env/metal3/06_host_cleanup.sh b/env/metal3/06_host_cleanup.sh deleted file mode 100755 index a649511..0000000 --- a/env/metal3/06_host_cleanup.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash -set -eux -o pipefail - -LIBDIR="$(dirname "$PWD")" - -source $LIBDIR/lib/common.sh - -# Kill and remove the running ironic containers -for name in ironic ironic-inspector dnsmasq httpd mariadb ipa-downloader; do - sudo docker ps | grep -w "$name$" && sudo docker kill "$name" - sudo docker ps --all | grep -w "$name$" && sudo docker rm "$name" -f -done - -ip link set provisioning down || true -ip link del provisioning type bridge || true - -rm -rf ${IRONIC_DATA_DIR} diff --git a/env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh b/env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh deleted file mode 100755 index 6bb3b15..0000000 --- a/env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/env bash -set -eux -o pipefail - -source $(dirname $PWD)/../lib/common.sh -source $(dirname $PWD)/../lib/logging.sh - -if [[ $EUID -ne 0 ]]; then - echo "This script must be run as root" - exit 1 -fi - -function autoremove { - rm -rf /etc/apt/sources.list.d/* -} - -function clean_essential_packages { - apt-get update - for package in crudini curl dnsmasq figlet golang nmap patch psmisc \ - python3-pip python3-requests python3-setuptools vim wget; do - apt-get remove $package -y - done - update-alternatives --remove python /usr/bin/python3 - update-alternatives --remove pip /usr/bin/pip3 - - autoremove -} - -function check_prerequisite { - if !(which pip); then - apt-get install python3-pip -y - fi - update-alternatives --install /usr/bin/python python /usr/bin/python3 1 - update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 - - if !(which curl); then - apt-get install curl -y - fi - - if !(which add-apt-repository); then - apt-get install software-properties-common -y - fi -} - -function clean_ironic_packages { - for package in python3-ironicclient \ - python3-ironic-inspector-client \ - python3-openstackclient genisoimage; do - apt-get remove $package -y - done -} - -function clean_docker_packages { - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" - apt-get update - docker rmi -f $(docker image ls -a -q) - apt-get remove docker-ce -y - apt-get remove -y docker \ - docker-engine \ - docker.io \ - containerd \ - runc \ - docker-ce - apt-get purge docker-* -y --allow-change-held-packages - apt-get update -} - -function clean_kubernetes_packages { - #Just to make sure kubernetes packages are removed during the download - curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - - bash -c 'cat </etc/apt/sources.list.d/kubernetes.list -deb https://apt.kubernetes.io/ kubernetes-xenial main -EOF' - apt-get update - apt-get remove kubelet kubeadm kubectl -y -} - -function clean_apt_cache { - shopt -s extglob - pushd /var/cache/apt/archives - - if [ $(ls -1q . | wc -l ) -ge 3 ]; then - $(rm !("lock"|"partial")) - fi - popd - -} - -if [ "$1" == "--only-packages" ]; then - check_prerequisite - clean_docker_packages || true - autoremove - exit 0 -fi - -check_prerequisite -clean_apt_cache -clean_kubernetes_packages -clean_docker_packages -clean_ironic_packages -clean_essential_packages