-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathlaunch-aws-nginx-demo.sh
executable file
·108 lines (75 loc) · 2.82 KB
/
launch-aws-nginx-demo.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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/bash
#
# Weave Nginx AWS Demo - Setup Weave and our containers
#
WEAVEDEMO_GROUPNAME=${WEAVEDEMO_GROUPNAME:-weavedemo}
WEAVEDEMO_HOSTCOUNT=${WEAVEDEMO_HOSTCOUNT:-2}
AWS_AMI=${AWS_AMI:-}
SSH_OPTS=${SSH_OPTS:-"-o StrictHostKeyChecking=no"}
DIRNAME=`dirname $0`
if [ $DIRNAME = "." ]; then
DIRNAME=`pwd`
fi
MY_KEY=$DIRNAME/$WEAVEDEMO_GROUPNAME-key.pem
WEAVEDEMO_ENVFILE=$DIRNAME/weavedemo.env
KEYPAIR=$WEAVEDEMO_GROUPNAME-key
MY_R_FILTER="Name=instance-state-name,Values=running"
MY_SSH="ssh -i $MY_KEY"
DNS_OFFSET=1
CONTAINER_OFFSET=1
DNS_BASE=10.2.1
APP_BASE=10.3.1
function launchWeave() {
myHostIP=$1
myWeaveDnsPeer=$2
myDnsOffSet=$3
myDnsIp=$(echo "$DNS_BASE.$myDnsOffSet")
echo "Launching Weave and WeaveDNS on $myHostIP"
if [ $myHostIP == $myWeaveDnsPeer ]; then
$MY_SSH $SSH_OPTS ubuntu@$myHostIP "sudo weave launch"
else
$MY_SSH $SSH_OPTS ubuntu@$myHostIP "sudo weave launch $myWeaveDnsPeer"
fi
$MY_SSH $SSH_OPTS ubuntu@$myHostIP "sudo weave launch-dns $myDnsIp/24"
}
function launchApacheDemo() {
myHostIP=$1
myContainerOffSet=$2
myContainerIP=$(echo "$APP_BASE.$myContainerOffSet")
myDnsName=$(echo "ws$myContainerOffSet.weave.local")
echo "Launching php app container $myDnsName on $myHostIP with $myContainerIP"
$MY_SSH $SSH_OPTS ubuntu@$myHostIP "sudo weave run --with-dns $myContainerIP/24 -h $myDnsName fintanr/weave-gs-nginx-apache"
}
function launchNginx() {
myHostIP=$1
myContainerOffSet=$2
myContainerIP=$(echo "$APP_BASE.$myContainerOffSet")
myDnsName=nginx.weave.local
echo "Launching nginx front end app container $myDnsName on $myHostIP with $myContainerIP"
$MY_SSH $SSH_OPTS ubuntu@$myHostIP "sudo weave run --with-dns $myContainerIP/24 -ti -h $myDnsName -d -p 80:80 fintanr/weave-gs-nginx-simple"
}
echo "Launching Weave and WeaveDNS on each AWS host"
. $WEAVEDEMO_ENVFILE
TMP_HOSTCOUNT=0
while [ $TMP_HOSTCOUNT -lt $WEAVE_AWS_DEMO_HOSTCOUNT ]; do
HOST_IP=${WEAVE_AWS_DEMO_HOSTS[$TMP_HOSTCOUNT]}
launchWeave $HOST_IP $WEAVE_AWS_DEMO_HOST1 $DNS_OFFSET
DNS_OFFSET=$(expr $DNS_OFFSET + 1)
TMP_HOSTCOUNT=$(expr $TMP_HOSTCOUNT + 1)
done
echo "Launching 3 Simple PHP App Containers on each AWS host"
TMP_HOSTCOUNT=0
while [ $TMP_HOSTCOUNT -lt $WEAVE_AWS_DEMO_HOSTCOUNT ]; do
HOST_IP=${WEAVE_AWS_DEMO_HOSTS[$TMP_HOSTCOUNT]}
while [ `expr $CONTAINER_OFFSET % 3` -ne 0 ]; do
launchApacheDemo $HOST_IP $CONTAINER_OFFSET
CONTAINER_OFFSET=$(expr $CONTAINER_OFFSET + 1 )
done
if [ `expr $CONTAINER_OFFSET % 3` -eq 0 ]; then
launchApacheDemo $HOST_IP $CONTAINER_OFFSET
fi
CONTAINER_OFFSET=$(expr $CONTAINER_OFFSET + 1 )
TMP_HOSTCOUNT=$(expr $TMP_HOSTCOUNT + 1)
done
echo "Launching our Nginx front end"
launchNginx $WEAVE_AWS_DEMO_HOST1 $CONTAINER_OFFSET