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