blob: cc014fff245316f00b9d53fc5c84c2110538e502 (
plain)
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
|
#!/bin/bash
echo 'mysql root password: {% raw %}{{ openbook_database_password }}{% endraw %}'
echo 'wsrep_node_address: {% raw %}{{ ansible_default_ipv4.address }}{% endraw %}'
echo 'wsrep_cluster_address: gcomm://{% raw %}{{ openbook_gcomm_addresses }}{% endraw %}'
wait_for_database() {
echo "Waiting for database to start..."
started=1
for i in {120..0}; do
if echo 'SELECT 1' | mysql -h 127.0.0.1 -u root --password='{% raw %}{{ openbook_database_password }}{% endraw %}' &>/dev/null; then
started=0
break
fi
sleep 1
done
if [ $started -eq 1 ]; then
echo "Error: database did not start."
exit 1
fi
}
ensure_openbook_databases_created() {
if ! echo "SHOW DATABASES;" | mysql -h 127.0.0.1 -u root --password='{% raw %}{{ openbook_database_password }}{% endraw %}' 2>/dev/null | fgrep 'openbook'; then
echo "Creating Openbook schema..."
mysql -h 127.0.0.1 -u root --password='{% raw %}{{ openbook_database_password }}{% endraw %}' &>/dev/null < {{ pillar["database"]["files"]["create_openbook_schemas"]["path"] }}/{{ pillar["database"]["files"]["create_openbook_schemas"]["name"] }}
fi
}
do_start() {
chmod 777 {{ pillar["database"]["dirs"]["var_lib_mysql"]["name"] }}
chmod 777 {{ pillar["database"]["dirs"]["var_log_mysql"]["name"] }}
{{ pillar["ansible"]["dirs"]["output"]["name"] }}/database/run.sh
wait_for_database
ensure_openbook_databases_created
{{ pillar["ansible"]["dirs"]["output"]["name"] }}/job_scheduler_server/run.sh
{{ pillar["ansible"]["dirs"]["output"]["name"] }}/workflow_server/run.sh
{{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_api_server/run.sh
{{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_api_server/run.sh
{{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_web_ui/run.sh
{{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_web_ui/run.sh
echo
echo "Openbook started. All components may not be fully initialized and available."
echo "It is highly recommended to wait until initialization is complete before"
echo "starting the next node in the cluster. To monitor the state, run:"
echo
echo "watch -n 5 \"lsof -i -n -P 2>/dev/null | fgrep '*:808'\""
echo
echo "When the output looks like the following, the node is fully initialized:"
echo "(Your PIDs will vary)"
echo
echo "java 27424 root 73u IPv6 65463 0t0 TCP *:8080 (LISTEN)"
echo "java 27264 root 73u IPv6 65430 0t0 TCP *:8081 (LISTEN)"
echo "java 27349 root 73u IPv6 65430 0t0 TCP *:8082 (LISTEN)"
}
do_stop() {
docker stop {{ pillar["customer_web_ui"]["container_name"] }}
docker stop {{ pillar["admin_web_ui"]["container_name"] }}
docker stop {{ pillar["customer_api_server"]["container_name"] }}
docker stop {{ pillar["admin_api_server"]["container_name"] }}
docker stop {{ pillar["workflow_server"]["container_name"] }}
docker stop {{ pillar["job_scheduler_server"]["container_name"] }}
docker stop {{ pillar["database"]["container_name"] }}
docker container prune -f
}
do_help() {
echo "Usage:"
echo " $0 start"
echo " $0 stop"
echo " $0 test_database"
}
case $1 in
start*)
do_start
;;
stop*)
do_stop
;;
test_database*)
wait_for_database
echo "Database is up."
;;
*)
do_help
;;
esac
exit 0
|