forked from MariusCC/chef-bcpc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautomated_install.sh
executable file
·87 lines (71 loc) · 3.25 KB
/
automated_install.sh
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
#!/bin/bash
################################################################################
# This script designed to provide a complete one-touch install of Chef-BCPC in
# an environment with a proxy and custom DNS servers; VMs booted headlessly
# simple few environment variables to tune booting for fast testing of Chef-BCPC
# Run this script in the root of the git repository
#
set -e
if [ "$(uname)" == "Darwin" ]; then
SEDINPLACE='sed -i ""'
else
SEDINPLACE='sed -i'
fi
if [[ "$(pwd)" != "$(git rev-parse --show-toplevel)" ]]; then
printf '#### WARNING: This should be run in the git top level directory! ####\n' > /dev/stderr
fi
ENVIRONMENT=Test-Laptop
#PROXY=proxy.example.com:80
DNS_SERVERS='"8.8.8.8", "8.8.4.4"'
export BOOTSTRAP_VM_MEM=3096
export BOOTSTRAP_VM_CPUs=2
export CLUSTER_VM_MEM=5120
export CLUSTER_VM_CPUs=4
printf "#### Setup configuration files\n"
# setup vagrant
$SEDINPLACE 's/vb.gui = true/vb.gui = false/' Vagrantfile
# setup proxy_setup.sh
[[ -n "$PROXY" ]] && $SEDINPLACE "s/#export PROXY=.*\"/export PROXY=\"$PROXY\"/" proxy_setup.sh
# setup environment file
$SEDINPLACE "s/\"dns_servers\" : \[ \"8.8.8.8\", \"8.8.4.4\" \]/\"dns_servers\" : \[ $DNS_SERVERS \]/" environments/${ENVIRONMENT}.json
[[ -n "$PROXY" ]] && $SEDINPLACE "s#\(\"bootstrap\": {\)#\1\n\"proxy\" : \"http://$PROXY\",\n#" environments/${ENVIRONMENT}.json
printf "#### Setup VB's and Bootstrap\n"
source ./vbox_create.sh
download_VM_files || ( echo "############## VBOX CREATE DOWNLOAD VM FILES RETURNED $? ##############" && exit 1 )
create_bootstrap_VM || ( echo "############## VBOX CREATE BOOTSTRAP VM RETURNED $? ##############" && exit 1 )
create_cluster_VMs || ( echo "############## VBOX CREATE CLUSTER VMs RETURNED $? ##############" && exit 1 )
install_cluster || ( echo "############## VBOX CREATE INSTALL CLUSTER RETURNED $? ##############" && exit 1 )
printf "#### Cobbler Boot\n"
printf "Snapshotting pre-Cobbler and booting (unless already running)\n"
vms_started="False"
for i in 1 2 3; do
vboxmanage showvminfo bcpc-vm$i | grep -q '^State:.*running' || vms_started="True"
vboxmanage showvminfo bcpc-vm$i | grep -q '^State:.*running' || VBoxManage snapshot bcpc-vm$i take Shoe-less
vboxmanage showvminfo bcpc-vm$i | grep -q '^State:.*running' || VBoxManage startvm bcpc-vm$i --type headless
done
printf "Checking VMs are up: \n"
while ! nc -w 1 10.0.100.11 22 || \
! nc -w 1 10.0.100.12 22 || \
! nc -w 1 10.0.100.13 22
do
sleep 60
printf "Hosts down: "
for m in 11 12 13; do
nc -w 1 10.0.100.$m 22 > /dev/null || echo -n "10.0.100.$m "
done
printf "\n"
done
printf "Snapshotting post-Cobbler\n"
[[ "$vms_started" == "True" ]] && VBoxManage snapshot bcpc-vm1 take Post-Cobble
[[ "$vms_started" == "True" ]] && VBoxManage snapshot bcpc-vm2 take Post-Cobble
[[ "$vms_started" == "True" ]] && VBoxManage snapshot bcpc-vm3 take Post-Cobble
printf "#### Chef all the nodes\n"
vagrant ssh -c "sudo apt-get install -y sshpass"
for i in 1 2 3; do
printf "#### Chef machine bcpc-vm${i}\n"
vagrant ssh -c "cd chef-bcpc; ./cluster-assign-roles.sh $ENVIRONMENT Hadoop bcpc-vm$i"
done
printf "Snapshotting post-Cobbler\n"
VBoxManage snapshot bcpc-vm1 take Full-Shoes
VBoxManage snapshot bcpc-vm2 take Full-Shoes
VBoxManage snapshot bcpc-vm3 take Full-Shoes