blob: 6a6770d48fd460c32a7f236d3ad6a75a778c3dae (
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
92
93
94
95
96
97
98
99
100
101
102
|
#!/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 %}'
{% raw %}{% if "True" == openbook_install_database|string() %}{% 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
}
{% raw %}{% endif %}{% endraw %}
do_start() {
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
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
{% raw %}{% endif %}{% endraw %}
{{ 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 10349 root 98u IPv6 1128362 0t0 TCP *:8083 (LISTEN)"
echo "java 10413 root 98u IPv6 1129955 0t0 TCP *:8081 (LISTEN)"
echo "java 10472 root 88u IPv6 1129171 0t0 TCP *:8082 (LISTEN)"
echo "java 10542 root 88u IPv6 1129173 0t0 TCP *:8080 (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"] }}
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
docker stop {{ pillar["database"]["container_name"] }}
{% raw %}{% endif %}{% endraw %}
docker container prune -f
}
do_help() {
echo "Usage:"
echo " $0 start"
echo " $0 stop"
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
echo " $0 test_database"
{% raw %}{% endif %}{% endraw %}
}
case $1 in
start*)
do_start
;;
stop*)
do_stop
;;
{% raw %}{% if "True" == openbook_install_database|string() %}{% endraw %}
test_database*)
wait_for_database
echo "Database is up."
;;
{% raw %}{% endif %}{% endraw %}
*)
do_help
;;
esac
exit 0
|