kubespray_version is no longer in kud-vars
[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.14.1
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" -o "$1" == "vm" ]; then
94         sed -i -e 's/testing_enabled=${KUD_ENABLE_TESTS:-false}/testing_enabled=${KUD_ENABLE_TESTS:-true}/g' installer.sh
95     fi
96     if [ "$1" == "vm" ]; then
97         sed -i -e 's/^kube_pods_subnet.*/kube_pods_subnet: 172.21.64.0\/18/g' inventory/group_vars/k8s-cluster.yml
98     fi
99     ./installer.sh | tee kud_deploy.log
100
101     if [ "$1" == "bm" ]; then
102         for addon in ${KUD_ADDONS:-multus ovn4nfv nfd sriov qat cmk optane}; do
103             pushd $DOWNLOAD_PATH/multicloud-k8s/kud/tests/
104                 bash ${addon}.sh
105             popd
106         done
107     fi
108     popd
109 }
110
111 function kud_reset {
112     pushd $DOWNLOAD_PATH/multicloud-k8s/kud/hosting_providers/vagrant/
113     ansible-playbook -i inventory/hosts.ini /opt/kubespray-${KUBESPRAY_VERSION}/reset.yml \
114         --become --become-user=root -e reset_confirmation=yes
115     popd
116 }
117
118 function verifier {
119     APISERVER=$(kubectl config view --minify -o \
120                     jsonpath='{.clusters[0].cluster.server}')
121     TOKEN=$(kubectl get secret \
122         $(kubectl get serviceaccount default -o \
123         jsonpath='{.secrets[0].name}') -o jsonpath='{.data.token}' | \
124         base64 --decode )
125   call_api $APISERVER/api --header "Authorization: Bearer $TOKEN" --insecure
126 }
127
128 if [ "$1" == "reset" ] ; then
129     kud_reset
130     exit 0
131 fi
132
133 get_kud_repo $2
134 set_ssh_key
135 set_bm_kud $1
136 kud_install $1
137 verifier
138
139 exit 0