blob: ef7e5ede51f4d1f66e93aabd7561436b0e8b9b11 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
#!/bin/bash
source /var/onap/functions
RANCHER_PORT=8880
oom_delay=30
export RANCHER_URL=http://localhost:$RANCHER_PORT
export RANCHER_ACCESS_KEY='access_key'
export RANCHER_SECRET_KEY='secret_key'
# _install_docker() - Function that installs Docker version for Rancher
function _install_docker {
if ! $(docker version &>/dev/null); then
curl https://releases.rancher.com/install-docker/1.12.sh | sh
_configure_docker_settings 15
fi
}
# _pull_rancher_images() - Function that retrieves Rancher images required for k8s
function _pull_rancher_images {
for image in "net:v0.13.5" "k8s:v1.8.5-rancher3" \
"lb-service-rancher:v0.7.17" "network-manager:v0.7.18" "metadata:v0.9.5" \
"kubectld:v0.8.5" "kubernetes-agent:v0.6.6" "dns:v0.15.3" \
"kubernetes-auth:v0.0.8" "healthcheck:v0.3.3" "etcd:v2.3.7-13" \
"etc-host-updater:v0.0.3" "net:holder"; do
pull_docker_image rancher/$image &
done
}
# _pull_k8s_images() - Function that retrieves Google k8s images
function _pull_k8s_images {
for image in "kubernetes-dashboard-amd64:v1.7.1" \
"k8s-dns-sidecar-amd64:1.14.5" "k8s-dns-kube-dns-amd64:1.14.5" \
"k8s-dns-dnsmasq-nanny-amd64:1.14.5" "heapster-influxdb-amd64:v1.3.3" \
"heapster-grafana-amd64:v4.4.3" "heapster-amd64:v1.4.0" "pause-amd64:3.0"; do
pull_docker_image gcr.io/google_containers/$image &
done
}
# _install_rancher() - Function that installs Rancher CLI and container
function _install_rancher {
local rancher_version=v0.6.5
local rancher_server_version=v1.6.10
local rancher_server=rancher/server:$rancher_server_version
if [ ! -d /opt/rancher/current ]; then
mkdir -p /opt/rancher/current
wget https://github.com/rancher/cli/releases/download/$rancher_version/rancher-linux-amd64-$rancher_version.tar.gz
tar -xzf rancher-linux-amd64-$rancher_version.tar.gz -C /tmp
mv /tmp/rancher-$rancher_version/rancher /opt/rancher/current/
fi
_install_docker
pull_docker_image $rancher_server
run_docker_image -d --restart=unless-stopped -p $RANCHER_PORT:8080 $rancher_server
while true; do
if curl --fail -X GET $RANCHER_URL; then
break
fi
echo "waiting for racher"
sleep $oom_delay
done
}
# _install_kubernetes() - Function that deploys kubernetes via RancherOS host registration
function _install_kubernetes {
local rancher_agent_version=v1.2.7
local rancher_agent=rancher/agent:$rancher_agent_version
_install_rancher
_pull_rancher_images
_pull_k8s_images
pull_docker_image $rancher_agent
_wait_docker_pull
pushd /opt/rancher/current/
export RANCHER_ENVIRONMENT=`./rancher env create -t kubernetes onap_on_kubernetes`
popd
install_python_package rancher-agent-registration
export no_proxy=$no_proxy,$IP_ADDRESS
rancher-agent-registration --host-ip $IP_ADDRESS --url http://$IP_ADDRESS:$RANCHER_PORT --environment $RANCHER_ENVIRONMENT --key $RANCHER_ACCESS_KEY --secret $RANCHER_SECRET_KEY
}
# _install_kubectl() - Function that installs kubectl as client for kubernetes
function _install_kubectl {
if ! $(kubectl version &>/dev/null); then
rm -rf ~/.kube
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
mv ./kubectl /usr/local/bin/kubectl
mkdir ~/.kube
pushd ~/.kube
python /var/onap/files/kubectl_config_generator.py
popd
fi
}
# _install_helm() - Function that install Kubernetes Package Manager
function _install_helm {
local helm_version=v2.3.0
if ! $(helm version &>/dev/null); then
wget http://storage.googleapis.com/kubernetes-helm/helm-${helm_version}-linux-amd64.tar.gz
tar -zxvf helm-${helm_version}-linux-amd64.tar.gz -C /tmp
mv /tmp/linux-amd64/helm /usr/local/bin/helm
helm init
fi
}
# _pull_images_from_yaml() - Function that parses a yaml file and pull their images
function _pull_images_from_yaml_file {
local values_file=$1
local prefix=$2
local s='[[:space:]]*'
local w='[a-zA-Z0-9_]*'
fs=`echo @|tr @ '\034'`
for line in $(sed -ne "s|^\($s\):|\1|" \
-e "s|^\($s\)\($w\)$s:$s[\"']\(.*\)[\"']$s\$|\1$fs\2$fs\3|p" \
-e "s|^\($s\)\($w\)$s:$s\(.*\)$s\$|\1$fs\2$fs\3|p" $values_file |
awk -F$fs '{
indent = length($1)/2;
vname[indent] = $2;
for (i in vname) {
if (i > indent) {
delete vname[i]}
}
if (length($3) > 0) {
vn=""; for (i=0; i<indent; i++) {vn=(vn)(vname[i])(".")}
printf("%s%s%s=%s\n", "'$prefix'",vn, $2, $3);
}
}' | grep image); do
echo $line
if echo $line | grep -q Version ; then
pull_docker_image "$image_name:$(echo $line | awk -F "=" '{print $2}')" &
else
image_name=`echo ${line#*=}`
if [[ ${image_name#*${nexus_docker_repo:-nexus3.onap.org:10001}} == *:* ]]; then
pull_docker_image $image_name &
else
pull_docker_image $image_name:latest
fi
fi
done
}
# _wait_docker_pull() - Function that waits for all docker pull processes
function _wait_docker_pull {
local counter=150
while [ $(ps -ef | grep "docker pull" | wc -l) -gt 1 ]; do
sleep $oom_delay
counter=$((counter - 1))
if [ "$counter" -eq 0 ]; then
break
fi
done
}
# get_oom_images() - Function that retrieves ONAP images from official hub
function get_oom_images {
if [[ "$build_image" == "True" ]]; then
# TODO(electrocucaracha): Create a function for calling the build docker function of every ONAP project
echo "Not Implemented"
else
if [[ "$clone_repo" != "True" ]]; then
clone_repos "oom"
fi
docker_openecomp_login
for values_file in `find ${src_folders[oom]}/kubernetes -name values.yaml -type f`; do
_pull_images_from_yaml_file $values_file
done
docker logout
_wait_docker_pull
fi
}
# _install_oom() - Function that clones OOM and deploys ONAP
function install_oom {
if [[ "$clone_repo" != "True" ]]; then
clone_repos "oom"
fi
pushd ${src_folders[oom]}/kubernetes/oneclick
source setenv.bash
pushd ${src_folders[oom]}/kubernetes/config
cp onap-parameters-sample.yaml onap-parameters.yaml
./createConfig.sh -n onap
popd
for app in consul msb mso message-router sdnc vid robot portal policy appc aai sdc dcaegen2 log cli multicloud clamp vnfsdk uui aaf vfc kube2msb; do
./createAll.bash -n onap -a $app
done
popd
}
# init_oom() - Function that deploys ONAP using OOM
function init_oom {
mount_external_partition sda /var/lib/docker/
_install_kubernetes
_install_kubectl
_install_helm
if [[ "$clone_repo" == "True" ]]; then
clone_repos "oom"
fi
if [[ "$skip_get_images" == "False" ]]; then
get_oom_images
if [[ "$skip_install" == "False" ]]; then
until kubectl cluster-info; do
echo "waiting for kubernetes host"
sleep $oom_delay
done
install_oom
fi
fi
}
|