-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathremote.sh
163 lines (134 loc) · 2.84 KB
/
remote.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
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
PROGNAME="$(basename $0)"
BASEDIR=$(cd $(dirname $0); pwd)
BASEURL=https://raw.githubusercontent.com/mirakc/performance-measurements/main
DOCKER='docker'
if which docker-compose >/dev/null 2>&1
then
DOCKER_COMPOSE='docker-compose'
else
DOCKER_COMPOSE='docker compose'
fi
if [ "$(uname)" != Linux ] || id -nG | grep -q docker
then
DOCKER="$DOCKER"
DOCKER_COMPOSE="$DOCKER_COMPOSE"
else
DOCKER="sudo $DOCKER"
DOCKER_COMPOSE="sudo $DOCKER_COMPOSE"
fi
UPSTREAM_IPADDR=
TZ=Asia/Tokyo
help() {
cat <<EOF >&2
USAGE:
$PROGNAME [options] setup <upstream-ipaddr> [<tz>]
$PROGNAME [options] up [<containers>...]
$PROGNAME [options] down [<containers>...]
$PROGNAME [options] clean
$PROGNAME [options] clean-all
$PROGNAME -h | --help
OPTIONS:
-h, --help
Show help.
-r, --remote
SSH remote host.
COMMANDS:
setup
Setup a remote environment for performance measurements.
Create the "\$HOME/mirakc-perf" holder in the remote machine and copy files
from this repository.
up
Create and start containers.
Start all containers if no <containers> are specified.
down
Stop and remove containers.
Stop all containers if no <containers> are specified.
clean
Cleanup.
No Docker image will be removed.
clean-all
Cleanup and remove unused Docker images.
ARGUMENTS:
<upstream-ipaddr>
IP address of an upstream Mirakurun-compatible server listening on 40772 TCP
port.
<tz> [default: $TZ]
Timezone.
<containers>
The following containers are defiend in the docker-compose.yml:
* mirakc-alpine
* mirakc-debian
* mirakurun
EOF
exit 0
}
setup() {
UPSTREAM_IPADDR=$1
if [ -n "$2" ]
then
TZ="$2"
fi
echo 'INFO: Copying files...'
scp -r $BASEDIR/docker $REMOTE:/tmp/mirakc-perf
cat <<EOF | ssh $REMOTE sh -c 'cat >/tmp/mirakc-perf/.env'
UPSTREAM_IPADDR=$UPSTREAM_IPADDR
TZ=$TZ
EOF
echo 'Pulling images...'
ssh $REMOTE 'cd /tmp/mirakc-perf && docker compose pull -q'
exit 0
}
up() {
ssh $REMOTE "cd /tmp/mirakc-perf && docker compose up -d $@"
exit 0
}
down() {
ssh $REMOTE "cd /tmp/mirakc-perf && docker compose down -v $@"
exit 0
}
clean() {
ssh $REMOTE "cd /tmp/mirakc-perf && docker compose down -v"
ssh $REMOTE "rm -rf /tmp/mirakc-perf"
exit 0
}
clean_all() {
ssh $REMOTE "cd /tmp/mirakc-perf && docker compose down -v"
ssh $REMOTE "docker image prune -af"
ssh $REMOTE "rm -rf /tmp/mirakc-perf"
exit 0
}
while [ $# -gt 0 ]
do
case "$1" in
'-h' | '--help')
help
;;
'-r' | '--remote')
REMOTE=$2
shift 2
;;
'setup')
shift
setup "$@"
;;
'up')
shift
up "$@"
;;
'down')
shift
down "$@"
;;
'clean')
shift
clean
;;
'clean-all')
shift
clean_all
;;
*)
help
;;
esac
done