-
Notifications
You must be signed in to change notification settings - Fork 0
/
rails_app_gener.sh
executable file
·99 lines (77 loc) · 2.41 KB
/
rails_app_gener.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
#/bin/bash
#################################
# configuration variables
################################
# default parameters
VM_2="null"
DS_IP="null"
NETWORK_NAME="private-network"
NETWORK="192.168.0.0/24"
RAILS_NODE="rails-webapp"
RAILS_NODE_IMAGE="rails-image"
REPLICATION="3"
DYN_MAX_KEY="65536"
# arguments
while (( "$#" ));
do
PARAM="$1";
VALUE="$2";
case $PARAM in
-n)
NETWORK="$VALUE"
;;
-nName)
NETWORK_NAME="$VALUE"
;;
-name)
RAILS_NODE="$VALUE"
;;
-image)
RAILS_NODE_IMAGE="$VALUE"
;;
-r)
REPLICATION="$VALUE"
;;
-d)
DYN_MAX_KEY="$VALUE"
;;
-vm)
VM_2="$VALUE"
;;
-ds)
DS_IP="$VALUE"
;;
esac
shift
done
#############################################
# creating app
#############################################
echo "---------Creating rails app---------";
echo "Parameters:"
echo $VM_2
echo $DS_IP
echo $NETWORK_NAME
echo $NETWORK
echo $RAILS_NODE
echo $RAILS_NODE_IMAGE
echo $REPLICATION
echo $DYN_MAX_KEY
echo "---------Creating rails app---------"
PORT=$[RANDOM % 64530 + 1024]
ID_CONTAINER=$[RANDOM % 1000 + 1]
UUID=$(uuidgen)
IP=$(docker-machine ip $VM_2)
json="{ \"ID\": \"$UUID\", \"Name\": \"$RAILS_NODE\", \"Address\": \"$OVER_IP\", \"Port\": 3000, \"check\": { \"name\": \"web-check\", \"http\": \"http://$IP:$PORT\", \"interval\": \"20s\", \"timeout\": \"5s\", \"status\": \"passing\"}}"
echo $json
docker run -itd -p $PORT:3000 --net="$NETWORK_NAME" --name "$RAILS_NODE$ID_CONTAINER" --env="constraint:node==$VM_2" -e CONSUL_IP=$DS_IP -e REPLICATION=$REPLICATION -e DYNAMO_MAX_KEY=$DYN_MAX_KEY -e REGISTER_STRING="$json" $RAILS_NODE_IMAGE
##############
# temporary
##############
OVER_IP=$(docker exec $RAILS_NODE$ID_CONTAINER ip addr| grep "inet "| grep "192.168"| tr -s "/" |cut -d "/" -f1|tr -s " "|cut -d " " -f3)
json="{ \"ID\": \"$UUID\", \"Name\": \"$RAILS_NODE\", \"Address\": \"$OVER_IP\", \"Port\": 3000, \"EXT_IP\": \"$IP:$PORT\", \"tags\":[\"$IP:$PORT\"], \"check\": { \"name\": \"web-check\", \"http\": \"http://$IP:$PORT/node/health\", \"interval\": \"10s\", \"timeout\": \"5s\", \"status\": \"passing\"}}"
sleep 15
echo $json > ./temporary.json
curl -X PUT --data-binary @temporary.json http://$DS_IP:8500/v1/agent/service/register
rm ./temporary.json
curl http://$(docker-machine ip $VM_2):$(docker ps | grep "$RAILS_NODE_$ID_CONTAINER" | tr -s " " | cut -d" " -f16 | cut -d: -f2 | cut -d"-" -f1)/node/register_to_service_discovery