Use common clone repo function
[icn.git] / deploy / kud / kud_bm_launch.sh
1 #!/usr/bin/env bash
2 set -eu -o pipefail
3
4 LIBDIR="$(dirname "$(dirname "$PWD")")"
5
6 source $LIBDIR/env/lib/common.sh
7
8 export KUBESPRAY_VERSION=2.16.0
9
10 function get_kud_repo {
11     clone_kud_repository
12     if [ "$1" == "v1" ] ; then
13         export KUD_ADDONS=multus
14     fi
15 }
16
17 function set_ssh_key {
18     if ! [ -f ~/.ssh/id_rsa ]; then
19         echo "Generating rsa key for this host"
20         ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa <&-
21     fi
22
23     if ! grep -qF "$(ssh-keygen -y -f ~/.ssh/id_rsa)" ~/.ssh/authorized_keys; then
24         ssh-keygen -y -f ~/.ssh/id_rsa >> ~/.ssh/authorized_keys
25     fi
26
27     chmod og-wx ~/.ssh/authorized_keys
28 }
29
30 function set_bm_kud {
31     pushd ${KUDPATH}/kud/hosting_providers/vagrant/inventory
32     HOST_IP=${HOST_IP:-$(hostname -I | cut -d ' ' -f 1)}
33     if [ "$1" == "minimal" ] ; then
34         cat <<EOL > hosts.ini
35 [all]
36 $HOSTNAME ansible_ssh_host=${HOST_IP} ansible_ssh_port=22
37
38 [kube-master]
39 $HOSTNAME
40
41 [kube-node]
42 $HOSTNAME
43
44 [etcd]
45 $HOSTNAME
46
47 [k8s-cluster:children]
48 kube-node
49 kube-master
50 EOL
51     else
52         cat <<EOL > hosts.ini
53 [all]
54 $HOSTNAME ansible_ssh_host=${HOST_IP} ansible_ssh_port=22
55
56 [kube-master]
57 $HOSTNAME
58
59 [kube-node]
60 $HOSTNAME
61
62 [etcd]
63 $HOSTNAME
64
65 [ovn-central]
66 $HOSTNAME
67
68 [ovn-controller]
69 $HOSTNAME
70
71 [virtlet]
72 $HOSTNAME
73
74 [k8s-cluster:children]
75 kube-node
76 kube-master
77 EOL
78     fi
79     popd
80 }
81
82 function kud_install {
83     pushd ${KUDPATH}/kud/hosting_providers/vagrant/
84     if [ "$1" == "all" ]; then
85         sed -i -e 's/testing_enabled=${KUD_ENABLE_TESTS:-false}/testing_enabled=${KUD_ENABLE_TESTS:-true}/g' installer.sh
86     fi
87     ./installer.sh | tee kud_deploy.log
88
89     if [ "$1" == "bm" ]; then
90         for addon in ${KUD_ADDONS:-multus ovn4nfv nfd sriov qat cmk optane}; do
91             pushd ${KUDPATH}/kud/tests/
92                 bash ${addon}.sh
93             popd
94         done
95     fi
96     popd
97 }
98
99 function kud_reset {
100     pushd ${KUDPATH}/kud/hosting_providers/vagrant/
101     ansible-playbook -i inventory/hosts.ini /opt/kubespray-${KUBESPRAY_VERSION}/reset.yml \
102         --become --become-user=root -e reset_confirmation=yes
103     popd
104 }
105
106 function verifier {
107     APISERVER=$(kubectl config view --minify -o \
108                     jsonpath='{.clusters[0].cluster.server}')
109     TOKEN=$(kubectl get secret \
110         $(kubectl get serviceaccount default -o \
111         jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | \
112         base64 --decode )
113   call_api $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
114 }
115
116 if [ "$1" == "reset" ] ; then
117     kud_reset
118     exit 0
119 fi
120
121 get_kud_repo $2
122 set_ssh_key
123 set_bm_kud $1
124 kud_install $1
125 verifier
126
127 exit 0