forked from soheilhy/devstack
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathlocal.sh
More file actions
executable file
·321 lines (254 loc) · 14.2 KB
/
local.sh
File metadata and controls
executable file
·321 lines (254 loc) · 14.2 KB
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
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
set -x
TOP_DIR=$(cd $(dirname "$0") && pwd)
source $TOP_DIR/stackrc
source $TOP_DIR/functions
DEST=${DEST:-/opt/stack}
IMG_DIR=${IMG_DIR:-/mnt/volume/image_dir}
source $TOP_DIR/openrc admin admin CORE $KEYSTONE_AUTH_HOST
NOVA_DIR=$DEST/nova
if [ -d $NOVA_DIR/bin ] ; then
NOVA_BIN_DIR=$NOVA_DIR/bin
else
NOVA_BIN_DIR=/usr/local/bin
fi
MYSQL_USER=${MYSQL_USER:-root}
BM_PXE_INTERFACE=${BM_PXE_INTERFACE:-eth1}
BM_PXE_PER_NODE=`trueorfalse False $BM_PXE_PER_NODE`
$NOVA_BIN_DIR/nova-manage instance_type create --name=gpu --cpu=1 --memory=1 --root_gb=100 --ephemeral_gb=0 --swap=2048 --rxtx_factor=1 --flavor=6
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=gpu --key cpu_arch --value gpu_x86_64
$NOVA_BIN_DIR/nova-manage instance_type create --name=netfpga.10g --cpu=1 --memory=1 --root_gb=50 --ephemeral_gb=0 --swap=2048 --rxtx_factor=1 --flavor=7
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=netfpga.10g --key cpu_arch --value nf2_x86_64
$NOVA_BIN_DIR/nova-manage instance_type create --name=netfpga.1g --cpu=1 --memory=1 --root_gb=40 --ephemeral_gb=0 --swap=2048 --rxtx_factor=1 --flavor=8
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=netfpga.1g --key cpu_arch --value nf1_i686
$NOVA_BIN_DIR/nova-manage instance_type create --name=xeon_32 --cpu=1 --memory=1 --root_gb=30 --ephemeral_gb=0 --swap=2048 --rxtx_factor=1 --flavor=9
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=xeon_32 --key cpu_arch --value i686
$NOVA_BIN_DIR/nova-manage instance_type create --name=atom --cpu=1 --memory=1 --root_gb=50 --ephemeral_gb=0 --swap=2048 --rxtx_factor=1 --flavor=10
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=atom --key cpu_arch --value i686_atom
$NOVA_BIN_DIR/nova-manage instance_type create --name=bee2 --cpu=1 --memory=1 --root_gb=40 --ephemeral_gb=0 --swap=2048 --rxtx_factor=1 --flavor=11
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=bee2 --key cpu_arch --value bee2_board
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=m1.tiny --key cpu_arch --value virtual
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=m1.small --key cpu_arch --value virtual
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=m1.medium --key cpu_arch --value virtual
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=m1.large --key cpu_arch --value virtual
$NOVA_BIN_DIR/nova-manage instance_type set_key --name=m1.xlarge --key cpu_arch --value virtual
sudo apt-get -y install dnsmasq syslinux ipmitool qemu-kvm open-iscsi snmp
sudo apt-get -y install busybox tgt
BMIB_REPO=https://github.com/hesamrahimi/baremetal-initrd-builder.git
BMIB_DIR=$DEST/barematal-initrd-builder
BMIB_BRANCH=silver
git_clone $BMIB_REPO $BMIB_DIR $BMIB_BRANCH
KERNEL=~/deploy_kernel
RAMDISK=~/deploy_ramdisk
if [ ! -f "$RAMDISK" ]; then
(
KERNEL_VER=`uname -r`
KERNEL_=/boot/vmlinuz-$KERNEL_VER
sudo cp "$KERNEL_" "$KERNEL"
sudo chmod a+r "$KERNEL"
cd "$BMIB_DIR"
./baremetal-mkinitrd.sh "$RAMDISK" "$KERNEL_VER"
)
fi
#GLANCE_HOSTPORT=${GLANCE_HOSTPORT:-$GLANCE_HOST:9292}
#echo "user is: $OS_USERNAME"
#echo "pass is: ...."
#echo "region is: $OS_REGION_NAME"
#echo "tenant is $OS_TENANT_NAME"
#echo "os_auth_url is $OS_AUTH_URL"
#KERNEL_ID=$(glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "baremetal-deployment-kernel" --public --container-format aki --disk-format aki < "$KERNEL" | grep ' id ' | get_field 2)
DEP_IMAGE_ID=`glance image-list | grep "baremetal-deployment" | awk '{ print $2 }'`
if [[ -z "DEP_IMAGE_ID" ]]; then
KERNEL_ID=$(glance image-create --name "baremetal-deployment-kernel" --public --container-format aki --disk-format aki < "$KERNEL" | grep ' id ' | get_field 2)
echo "$KERNEL_ID"
#RAMDISK_ID=$(glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "baremetal-deployment-ramdisk" --public --container-format ari --disk-format ari < "$RAMDISK" | grep ' id ' | get_field 2)
RAMDISK_ID=$(glance image-create --name "baremetal-deployment-ramdisk" --public --container-format ari --disk-format ari < "$RAMDISK" | grep ' id ' | get_field 2)
echo "$RAMDISK_ID"
fi
echo "building ubuntu image"
IMG=$IMG_DIR/ubuntu.img
./build-ubuntu-image.sh "$IMG" "$DEST"
ACTIVE_REGION=$OS_REGION_NAME
export OS_REGION_NAME=CORE
IMAGE_ID_OLD=$(glance image-list | grep Ubuntu64)
if [[ -z "$IMAGE_ID_OLD" ]]; then
#REAL_KERNEL_ID=$(glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "baremetal-real-kernel" --public --container-format aki --disk-format aki < "$DEST/kernel" | grep ' id ' | get_field 2)
glance image-list | grep "baremetal-64-real-kernel" | awk '{print $2}' | xargs -I {} glance image-delete {}
glance image-list | grep "baremetal-64-real-ramdisk" | awk '{print $2}' | xargs -I {} glance image-delete {}
REAL_KERNEL_ID=$(glance image-create --name "baremetal-64-real-kernel" --public --container-format aki --disk-format aki < "$DEST/kernel" | grep ' id ' | get_field 2)
#REAL_RAMDISK_ID=$(glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "baremetal-real-ramdisk" --public --container-format ari --disk-format ari < "$DEST/initrd" | grep ' id ' | get_field 2)
REAL_RAMDISK_ID=$(glance image-create --name "baremetal-64-real-ramdisk" --public --container-format ari --disk-format ari < "$DEST/initrd" | grep ' id ' | get_field 2)
#glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "Ubuntu" --public --container-format bare --disk-format raw --property kernel_id=$REAL_KERNEL_ID --property ramdisk_id=$REAL_RAMDISK_ID < "$IMG"
glance image-create --name "Ubuntu64" --public --container-format bare --disk-format raw --property kernel_id=$REAL_KERNEL_ID --property ramdisk_id=$REAL_RAMDISK_ID < "$IMG"
fi
IMG=$IMG_DIR/UbuntuNF2.img
IMAGE_ID_OLD=$(glance image-list | grep UbuntuNF2)
if [[ $IMAGE_ID_OLD = "" && -f "$IMG" ]]; then
REAL_KERNEL_ID=$(glance image-list | grep "baremetal-64-real-kernel" | awk '{ print $2 }')
REAL_RAMDISK_ID=$(glance image-list | grep "baremetal-64-real-ramdisk" | awk '{ print $2 }')
echo "uploading NF2 image"
glance image-create --name "UbuntuNF2" --public --container-format bare --disk-format raw --property kernel_id=$REAL_KERNEL_ID --property ramdisk_id=$REAL_RAMDISK_ID < "$IMG"
fi
IMG=$IMG_DIR/cuda_ubuntu_12_04.img
IMAGE_ID_OLD=$(glance image-list | grep UbuntuGPU)
if [[ -z "$IMAGE_ID_OLD" && -f "$IMG" ]]; then
REAL_KERNEL_ID=$(glance image-list | grep "baremetal-64-real-kernel" | awk '{ print $2 }')
REAL_RAMDISK_ID=$(glance image-list | grep "baremetal-64-real-ramdisk" | awk '{ print $2 }')
echo "Uploading GPU image"
glance image-create --name "UbuntuGPU" --public --container-format bare --disk-format raw --property kernel_id=$REAL_KERNEL_ID --property ramdisk_id=$REAL_RAMDISK_ID < "$IMG"
fi
KERNEL_32=~/kernel32
RAMDISK_32=~/ramdisk32
IMG_32=$IMG_DIR/ubuntu32.img
IMAGE_ID_OLD=$(glance image-list | grep Ubuntu32)
if [[ -z "$IMAGE_ID_OLD" ]]; then
#REAL_KERNEL_ID=$(glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "baremetal-32-real-kernel" --public --container-format aki --disk-format aki < "$KERNEL_32" | grep ' id ' | get_field 2)
glance image-list | grep "baremetal-32-real-kernel" | awk '{print $2}' | xargs -I {} glance image-delete {}
glance image-list | grep "baremetal-32-real-ramdisk" | awk '{print $2}' | xargs -I {} glance image-delete {}
REAL_KERNEL_ID=$(glance image-create --name "baremetal-32-real-kernel" --public --container-format aki --disk-format aki < "$KERNEL_32" | grep ' id ' | get_field 2)
#REAL_RAMDISK_ID=$(glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "baremetal-32-real-ramdisk" --public --container-format ari --disk-format ari < "$RAMDISK_32" | grep ' id ' | get_field 2)
REAL_RAMDISK_ID=$(glance image-create --name "baremetal-32-real-ramdisk" --public --container-format ari --disk-format ari < "$RAMDISK_32" | grep ' id ' | get_field 2)
#glance --os-auth-token $TOKEN --os-image-url http://$GLANCE_HOSTPORT image-create --name "Ubuntu32" --public --container-format bare --disk-format raw --property kernel_id=$REAL_KERNEL_ID --property ramdisk_id=$REAL_RAMDISK_ID < "$IMG_32"
glance image-create --name "Ubuntu32" --public --container-format bare --disk-format raw --property kernel_id=$REAL_KERNEL_ID --property ramdisk_id=$REAL_RAMDISK_ID < "$IMG_32"
fi
IMG=$IMG_DIR/UbuntuNF1.img
IMAGE_ID_OLD=$(glance image-list | grep UbuntuNF1)
if [[ -z "$IMAGE_ID_OLD" && -f "$IMG" ]]; then
REAL_KERNEL_ID=$(glance image-list | grep "baremetal-32-real-kernel" | awk '{ print $2 }')
REAL_RAMDISK_ID=$(glance image-list | grep "baremetal-32-real-ramdisk" | awk '{ print $2 }')
echo "uploading NF1 image"
glance image-create --name "UbuntuNF1" --public --container-format bare --disk-format raw --property kernel_id=$REAL_KERNEL_ID --property ramdisk_id=$REAL_RAMDISK_ID < "$IMG"
fi
export OS_REGION_NAME=$ACTIVE_REGION
TFTPROOT=$DEST/tftproot
if [ -d "$TFTPROOT" ]; then
rm -r "$TFTPROOT"
fi
mkdir "$TFTPROOT"
cp /usr/lib/syslinux/pxelinux.0 "$TFTPROOT"
mkdir $TFTPROOT/pxelinux.cfg
DNSMASQ_PID=/dnsmasq.pid
if [ -f "$DNSMASQ_PID" ]; then
sudo kill `cat "$DNSMASQ_PID"`
sudo rm "$DNSMASQ_PID"
fi
sudo /etc/init.d/dnsmasq stop
sudo sudo update-rc.d dnsmasq disable
if [ "$BM_PXE_PER_NODE" = "False" ]; then
sudo dnsmasq --conf-file= --port=0 --enable-tftp --tftp-root=$TFTPROOT --dhcp-boot=pxelinux.0 --bind-interfaces --pid-file=$DNSMASQ_PID --interface=$BM_PXE_INTERFACE --dhcp-range=10.10.41.150,10.10.41.254 --dhcp-option=option:dns-server,8.8.8.8
fi
mkdir -p $NOVA_DIR/baremetal/console
mkdir -p $NOVA_DIR/baremetal/dnsmasq
OWNER=`whoami`
BM_CONF=/etc/nova-bm
if [ -d "$BM_CONF" ]; then
echo "nova-bm conf dir exist"
sudo rm "$BM_CONF" -rf
fi
sudo mkdir $BM_CONF
sudo chown $OWNER:root $BM_CONF -R
sudo cp -p /etc/nova/* $BM_CONF -rf
inicomment $BM_CONF/nova.conf DEFAULT firewall_driver
OWNER=`whoami`
BEE2_CONF=/etc/nova-bee2
if [ -d "$BEE2_CONF" ]; then
echo "nova-bee2 conf dir exist"
sudo rm "$BEE2_CONF" -rf
fi
sudo mkdir $BEE2_CONF
sudo chown $OWNER:root $BEE2_CONF -R
sudo cp -p /etc/nova/* $BEE2_CONF -rf
inicomment $BEE2_CONF/nova.conf DEFAULT firewall_driver
function iso() {
iniset /etc/nova/nova.conf DEFAULT "$1" "$2"
}
function is() {
iniset $BM_CONF/nova.conf DEFAULT "$1" "$2"
}
function isb() {
iniset $BEE2_CONF/nova.conf DEFAULT "$1" "$2"
}
BMC_HOST=`hostname -f`
BMC_HOST=bmc-$BMC_HOST
BEE2_HOST=`hostname -f`
BEE2_HOST=bee2-$BEE2_HOST
is baremetal_sql_connection mysql://$MYSQL_USER:$MYSQL_PASSWORD@127.0.0.1/nova_bm
isb baremetal_sql_connection mysql://$MYSQL_USER:$MYSQL_PASSWORD@127.0.0.1/nova_bm
is compute_driver nova.virt.baremetal.driver.BareMetalDriver
isb compute_driver nova.virt.baremetal.driver.BareMetalDriver
is baremetal_driver nova.virt.baremetal.pxe.PXE
isb baremetal_driver nova.virt.bee2.bee2-board.BEE2
isb power_manager nova.virt.bee2.ipmi-fake.Ipmi
#is power_manager nova.virt.baremetal.ipmi-fake.Ipmi
#comment the above line and uncomment the next line if you want to use netbooter
is power_manager nova.virt.baremetal.snmp.SnmpNetBoot
is instance_type_extra_specs cpu_arch:nf_x86_64
isb instance_type_extra_specs cpu_arch:bee2_board
is baremetal_tftp_root $TFTPROOT
#is baremetal_term /usr/local/bin/shellinaboxd
is baremetal_deploy_kernel $KERNEL_ID
is baremetal_deploy_ramdisk $RAMDISK_ID
is scheduler_host_manager nova.scheduler.baremetal_host_manager.BaremetalHostManager
iso scheduler_host_manager nova.scheduler.baremetal_host_manager.BaremetalHostManager
is baremetal_pxe_vlan_per_host $BM_PXE_PER_NODE
is baremetal_pxe_parent_interface $BM_PXE_INTERFACE
is firewall_driver ""
isb firewall_driver ""
if [[ "$Q_PLUGIN" = "ryu" ]]; then
is baremetal_vif_driver nova.virt.baremetal.ryu.ryu_vif_driver.RyuVIFDriver
elif [[ "$Q_PLUGIN" = "janus" ]]; then
is baremetal_vif_driver nova.virt.baremetal.janus.janus_vif_driver.JanusVIFDriver
fi
is host $BMC_HOST
isb host $BEE2_HOST
iso host `hostname -f`
mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e 'DROP DATABASE IF EXISTS nova_bm;'
mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e 'CREATE DATABASE nova_bm CHARACTER SET latin1;'
# workaround for invalid compute_node that non-bare-metal nova-compute has left
mysql -u$MYSQL_USER -p$MYSQL_PASSWORD nova -e 'DELETE FROM compute_nodes;'
$NOVA_BIN_DIR/nova-bm-manage --config-dir=$BM_CONF db sync
$NOVA_BIN_DIR/nova-bm-manage --config-dir=$BM_CONF pxe_ip create --cidr 10.10.41.0/24
if [ -f $TOP_DIR/bm-nodes.sh ]; then
. $TOP_DIR/bm-nodes.sh
fi
if [ -f ./bee2-nodes.sh ]; then
. ./bee2-nodes.sh
fi
NL=`echo -ne '\015'`
echo "restarting nova-scheduler"
screen -S stack -p n-sch -X kill
screen -S stack -X screen -t n-sch
sleep 1.5
screen -S stack -p n-sch -X stuff "cd $NOVA_DIR && $NOVA_BIN_DIR/nova-scheduler --config-dir=$BM_CONF $NL"
sleep 5
if is_service_enabled n-cpu; then
echo "restarting nova-compute"
screen -S stack -p n-cpu -X kill
screen -S stack -X screen -t n-cpu
sleep 1.5
screen -S stack -p n-cpu -X stuff "cd $NOVA_DIR && sg libvirtd \"$NOVA_BIN_DIR/nova-compute --config-dir=/etc/nova\" $NL"
fi
echo "starting bm_deploy_server"
screen -S stack -p n-bmd -X kill
screen -S stack -X screen -t n-bmd
sleep 1.5
screen -S stack -p n-bmd -X stuff "cd $NOVA_DIR && $NOVA_BIN_DIR/bm_deploy_server --config-dir=$BM_CONF $NL"
echo "starting baremetal nova-compute"
screen -S stack -p n-cpu-bm -X kill
screen -S stack -X screen -t n-cpu-bm
sleep 1.5
screen -S stack -p n-cpu-bm -X stuff "cd $NOVA_DIR && sg libvirtd \"$NOVA_BIN_DIR/nova-compute --config-dir=$BM_CONF\" $NL"
echo "starting bee2Board nova-compute"
screen -S stack -p n-cpu-bee2 -X kill
screen -S stack -X screen -t n-cpu-bee2
sleep 1.5
screen -S stack -p n-cpu-bee2 -X stuff "cd $NOVA_DIR && sg libvirtd \"$NOVA_BIN_DIR/nova-compute --config-dir=$BEE2_CONF\" $NL"
echo "done baremetal local.sh"
. $TOP_DIR/port_reg.sh
. $TOP_DIR/port_bond.sh
$TOP_DIR/tenant-add.sh
SERVICE_ENDPOINT=$KEYSTONE_AUTH_PROTOCOL://$KEYSTONE_AUTH_HOST:$KEYSTONE_API_PORT/v2.0 \
KEYSTONE_AUTH_HOST=$KEYSTONE_AUTH_HOST REGION_NAME=$REGION_NAME \
HORIZON_DIR=$HORIZON_DIR REGIONS=$REGIONS KEYSTONE_TYPE=$KEYSTONE_TYPE \
ENABLED_SERVICES=$ENABLED_SERVICES PUBLIC_BRIDGE=$PUBLIC_BRIDGE \
OS_REGION_NAME=$REGION_NAME ADMIN_PASSWORD=$ADMIN_PASSWORD\
. $TOP_DIR/local-1.sh