-
Notifications
You must be signed in to change notification settings - Fork 0
/
00-boostrap-minikube-infra.sh
executable file
·108 lines (85 loc) · 2.87 KB
/
00-boostrap-minikube-infra.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/usr/bin/env bash
. common.sh
log::info "KUBECONFIG $KUBECONFIG"
#check pre-requisities: TODO check version
command -v kubectl >/dev/null 2>&1 || { log::error >&2 "can't find kubectl. Aborting."; exit 1; }
#check pre-requisities: TODO check version
command -v minikube >/dev/null 2>&1 || { log::error >&2 "can't find minikube. Aborting."; exit 1; }
minikube_up_and_running() {
local profile=$1
apiStatus=$(minikube -p $profile status --format='{{ .APIServer }}')
hostStatus=$(minikube -p $profile status --format='{{ .Host }}')
if [[ "${apiStatus}" == "Running" && "${hostStatus}" == "Running" ]]
then
echo "0"
return
fi
echo "1"
}
minikube_stopped() {
local profile=$1
apiStatus=$(minikube -p $profile status --format='{{ .APIServer }}')
hostStatus=$(minikube -p $profile status --format='{{ .Host }}')
if [[ "${apiStatus}" == "Stopped" && "${hostStatus}" == "Stopped" ]]
then
echo "0"
return
fi
echo "1"
}
net_active() {
local netname=$1
active=$(virsh net-info $netname | awk '/Active:/ {print $2}')
if [[ "${active}" == "yes" ]]
then
echo "0"
return
fi
echo "1"
}
containerRuntime=$(minikube config get container-runtime )
[[ "${containerRuntime}" == "cri-o" ]] || { log::error >&2 "Container runtime should be cri-o"; exit 1; }
driver=$(minikube config get driver )
[[ "${driver}" == "kvm2" ]] || { log::error >&2 "Driver should be kvm2. While it looks ${driver}"; exit 1; }
for CLUSTERNAME in "${clusters[@]}"
do
echo "Setting up clustername ${CLUSTERNAME}";
minikube start -p ${CLUSTERNAME};
wait_until "minikube_up_and_running ${CLUSTERNAME}";
done
for CLUSTERNAME in "${clusters[@]}"
do
echo "Pushing images... To ${CLUSTERNAME}"
minikube -p ${CLUSTERNAME} image load ./images/nginx-controller.tar;
done
log::info "Stopping minikube(s)"
for CLUSTERNAME in "${clusters[@]}"
do
virsh net-dumpxml mk-${CLUSTERNAME} > mk-${CLUSTERNAME}.xml;
minikube stop -p ${CLUSTERNAME};
wait_until "minikube_stopped ${CLUSTERNAME}"
virsh net-destroy mk-${CLUSTERNAME};
done
for CLUSTERNAME in "${clusters[@]}"
do
log::info "Setting mk-${CLUSTERNAME} in mode='route'"
sed -i "/uuid/a \ <forward mode='route'/\>" mk-${CLUSTERNAME}.xml;
virsh net-define mk-${CLUSTERNAME}.xml;
virsh net-start mk-${CLUSTERNAME};
wait_until "net_active mk-${CLUSTERNAME}";
done
log::info "Restaring minikube(s)"
for CLUSTERNAME in "${clusters[@]}"
do
minikube start -p ${CLUSTERNAME};
minikube -p ${CLUSTERNAME} addons enable ingress
wait_until "minikube_up_and_running ${CLUSTERNAME}"
done
#now starts the mgmt control plane
#minikube start -p ${MGMT}
#wait_until "minikube_up_and_running ${MGMT}"
for c in $(minikube profile list -o json | jq -r .valid[].Name);
do echo $(minikube -p $c ip) ${c} | sudo tee -a /etc/hosts
done
echo $(minikube -p ${MGMT} ip) my-git.io | sudo tee -a /etc/hosts
exit