Skip to content

Commit 4c192bd

Browse files
committed
start_db_cluster_ssl.sh
1 parent c9f127b commit 4c192bd

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

docker/start_db_cluster_ssl.sh

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#!/bin/bash
2+
3+
# USAGE:
4+
# export ARANGO_LICENSE_KEY=<arangodb-enterprise-license>
5+
# ./start_db_cluster.sh <dockerImage>
6+
7+
# EXAMPLE:
8+
# ./start_db_cluster.sh docker.io/arangodb/arangodb:3.7.1
9+
10+
docker pull "$1"
11+
12+
LOCATION=$(pwd)/$(dirname "$0")
13+
14+
docker network create arangodb --subnet 172.28.0.0/16
15+
16+
echo "Averysecretword" > "$LOCATION"/jwtSecret
17+
docker run --rm -v "$LOCATION"/jwtSecret:/jwtSecret "$1" arangodb auth header --auth.jwt-secret /jwtSecret > "$LOCATION"/jwtHeader
18+
AUTHORIZATION_HEADER=$(cat "$LOCATION"/jwtHeader)
19+
20+
echo "Starting containers..."
21+
22+
docker run -d -v $(pwd)/server.pem:/server.pem -v "$LOCATION"/jwtSecret:/jwtSecret -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" --network arangodb --ip 172.28.1.1 --name agent1 "$1" arangodb --ssl.keyfile /server.pem --cluster.start-dbserver false --cluster.start-coordinator false --auth.jwt-secret /jwtSecret
23+
docker run -d -v $(pwd)/server.pem:/server.pem -v "$LOCATION"/jwtSecret:/jwtSecret -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" --network arangodb --ip 172.28.1.2 --name agent2 "$1" arangodb --ssl.keyfile /server.pem --cluster.start-dbserver false --cluster.start-coordinator false --starter.join agent1 --auth.jwt-secret /jwtSecret
24+
docker run -d -v $(pwd)/server.pem:/server.pem -v "$LOCATION"/jwtSecret:/jwtSecret -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" --network arangodb --ip 172.28.1.3 --name agent3 "$1" arangodb --ssl.keyfile /server.pem --cluster.start-dbserver false --cluster.start-coordinator false --starter.join agent1 --auth.jwt-secret /jwtSecret
25+
26+
docker run -d -v $(pwd)/server.pem:/server.pem -v "$LOCATION"/jwtSecret:/jwtSecret -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" --network arangodb --ip 172.28.2.1 --name dbserver1 "$1" arangodb --ssl.keyfile /server.pem --cluster.start-dbserver true --cluster.start-coordinator false --starter.join agent1 --auth.jwt-secret /jwtSecret
27+
docker run -d -v $(pwd)/server.pem:/server.pem -v "$LOCATION"/jwtSecret:/jwtSecret -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" --network arangodb --ip 172.28.2.2 --name dbserver2 "$1" arangodb --ssl.keyfile /server.pem --cluster.start-dbserver true --cluster.start-coordinator false --starter.join agent1 --auth.jwt-secret /jwtSecret
28+
29+
docker run -d -v $(pwd)/server.pem:/server.pem -v "$LOCATION"/jwtSecret:/jwtSecret -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" --network arangodb --ip 172.28.3.1 --name coordinator1 "$1" arangodb --ssl.keyfile /server.pem --cluster.start-dbserver false --cluster.start-coordinator true --starter.join agent1 --auth.jwt-secret /jwtSecret
30+
docker run -d -v $(pwd)/server.pem:/server.pem -v "$LOCATION"/jwtSecret:/jwtSecret -e ARANGO_LICENSE_KEY="$ARANGO_LICENSE_KEY" --network arangodb --ip 172.28.3.2 --name coordinator2 "$1" arangodb --ssl.keyfile /server.pem --cluster.start-dbserver false --cluster.start-coordinator true --starter.join agent1 --auth.jwt-secret /jwtSecret
31+
32+
debug_container() {
33+
if [ ! "$(docker ps -aqf name="$1")" ]; then
34+
echo "$1 container not found!"
35+
exit 1
36+
fi
37+
38+
running=$(docker inspect -f '{{.State.Running}}' "$1")
39+
40+
if [ "$running" = false ]
41+
then
42+
echo "$1 is not running!"
43+
echo "---"
44+
docker logs "$1"
45+
echo "---"
46+
exit 1
47+
fi
48+
}
49+
50+
debug() {
51+
for c in agent1 \
52+
agent2 \
53+
agent3 \
54+
dbserver1 \
55+
dbserver2 \
56+
coordinator1 \
57+
coordinator2 ; do
58+
debug_container $c
59+
done
60+
}
61+
62+
wait_server() {
63+
# shellcheck disable=SC2091
64+
until $(curl --insecure --output /dev/null --silent --head --fail -i -H "$AUTHORIZATION_HEADER" "https://$1/_api/version"); do
65+
printf '.'
66+
debug
67+
sleep 1
68+
done
69+
}
70+
71+
echo "Waiting..."
72+
73+
# Wait for agents:
74+
for a in 172.28.1.1:8531 \
75+
172.28.1.2:8531 \
76+
172.28.1.3:8531 \
77+
172.28.2.1:8530 \
78+
172.28.2.2:8530 \
79+
172.28.3.1:8529 \
80+
172.28.3.2:8529 ; do
81+
wait_server $a
82+
done
83+
84+
docker exec coordinator1 arangosh --server.endpoint http+ssl://127.0.0.1:8529 --server.authentication=false --javascript.execute-string='require("org/arangodb/users").update("root", "test")'
85+
86+
#rm "$LOCATION"/jwtHeader "$LOCATION"/jwtSecret
87+
88+
echo "Done, your cluster is ready."

0 commit comments

Comments
 (0)