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