From: Todd Malsbary Date: Thu, 9 Dec 2021 00:56:13 +0000 (-0800) Subject: Add pod11 site definition X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=commitdiff_plain;h=0eca284fa49565d10773abd876f662a0055358f6;p=icn.git Add pod11 site definition Signed-off-by: Todd Malsbary Change-Id: I35668f1ba97e74d6a579b3abbc010c7e59b61288 --- diff --git a/deploy/site/pod11/.sops.yaml b/deploy/site/pod11/.sops.yaml new file mode 100644 index 0000000..60dfb57 --- /dev/null +++ b/deploy/site/pod11/.sops.yaml @@ -0,0 +1,4 @@ +creation_rules: + - path_regex: .*.yaml + encrypted_regex: ^(bmcPassword|hashedPassword)$ + pgp: A4B4A47A1DB07DE00E8158BE411E23534CA8FAE0 diff --git a/deploy/site/pod11/pod11.sh b/deploy/site/pod11/pod11.sh new file mode 100755 index 0000000..c26b239 --- /dev/null +++ b/deploy/site/pod11/pod11.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +set -eux -o pipefail + +SCRIPTDIR="$(readlink -f $(dirname ${BASH_SOURCE[0]}))" +LIBDIR="$(dirname $(dirname $(dirname ${SCRIPTDIR})))/env/lib" + +source $LIBDIR/common.sh +source $SCRIPTDIR/../common.sh + +BUILDDIR=${SCRIPTDIR/deploy/build} +mkdir -p ${BUILDDIR} + +FLUX_SOPS_KEY_NAME=${FLUX_SOPS_KEY_NAME:-"icn-site-vm"} # TODO Replace ICN test key with real key + +function build_source { + sops_encrypt_site ${SCRIPTDIR}/site.yaml ${FLUX_SOPS_KEY_NAME} +} + +function deploy { + flux_create_site https://gerrit.akraino.org/r/icn master deploy/site/pod11 ${FLUX_SOPS_KEY_NAME} +} + +function clean { + kubectl -n flux-system delete kustomization icn-master-site-pod11 +} + +function is_cluster_ready { + [[ $(kubectl -n metal3 get cluster e2etest -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}') == "True" ]] +} + +function is_control_plane_ready { + # Checking the Cluster resource status is not sufficient, it + # reports the control plane as ready before the nodes forming the + # control plane are ready + local -r replicas=$(kubectl -n metal3 get kubeadmcontrolplane e2etest -o jsonpath='{.spec.replicas}') + [[ $(kubectl --kubeconfig=${BUILDDIR}/e2etest-admin.conf get nodes -l node-role.kubernetes.io/control-plane -o jsonpath='{range .items[*]}{.status.conditions[?(@.type=="Ready")].status}{"\n"}{end}' | grep -c True) == ${replicas} ]] +} + +function insert_control_plane_network_identity_into_ssh_config { + # This enables logging into the control plane machines from this + # machine without specifying the identify file on the command line + + # Create ssh config if it doesn't exist + mkdir -p ${HOME}/.ssh && chmod 700 ${HOME}/.ssh + touch ${HOME}/.ssh/config + chmod 600 ${HOME}/.ssh/config + # Add the entry for the control plane network, host value in ssh + # config is a wildcard + endpoint=$(helm -n metal3 get values -a cluster-e2etest | awk '/controlPlaneEndpoint:/ {print $2}') + prefix=$(helm -n metal3 get values -a cluster-e2etest | awk '/controlPlanePrefix:/ {print $2}') + host=$(ipcalc ${endpoint}/${prefix} | awk '/Network:/ {sub(/\.0.*/,".*"); print $2}') + if [[ $(grep -c "Host ${host}" ${HOME}/.ssh/config) != 0 ]]; then + sed -i -e '/Host '"${host}"'/,+1 d' ${HOME}/.ssh/config + fi + cat <>${HOME}/.ssh/config +Host ${host} + IdentityFile ${SCRIPTDIR}/id_rsa +EOF +} + +function wait_for_all_ready { + WAIT_FOR_INTERVAL=60s + WAIT_FOR_TRIES=30 + wait_for is_cluster_ready + clusterctl -n metal3 get kubeconfig e2etest >${BUILDDIR}/e2etest-admin.conf + chmod 600 ${BUILDDIR}/e2etest-admin.conf + wait_for is_control_plane_ready + insert_control_plane_network_identity_into_ssh_config +} + +case $1 in + "build-source") build_source ;; + "clean") clean ;; + "deploy") deploy ;; + "wait") wait_for_all_ready ;; + *) cat <