#!/bin/sh set -a ### BEGIN INIT INFO # Provides: etcd # Required-Start: $local_fs $network $syslog # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: etcd distributed k/v store # Description: # etcd is a distributed, consistent key-value store for shared configuration and service discovery ### END INIT INFO PATH=/sbin:/usr/sbin:/bin/:/usr/bin DESC="etcd k/v store" NAME=etcd DAEMON={{ docker_bin_dir | default("/usr/bin") }}/docker DAEMON_EXEC=`basename $DAEMON` DAEMON_ARGS="run --restart=always --env-file=/etc/etcd.env \ --net=host \ -v /usr/share/ca-certificates/:/etc/ssl/certs:ro \ -v /var/lib/etcd:/var/lib/etcd:rw \ --name={{ etcd_member_name | default("etcd") }} \ {{ etcd_image_repo }}:{{ etcd_image_tag }} \ {% if etcd_after_v3 %} {{ etcd_container_bin_dir }}etcd {% endif %}" SCRIPTNAME=/etc/init.d/$NAME DAEMON_USER=root STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/5/KILL/5}" PID=/var/run/etcd.pid # Exit if the binary is not present [ -x "$DAEMON" ] || exit 0 # Define LSB log_* functions. # Depend on lsb-base (>= 3.2-14) to ensure that this file is present # and status_of_proc is working. . /lib/lsb/init-functions do_status() { status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $? } # Function that starts the daemon/service # do_start() { {{ docker_bin_dir | default("/usr/bin") }}/docker rm -f {{ etcd_member_name | default("etcd-proxy") }} &>/dev/null || true sleep {{ etcd_start_delay }} start-stop-daemon --background --start --quiet --make-pidfile --pidfile $PID --user $DAEMON_USER --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 } # # Function that stops the daemon/service # do_stop() { start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $DAEMON_EXEC RETVAL="$?" sleep 1 return "$RETVAL" } case "$1" in start) log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) log_end_msg 0 || exit 0 ;; 2) log_end_msg 1 || exit 1 ;; esac ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" if do_stop; then log_end_msg 0 else log_failure_msg "Can't stop etcd" log_end_msg 1 fi ;; status) if do_status; then log_end_msg 0 else log_failure_msg "etcd is not running" log_end_msg 1 fi ;; restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" if do_stop; then if do_start; then log_end_msg 0 exit 0 else rc="$?" fi else rc="$?" fi log_failure_msg "Can't restart etcd" log_end_msg ${rc} ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac