From b2e0b6304ab47b4432948c95a587facdbaa1e705 Mon Sep 17 00:00:00 2001 From: Todd Malsbary Date: Wed, 9 Feb 2022 16:58:29 -0800 Subject: [PATCH] Clean up Makefile Make structure of components installed more legible and remove unnecessary ones. Signed-off-by: Todd Malsbary Change-Id: Ife232610e3f4490e45b07faa5fbbc6072fd22f7f --- Makefile | 146 +++++++++++++-------- deploy/addons/addons.sh | 6 + deploy/clusterctl/clusterctl.sh | 25 ++++ deploy/emcoctl/emcoctl.sh | 24 ++++ deploy/flux-cli/flux-cli.sh | 24 ++++ deploy/golang/golang.sh | 24 ++++ deploy/ironic/ironic.sh | 64 +++++++++ deploy/kud/kud_bm_launch.sh | 5 +- deploy/kustomize/kustomize.sh | 26 ++++ deploy/site/vm/vm.sh | 4 + deploy/sops/sops.sh | 25 ++++ env/lib/common.sh | 34 ----- env/metal3/01_install_package.sh | 71 ---------- env/metal3/02_configure.sh | 64 --------- env/metal3/06_host_cleanup.sh | 17 --- .../02_clean_bootloader_package_req.sh | 104 --------------- 16 files changed, 315 insertions(+), 348 deletions(-) create mode 100755 deploy/clusterctl/clusterctl.sh create mode 100755 deploy/emcoctl/emcoctl.sh create mode 100755 deploy/flux-cli/flux-cli.sh create mode 100755 deploy/golang/golang.sh create mode 100755 deploy/kustomize/kustomize.sh create mode 100755 deploy/sops/sops.sh delete mode 100755 env/metal3/01_install_package.sh delete mode 100755 env/metal3/02_configure.sh delete mode 100755 env/metal3/06_host_cleanup.sh delete mode 100755 env/ubuntu/bootloader-env/02_clean_bootloader_package_req.sh diff --git a/Makefile b/Makefile index 096fd4f..86d346a 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 + +sops: + ./deploy/sops/sops.sh deploy -bmo_clean_host: - pushd $(BMDIR) && ./06_host_cleanup.sh && popd +emcoctl: golang + ./deploy/emcoctl/emcoctl.sh deploy -clean_packages: - pushd $(BOOTLOADER_ENV) && \ - ./02_clean_bootloader_package_req.sh --only-packages && popd +golang: + ./deploy/golang/golang.sh deploy -bmo_install: +# 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_verifer: 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/deploy/addons/addons.sh b/deploy/addons/addons.sh index 75a8ad3..5b45e72 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,6 +89,8 @@ 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" 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. @@ -37,19 +96,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 -- 2.16.6