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