-
Notifications
You must be signed in to change notification settings - Fork 7
/
setup.sh
executable file
·136 lines (118 loc) · 4.03 KB
/
setup.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
#!/bin/bash
set -e -o pipefail
help() {
echo 'Usage ./setup.sh [-f docker-compose.yml] [-p project]'
echo
echo 'Checks that your Triton and Docker environment is sane and configures'
echo 'an environment file to use.'
echo
echo 'Optional flags:'
echo ' -f <filename> use this file as the docker-compose config file'
echo ' -p <project> use this name as the project prefix for docker-compose'
}
# default values which can be overriden by -f or -p flags
export COMPOSE_PROJECT_NAME=haproxy
export COMPOSE_FILE=
# give the docker remote api more time before timeout
export COMPOSE_HTTP_TIMEOUT=300
# populated by `check` function whenever we're using Triton
TRITON_USER=
TRITON_DC=
TRITON_ACCOUNT=
# ---------------------------------------------------
# Top-level commmands
# Check for correct configuration
check() {
command -v docker >/dev/null 2>&1 || {
echo
tput rev # reverse
tput bold # bold
echo 'Docker is required, but does not appear to be installed.'
tput sgr0 # clear
echo 'See https://docs.joyent.com/public-cloud/api-access/docker'
exit 1
}
command -v json >/dev/null 2>&1 || {
echo
tput rev # reverse
tput bold # bold
echo 'Error! JSON CLI tool is required, but does not appear to be installed.'
tput sgr0 # clear
echo 'See https://apidocs.joyent.com/cloudapi/#getting-started'
exit 1
}
# if we're not testing on Triton, don't bother checking Triton config
if [ ! -z "${COMPOSE_FILE}" ]; then
exit 0
fi
command -v triton >/dev/null 2>&1 || {
echo
tput rev # reverse
tput bold # bold
echo 'Error! Joyent Triton CLI is required, but does not appear to be installed.'
tput sgr0 # clear
echo 'See https://www.joyent.com/blog/introducing-the-triton-command-line-tool'
exit 1
}
# make sure Docker client is pointed to the same place as the Triton client
local docker_user=$(docker info 2>&1 | awk -F": " '/SDCAccount:/{print $2}')
local docker_dc=$(echo $DOCKER_HOST | awk -F"/" '{print $3}' | awk -F'.' '{print $1}')
TRITON_USER=$(triton -i profile get | awk -F": " '/account:/{print $2}')
TRITON_DC=$(triton -i profile get | awk -F"/" '/url:/{print $3}' | awk -F'.' '{print $1}')
TRITON_ACCOUNT=$(triton -i account get | awk -F": " '/id:/{print $2}')
# if [ ! "$docker_user" = "$TRITON_USER" ] || [ ! "$docker_dc" = "$TRITON_DC" ]; then
# echo
# tput rev # reverse
# tput bold # bold
# echo 'Error! The Triton CLI configuration does not match the Docker CLI configuration.'
# tput sgr0 # clear
# echo
# echo "Docker user: ${docker_user}"
# echo "Triton user: ${TRITON_USER}"
# echo "Docker data center: ${docker_dc}"
# echo "Triton data center: ${TRITON_DC}"
# exit 1
# fi
local triton_cns_enabled=$(triton -i account get | awk -F": " '/cns/{print $2}')
if [ ! "true" == "$triton_cns_enabled" ]; then
echo
tput rev # reverse
tput bold # bold
echo 'Error! Triton CNS is required and not enabled.'
tput sgr0 # clear
echo
exit 1
fi
if [ -n "$(grep '^CONSUL=' _env)" ]; then
sed -i "s/CONSUL=.*/CONSUL=cosbench-java11-consul.svc.${TRITON_ACCOUNT}.${TRITON_DC}.cns.scloud.host/g" _env
else
echo CONSUL=cosbench-java11-consul.svc.${TRITON_ACCOUNT}.${TRITON_DC}.cns.scloud.host >> _env
fi
}
# ---------------------------------------------------
# parse arguments
while getopts "f:p:h" optchar; do
# shellcheck disable=SC2220
# shellcheck disable=SC2213
case "${optchar}" in
f) export COMPOSE_FILE=${OPTARG} ;;
p) export COMPOSE_PROJECT_NAME=${OPTARG} ;;
esac
done
# shellcheck disable=SC2046
shift $(expr $OPTIND - 1 )
until
cmd=$1
if [ ! -z "$cmd" ]; then
shift 1
$cmd "$@"
if [ $? == 127 ]; then
help
fi
exit
fi
do
echo
done
# default behavior
check