-
Notifications
You must be signed in to change notification settings - Fork 0
/
gen_yml.sh
executable file
·101 lines (79 loc) · 1.9 KB
/
gen_yml.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
#!/bin/bash
# distributed algorithms, n.dulay 25 jan 18
# coursework 2, create docker-compose.yml file
MAIN=$1
CONFIG=$2
SETUP=$3
SERVERS=$4
CLIENTS=$5
FILE=docker-compose.yml
# ----------------------------------------------------------
cat > $FILE << ENDHEADER
# distributed algorithms, n.dulay, 2 feb 18
# coursework 2 - paxos made moderately complex
# docker-compose.yml v1
version: "3.4"
x-common:
&defaults
image: elixir:alpine
volumes:
- .:/project
working_dir: /project
networks:
- network
networks:
network:
driver: bridge
services:
paxos.localdomain:
container_name: paxos
command: >
elixir --name paxos@paxos.localdomain --cookie pass
-S mix run --no-halt -e ${MAIN} ${CONFIG} ${SETUP} ${SERVERS} ${CLIENTS}
depends_on:
ENDHEADER
for k in $(seq 1 $SERVERS)
do
cat >> $FILE << ENDSERVERS
- server${k}.localdomain
ENDSERVERS
done
for k in $(seq 1 $CLIENTS)
do
cat >> $FILE << ENDCLIENTS
- client${k}.localdomain
ENDCLIENTS
done
cat >> $FILE << ENDHEADER
<<: *defaults
ENDHEADER
# ----------------------------------------------------------
for k in $(seq 1 $SERVERS)
do
cat >> $FILE << ENDSERVERS
server${k}.localdomain:
container_name: server${k}
command: >
elixir --name server${k}@server${k}.localdomain --cookie pass
-S mix run --no-halt
<<: *defaults
ENDSERVERS
done
# ----------------------------------------------------------
for k in $(seq 1 $CLIENTS)
do
cat >> $FILE << ENDCLIENTS
client${k}.localdomain:
container_name: client${k}
command: >
elixir --name client${k}@client${k}.localdomain --cookie pass
-S mix run --no-halt
<<: *defaults
ENDCLIENTS
done
echo >> $FILE << ENDFOOTER
# MISC
# - anchors only available in version 3.5, ditto x- services
# - macvlan network driver also works
# - tabs are a no-no, use spaces
ENDFOOTER