#!/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