From 27a1b9f7df3dfe627f0a60c9d26f83e534702156 Mon Sep 17 00:00:00 2001 From: Oguzhan Unlu Date: Thu, 30 May 2019 19:51:47 +0300 Subject: [PATCH] Fix initialization of dockerized services (closes #182) --- provisioning/resources/init/snowplow_mini | 111 ++++++------------ .../roles/docker/files/docker-compose.yml | 2 - provisioning/roles/docker/tasks/main.yml | 4 + .../roles/sp_mini_7_setup_init/tasks/main.yml | 4 - 4 files changed, 38 insertions(+), 83 deletions(-) diff --git a/provisioning/resources/init/snowplow_mini b/provisioning/resources/init/snowplow_mini index 68703ce3..84564fd2 100644 --- a/provisioning/resources/init/snowplow_mini +++ b/provisioning/resources/init/snowplow_mini @@ -1,96 +1,53 @@ #!/bin/sh + ### BEGIN INIT INFO # Provides: -# Required-Start: $remote_fs $syslog -# Required-Stop: $remote_fs $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start daemon at boot time -# Description: Enable service provided by daemon. +# Required-Start: $docker +# Required-Stop: $docker +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Snowplow Mini Services ### END INIT INFO -cmd="docker-compose -f /home/ubuntu/snowplow/docker-compose.yml up -d && sleep 20" -user="ubuntu" +set -e + +YAMLFILE=/home/ubuntu/snowplow/docker-compose.yml +OPTS="-f $YAMLFILE" +UPOPTS="-d --no-recreate" + +up_cmd="cd /home/ubuntu/snowplow && sudo docker-compose up $UPOPTS" +stop_cmd="cd /home/ubuntu/snowplow && sudo docker-compose stop" +down_cmd="cd /home/ubuntu/snowplow && sudo docker-compose down" name="snowplow_mini" pid_file="/var/run/$name.pid" stdout_log="/var/log/$name.log" stderr_log="/var/log/$name.err" -get_pid() { - cat "$pid_file" -} - -is_running() { - [ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1 -} - case "$1" in start) - if is_running; then - echo "Already started" - else - echo "Starting $name" - if [ -z "$user" ]; then - sudo $cmd >> "$stdout_log" 2>> "$stderr_log" & - else - sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" & - fi - echo $! > "$pid_file" - if ! is_running; then - echo "Unable to start, see $stdout_log and $stderr_log" - exit 1 - fi - fi - ;; - stop) - if is_running; then - echo -n "Stopping $name.." - kill `get_pid` - for i in {1..10} - do - if ! is_running; then - break - fi + echo -n "Starting Snowplow Mini..." + $up_cmd >> "$stdout_log" 2>> "$stderr_log" & + echo "done" + ;; - echo -n "." - sleep 1 - done - echo + stop) + echo -n "Stopping Snowplow Mini..." + $stop_cmd >> "$stdout_log" 2>> "$stderr_log" & + echo "done" + ;; - if is_running; then - echo "Not stopped; may still be shutting down or shutdown may have failed" - exit 1 - else - echo "Stopped" - if [ -f "$pid_file" ]; then - rm "$pid_file" - fi - fi - else - echo "Not running" - fi - ;; restart) - $0 stop - if is_running; then - echo "Unable to stop, will not attempt to start" - exit 1 - fi - $0 start - ;; - status) - if is_running; then - echo "Running" - else - echo "Stopped" - exit 1 - fi - ;; + echo -n "Restarting Snowplow Mini..." + $down_cmd >> "$stdout_log" 2>> "$stderr_log" & + $up_cmd >> "$stdout_log" 2>> "$stderr_log" & + echo "done" + ;; + *) - echo "Usage: $0 {start|stop|restart|status}" - exit 1 - ;; + echo "Usage: /etc/init.d/snowplow_mini {start|stop|restart|status}" + exit 1 + ;; esac -exit 0 \ No newline at end of file +exit 0 diff --git a/provisioning/roles/docker/files/docker-compose.yml b/provisioning/roles/docker/files/docker-compose.yml index a86b4b71..b3b4c3ac 100644 --- a/provisioning/roles/docker/files/docker-compose.yml +++ b/provisioning/roles/docker/files/docker-compose.yml @@ -32,8 +32,6 @@ services: image: docker.elastic.co/kibana/kibana-oss:6.3.1 container_name: kibana restart: always - environment: - - /Users/oguzhanunlu/work/snowplow-mini/provisioning/resources/elasticsearch/config/kibana.yml:/usr/share/kibana/config/kibana.yml ports: - "5601:5601" depends_on: diff --git a/provisioning/roles/docker/tasks/main.yml b/provisioning/roles/docker/tasks/main.yml index 0e512ece..8cd59a84 100644 --- a/provisioning/roles/docker/tasks/main.yml +++ b/provisioning/roles/docker/tasks/main.yml @@ -32,6 +32,10 @@ become: yes shell: cd {{main_dir}} && docker-compose up -d && sleep 20 +- name: Increase mmap count to recommended 262144 for Elasticsearch + become: yes + shell: echo "vm.max_map_count=262144" >> /etc/sysctl.conf && service procps restart + - name: Wait for Elasticsearch port 9200 to become open on the host, don't start checking for 10 seconds wait_for: port: 9200 diff --git a/provisioning/roles/sp_mini_7_setup_init/tasks/main.yml b/provisioning/roles/sp_mini_7_setup_init/tasks/main.yml index e25a5c15..3dbb0932 100644 --- a/provisioning/roles/sp_mini_7_setup_init/tasks/main.yml +++ b/provisioning/roles/sp_mini_7_setup_init/tasks/main.yml @@ -29,10 +29,6 @@ become: yes shell: systemctl start snowplow_mini_control_plane_api -- name: Increase mmap count to recommended 262144 for Elasticsearch - become: yes - shell: echo "vm.max_map_count=262144" >> /etc/sysctl.conf && service procps start - - cron: name: "Add cronjob to crop ES good index's docs older than a week" special_time: weekly