-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconvensul.sh
executable file
·50 lines (42 loc) · 1.35 KB
/
convensul.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
#!/bin/bash
set -e
if [[ -z $1 || -z $2 || -z $3 || -z $4 ]]
then
echo "Usage: convensul.sh <CONSUL_HOST> <CONSUL_TOKEN> <KV> <APP> [ARG_1] ... [ARG_N]"
echo
echo "Initializes environment with env vars from Consul YAML document and runs app."
echo
echo " CONSUL_HOST Consul agent address (you can also override port usinng ':')"
echo " CONSUL_TOKEN Consul ACL token. Set to '-' to use value from CONVENSUL_TOKEN env var."
echo " KV Path to config document in KV."
echo " APP Child application to run"
echo " ARG_1 ... ARG_N Optional arguments to pass to child application"
echo
echo "Created by Andrew Dunai <[email protected]>"
exit 1
fi
HOST=$(echo $1 | awk -F: '{print $1}')
PORT=$(echo $1 | awk -F: '{print $2}')
PORT=${PORT:-8500}
TOKEN=$2
KV=$3
KV=`echo $KV | sed -re 's/^\/+|\/+$//g'`
ARGS="${@:4}"
if [[ "$TOKEN" == "-" ]]
then
TOKEN=$CONVENSUL_TOKEN
if [[ -z "$TOKEN" ]]
then
echo "Error: CONVENSUL_TOKEN env var must be set if TOKEN is set to '-'."
exit 1
fi
fi
DATA=`curl -sS "http://${HOST}:${PORT}/v1/kv/${KV}?dc=dc1&token=${TOKEN}&raw"`
LINES=()
while read -r line
do
key=`echo $line | cut -d: -f1 | xargs`
value=`echo $line | cut -d: -f2- | xargs`
LINES+=("$key=$value")
done <<< "$DATA"
env ${LINES[@]} ${ARGS}