Add e2e script for Virtlet VM provisioning
[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" || "$1" == "vm" ]; then
87         sed -i -e 's/testing_enabled=${KUD_ENABLE_TESTS:-false}/testing_enabled=${KUD_ENABLE_TESTS:-true}/g' installer.sh
88     fi
89     if [ "$1" == "vm" ]; then
90         sed -i -e 's/^kube_pods_subnet.*/kube_pods_subnet: 172.21.64.0\/18/g' inventory/group_vars/k8s-cluster.yml
91     fi
92     ./installer.sh | tee kud_deploy.log
93
94     if [ "$1" == "bm" ]; then
95         pushd $DOWNLOAD_PATH/multicloud-k8s/kud/tests/
96             sleep 15
97             bash sriov.sh
98         popd
99     fi
100     popd
101 }
102
103 function kud_reset {
104     pushd $DOWNLOAD_PATH/multicloud-k8s/kud/hosting_providers/vagrant/
105     ansible-playbook -i inventory/hosts.ini /opt/kubespray-2.10.4/reset.yml \
106         --become --become-user=root -e reset_confirmation=yes
107     popd
108 }
109
110
111 function verifier {
112     APISERVER=$(kubectl config view --minify -o \
113                     jsonpath='{.clusters[0].cluster.server}')
114     TOKEN=$(kubectl get secret \
115         $(kubectl get serviceaccount default -o \
116         jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | \
117         base64 --decode )
118   call_api $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
119 }
120
121 if [ "$1" == "reset" ] ; then
122     kud_reset
123     exit 0
124 fi
125
126 get_kud_repo
127 set_ssh_key
128 set_bm_kud $1
129 kud_install $1
130 verifier
131
132 exit 0