blob: 517c4e46d7fa356783220877fd759426cac84a8c (
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
|
#!/bin/bash
#placeholder for deployment script.
set -ex
# ./02-deploybundle.sh $opnfvtype $openstack $opnfvlab $opnfvsdn $opnfvfeature $opnfvdistro
opnfvtype=$1
openstack=$2
opnfvlab=$3
opnfvsdn=$4
opnfvfeature=$5
opnfvdistro=$6
opnfvmodel=$7
jujuver=`juju --version`
maasver=`apt-cache policy maas | grep Installed | cut -d ':' -f 2 | sed -e 's/ //'`
if [[ "$opnfvmodel" = "openstack" ]]; then
#copy and download charms
./$opnfvsdn/fetch-charms.sh $opnfvdistro
osdomname=''
else
./kubernetes/fetch-charms.sh $opnfvdistro
fi
#check whether charms are still executing the code even juju-deployer says installed.
check_status() {
waitstatus=$1
retval=0
timeoutiter=0
echo -n "executing the reltionship within charms ."
while [ $retval -eq 0 ]; do
if juju status | grep -q $waitstatus; then
echo -n '.'
if [ $timeoutiter -ge 240 ]; then
echo 'timed out'
retval=1
else
sleep 30
fi
timeoutiter=$((timeoutiter+1))
else
echo 'done'
retval=1
fi
done
echo "...... deployment finishing ......."
}
#read the value from deployconfig.yaml
PROFILE=maas
MAAS_IP=$(grep " ip_address" deployconfig.yaml | cut -d ':' -f 2 | sed -e 's/ //')
API_SERVERMAAS="http://$MAAS_IP/MAAS/"
if [[ "$maasver" > "2" ]]; then
API_KEY=`sudo maas-region apikey --username=ubuntu || true`
else
API_KEY=`sudo maas-region-admin apikey --username=ubuntu || true`
fi
if [[ "$API_KEY" = "" ]]; then
if [[ "$maasver" > "2" ]]; then
API_KEY=`sshpass -p ubuntu ssh ubuntu@$MAAS_IP 'sudo maas-region apikey --username=ubuntu'`
else
API_KEY=`sshpass -p ubuntu ssh ubuntu@$MAAS_IP 'sudo maas-region-admin apikey --username=ubuntu'`
fi
fi
maas login $PROFILE $API_SERVERMAAS $API_KEY
if [[ "$opnfvmodel" = "openstack" ]]; then
if [ -e ./deployconfig.yaml ]; then
extport=`grep "ext-port" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //' | tr ',' ' '`
datanet=`grep "dataNetwork" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //'`
admnet=`grep "admNetwork" deployconfig.yaml | cut -d ' ' -f 4 | sed -e 's/ //'`
cephdisk=`grep "ceph-disk" deployconfig.yaml | cut -d ':' -f 2 | sed -e 's/ //'`
osdomname=`grep "os-domain-name" deployconfig.yaml | cut -d ':' -f 2 | sed -e 's/ //'`
fi
if [[ "$maasver" > "2" ]]; then
workmutiple=`maas maas nodes read | grep "cpu_count" | cut -d ':' -f 2 | sed -e 's/ //' | tr ',' ' '`
else
workmutiple=`maas maas nodes list | grep "cpu_count" | cut -d ':' -f 2 | sed -e 's/ //' | tr ',' ' '`
fi
max=0
for v in ${workmutiple[@]}; do
if (( $v > $max )); then max=$v; fi;
done
echo $max
if [ "$max" -lt 4 ];then
workmutiple=1.1
elif [ "$max" -lt 33 ]; then
workmutiple=0.25
elif [ "$max" -lt 73 ]; then
workmutiple=0.1
else
workmutiple=0.05
fi
sed -i "s/worker_multiplier: 1.0/worker_multiplier: ${workmutiple}/g" default_deployment_config.yaml
if [ "$opnfvlab" != "default" ]; then
sed -i "s/cpu_pin_set: all/cpu_pin_set: 2-${max},^${max}/g" default_deployment_config.yaml
else
sed -i "s/cpu_pin_set: all/cpu_pin_set: 1/g" default_deployment_config.yaml
fi
fi
case "$opnfvlab" in
'juniperpod1' )
sed -i -- 's/10.4.1.1/172.16.50.1/g' ./bundles.yaml
sed -i -- 's/#ext-port: "eth1"/ext-port: "eth1"/g' ./bundles.yaml
;;
'ravellodemopod' )
sed -i -- 's/#ext-port: "eth1"/ext-port: "eth2"/g' ./bundles.yaml
;;
esac
# lets put the if separator as "," as this will save me from world.
fea=""
IFS=","
for feature in $opnfvfeature; do
if [ "$fea" == "" ]; then
fea=$feature
else
fea=$fea"_"$feature
fi
done
if [[ "$opnfvmodel" = "openstack" ]]; then
#update source if trusty is target distribution
var=os-$opnfvsdn-$fea-$opnfvtype"-"$opnfvdistro"_"$openstack
if [ "$osdomname" != "None" ]; then
var=$var"_"publicapi
fi
else
var=k8-$opnfvsdn-$fea-baremetal-core
fi
if [[ "$opnfvmodel" = "openstack" ]]; then
#lets generate the bundle for all target using genBundle.py
python genBundle.py -l deployconfig.yaml -s $var > bundles.yaml
else
#lets generate the bundle for k8 target using genK8Bundle.py
python genK8Bundle.py -l deployconfig.yaml -s $var > bundles.yaml
fi
#keep the back in cloud for later debugging.
pastebinit bundles.yaml || true
if [[ "$jujuver" < "2" ]]; then
echo "... Deployment Started ...."
juju-deployer -vW -d -t 7200 -r 5 -c bundles.yaml $opnfvdistro-"$openstack"-nodes
count=`juju status nodes --format=short | grep nodes | wc -l`
c=0
while [ $c -lt $count ]; do
juju ssh nodes/$c 'echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p' || true
juju ssh nodes-compute/$c 'echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p' || true
juju ssh nodes/$c 'echo 2048 | sudo tee /proc/sys/fs/inotify/max_user_instances' || true
juju ssh nodes-compute/$c 'echo 2048 | sudo tee /proc/sys/fs/inotify/max_user_instances' || true
let c+=1
done
juju-deployer -vW -d -t 7200 -r 5 -c bundles.yaml $opnfvdistro-"$openstack" || true
else
# with JUJU 2.0 bundles has to be deployed only once.
juju deploy bundles.yaml --debug
sleep 120
check_status allocating
# seeing issue related to number of open files.
count=`juju status nodes --format=short | grep nodes | wc -l`
c=0
while [ $c -lt $count ]; do
juju ssh nodes/$c 'echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p' || true
juju ssh nodes-compute/$c 'echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p' || true
juju ssh nodes/$c 'echo 2048 | sudo tee /proc/sys/fs/inotify/max_user_instances' || true
juju ssh nodes-compute/$c 'echo 2048 | sudo tee /proc/sys/fs/inotify/max_user_instances' || true
let c+=1
done
fi
if [ "$opnfvsdn" = "ocl" ]
then
ROLES="contrail-controller contrail-analytics contrail-analyticsdb"
TAG="ubuntu16.04-4.0.0.0-20.tar.gz"
for ROLE in $ROLES
do
FILE="${ROLE}-${TAG}"
if [ ! -f $FILE ]
then
curl -o $FILE http://artifacts.opnfv.org/ovno/containers/$FILE
fi
juju attach $ROLE ${ROLE}="./$FILE"
done
fi
#lets gather the status of deployment once juju-deployer completed.
juju status --format=tabular
|