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