SDWAN_VERIFIER_PATH:=$(CURDIR)/sdwan/test
BPA_REST_API:=$(CURDIR)/cmd/bpa-restapi-agent
-
help:
@echo " Targets:"
@echo " test -- run unit tests"
@echo " unit -- run the unit tests"
@echo " help -- this help output"
-all: bm_install
+install: bmh_all
+
+bmh_preinstall:
+ pushd $(BMDIR) && ./01_install_package.sh && ./02_configure.sh && \
+ ./03_launch_prereq.sh && popd
+
+bmh_clean:
+ pushd $(METAL3DIR) && ./01_metal3.sh deprovision && \
+ ./03_verify_deprovisioning.sh && ./01_metal3.sh clean popd
-bm_preinstall:
- pushd $(BMDIR) && ./01_install_package.sh && ./02_configure.sh && ./03_launch_prereq.sh && popd
+bmh_clean_host:
+ pushd $(BMDIR) && ./06_host_cleanup.sh && popd
-bm_install:
- pushd $(METAL3DIR) && ./metal3.sh && popd
+bmh_install:
+ pushd $(METAL3DIR) && ./01_metal3.sh launch && \
+ ./01_metal3.sh provision && ./02_verify.sh && popd
-bm_all: bm_preinstall bm_install
+bmh_all: bmh_preinstall bmh_install
+
+bmh_clean_all: bmh_clean bmh_clean_host
kud_bm_deploy_mini:
pushd $(KUD_PATH) && ./kud_bm_launch.sh minimal && popd
prerequisite:
pushd $(ENV) && ./cd_package_installer.sh && popd
+bm_verifer: install
+
verify_all: prerequisite \
metal3_prerequisite \
kud_bm_deploy_mini \
done
}
+function cleanup {
+ while read -r name username password address; do
+ kubectl delete bmh $name -n metal3
+ kubectl delete secrets $name-bmc-secret -n metal3
+ kubectl delete secrets $name-user-data -n metal3
+ done
+}
+
+function clean_all {
+ list_nodes | cleanup
+}
+
function apply_bm_hosts {
list_nodes | make_bm_hosts
}
fi
if [ "$1" == "deprovision" ]; then
+ configure_nodes
deprovision_all_hosts
exit 0
fi
if [ "$1" == "provision" ]; then
+ configure_nodes
apply_bm_hosts
exit 0
fi
+if [ "$1" == "clean" ]; then
+ configure_nodes
+ clean_all
+ exit 0
+fi
+
echo "Usage: metal3.sh"
echo "launch - Launch the metal3 operator"
echo "provision - provision baremetal node as specified in common.sh"
echo "deprovision - deprovision baremetal node as specified in common.sh"
+echo "clean - clean all the resources"
exit 1
#Following code is tested for the offline mode
--- /dev/null
+#!/usr/bin/env bash
+#set -x
+
+LIBDIR="$(dirname "$(dirname "$(dirname "$PWD")")")"
+
+eval "$(go env)"
+
+source $LIBDIR/env/lib/common.sh
+
+declare -i timeout=60
+declare -i interval=60
+
+function check_deprovisioned {
+ declare -i prev_host_state=0
+ declare -i j=0
+ echo "Baremetal state: 1 means deprovisioned & 0 means not yet deprovisioned"
+ while read -r name username password address; do
+ declare -i current_host_state=0
+ state=$(kubectl get baremetalhosts $name -n metal3 -o json | jq -r '.status.provisioning.state')
+ echo "Baremetal host metal3 state - "$name" : "$state
+
+ if [ $state == "ready" ];then
+ current_host_state=1
+ fi
+
+ echo "Baremetal $name current_host_state : "$current_host_state
+ echo "Previous Baremetals prev_host_state : "$prev_host_state
+
+ if [ $j -eq 0 ]; then
+ prev_host_state=$current_host_state
+ ((j+=1))
+ continue
+ fi
+
+ if [ $current_host_state -eq 1 ] && [ $prev_host_state -eq 1 ]; then
+ prev_host_state=1
+ else
+ prev_host_state=0
+ fi
+
+ echo "All Baremetal hosts aggregated state - prev_host_state:"$prev_host_state
+ ((j+=1))
+ done
+ return $prev_host_state
+}
+
+function warm_up_time {
+ echo "Wait for 240s for all baremetal hosts to reboot and network is up"
+ sleep 4m
+}
+
+function wait_for_deprovisioned {
+ all_bmh_deprovisioned=1
+ declare -i k=1
+ while ((timeout > 0)); do
+ echo "Try $k iteration : Wait for $interval seconds to check all bmh state"
+ sleep $interval
+ list_nodes | check_deprovisioned
+ all_bmh_state=$?
+ if [[ $all_bmh_state -eq $all_bmh_deprovisioned ]]; then
+ echo "All the Baremetal hosts are deprovisioned - success"
+ warm_up_time
+ exit 0
+ fi
+ ((timeout-=1))
+ ((k+=1))
+ done
+ exit 1
+}
+
+
+function verify_bm_hosts_cleanup {
+ wait_for_deprovisioned
+}
+
+verify_bm_hosts_cleanup
{
"name": "edge01-node01",
"ipmi_driver_info": {
- "username": "admin",
- "password": "admin",
- "address": "10.10.10.11"
+ "username": "root",
+ "password": "root",
+ "address": "10.10.110.11"
},
"os": {
"image_name": "bionic-server-cloudimg-amd64.img",
{
"name": "edge01-node02",
"ipmi_driver_info": {
- "username": "admin",
- "password": "admin",
- "address": "10.10.10.12"
+ "username": "root",
+ "password": "root",
+ "address": "10.10.110.13"
},
"os": {
"image_name": "bionic-server-cloudimg-amd64.img",
#!/bin/bash
+ICNDIR="$(dirname "$(dirname "$PWD")")"
+echo $ICNDIR
+source $ICNDIR/user_config.sh
+
#supported OS version
UBUNTU_BIONIC=${UBUNTU_BIONIC:-Ubuntu 18.04.2 LTS}
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:-"ens513f0"}
-BS_DHCP_INTERFACE_IP=${BS_DHCP_INTERFACE_IP:-"172.31.1.1/24"}
+BS_DHCP_INTERFACE=${BS_DHCP_INTERFACE:-}
+BS_DHCP_INTERFACE_IP=${BS_DHCP_INTERFACE_IP:-}
BS_DHCP_DIR=${BS_DHCP_DIR:-$DOWNLOAD_PATH/dhcp}
#Ironic variables
IRONIC_DATA_DIR=${IRONIC_DATA_DIR:-"/opt/ironic"}
#IRONIC_PROVISIONING_INTERFACE is required to be provisioning, don't change it
-IRONIC_INTERFACE=${IRONIC_INTERFACE:-"enp4s0f1"}
+IRONIC_INTERFACE=${IRONIC_INTERFACE:-}
IRONIC_PROVISIONING_INTERFACE=${IRONIC_PROVISIONING_INTERFACE:-"provisioning"}
-IRONIC_IPMI_INTERFACE=${IRONIC_IPMI_INTERFACE:-"enp4s0f0"}
+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:-"10.10.110.20"}
+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"}
function list_nodes {
NODES_FILE="${IRONIC_DATA_DIR}/nodes.json"
+
+ if [ ! -f $IRONIC_DATA_DIR/nodes.json ]; then
+ exit 1
+ fi
+
cat "$NODES_FILE" | \
jq '.nodes[] | {
name,
rm -rf ${BS_DHCP_DIR}
rm -rf ${IRONIC_DATA_DIR}
+
+kubeadm reset -f
+iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
+rm -rf $HOME/.kube/config
+rm -rf /var/lib/etcd
--- /dev/null
+#!/bin/bash
+
+#Local controller - Bootstrap cluster DHCP connection
+BS_DHCP_INTERFACE=${BS_DHCP_INTERFACE:-"ens513f0"}
+BS_DHCP_INTERFACE_IP=${BS_DHCP_INTERFACE_IP:-"172.31.1.1/24"}
+
+#Ironic Metal3 settings for provisioning network
+IRONIC_INTERFACE=${IRONIC_INTERFACE:-"enp4s0f1"}
+
+#Ironic Metal3 setting for IPMI LAN Network
+IRONIC_IPMI_INTERFACE=${IRONIC_IPMI_INTERFACE:-"enp4s0f0"}
+IRONIC_IPMI_INTERFACE_IP=${IRONIC_IPMI_INTERFACE_IP:-"10.10.110.20"}