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