You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
2.9 KiB

  1. #!/bin/sh
  2. set -a
  3. ### BEGIN INIT INFO
  4. # Provides: etcd
  5. # Required-Start: $local_fs $network $syslog
  6. # Required-Stop:
  7. # Default-Start: 2 3 4 5
  8. # Default-Stop: 0 1 6
  9. # Short-Description: etcd distributed k/v store
  10. # Description:
  11. # etcd is a distributed, consistent key-value store for shared configuration and service discovery
  12. ### END INIT INFO
  13. PATH=/sbin:/usr/sbin:/bin/:/usr/bin
  14. DESC="etcd k/v store"
  15. NAME=etcd
  16. DAEMON={{ docker_bin_dir | default("/usr/bin") }}/docker
  17. DAEMON_EXEC=`basename $DAEMON`
  18. DAEMON_ARGS="run --restart=always --env-file=/etc/etcd.env \
  19. --net=host \
  20. -v /etc/ssl/certs:/etc/ssl/certs:ro \
  21. -v /var/lib/etcd:/var/lib/etcd:rw \
  22. -v {{ etcd_cert_dir }}:{{ etcd_cert_dir }}:ro \
  23. --name={{ etcd_member_name | default("etcd") }} \
  24. {{ etcd_image_repo }}:{{ etcd_image_tag }} \
  25. {% if etcd_after_v3 %}
  26. {{ etcd_container_bin_dir }}etcd
  27. {% endif %}"
  28. SCRIPTNAME=/etc/init.d/$NAME
  29. DAEMON_USER=root
  30. STOP_SCHEDULE="${STOP_SCHEDULE:-QUIT/5/TERM/5/KILL/5}"
  31. PID=/var/run/etcd.pid
  32. # Exit if the binary is not present
  33. [ -x "$DAEMON" ] || exit 0
  34. # Define LSB log_* functions.
  35. # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
  36. # and status_of_proc is working.
  37. . /lib/lsb/init-functions
  38. do_status()
  39. {
  40. status_of_proc -p $PID "$DAEMON" "$NAME" && exit 0 || exit $?
  41. }
  42. # Function that starts the daemon/service
  43. #
  44. do_start()
  45. {
  46. {{ docker_bin_dir | default("/usr/bin") }}/docker rm -f {{ etcd_member_name | default("etcd-proxy") }} &>/dev/null || true
  47. sleep 1
  48. start-stop-daemon --background --start --quiet --make-pidfile --pidfile $PID --user $DAEMON_USER --exec $DAEMON -- \
  49. $DAEMON_ARGS \
  50. || return 2
  51. }
  52. #
  53. # Function that stops the daemon/service
  54. #
  55. do_stop()
  56. {
  57. start-stop-daemon --stop --quiet --retry=$STOP_SCHEDULE --pidfile $PID --name $DAEMON_EXEC
  58. RETVAL="$?"
  59. sleep 1
  60. return "$RETVAL"
  61. }
  62. case "$1" in
  63. start)
  64. log_daemon_msg "Starting $DESC" "$NAME"
  65. do_start
  66. case "$?" in
  67. 0|1) log_end_msg 0 || exit 0 ;;
  68. 2) log_end_msg 1 || exit 1 ;;
  69. esac
  70. ;;
  71. stop)
  72. log_daemon_msg "Stopping $DESC" "$NAME"
  73. if do_stop; then
  74. log_end_msg 0
  75. else
  76. log_failure_msg "Can't stop etcd"
  77. log_end_msg 1
  78. fi
  79. ;;
  80. status)
  81. if do_status; then
  82. log_end_msg 0
  83. else
  84. log_failure_msg "etcd is not running"
  85. log_end_msg 1
  86. fi
  87. ;;
  88. restart|force-reload)
  89. log_daemon_msg "Restarting $DESC" "$NAME"
  90. if do_stop; then
  91. if do_start; then
  92. log_end_msg 0
  93. exit 0
  94. else
  95. rc="$?"
  96. fi
  97. else
  98. rc="$?"
  99. fi
  100. log_failure_msg "Can't restart etcd"
  101. log_end_msg ${rc}
  102. ;;
  103. *)
  104. echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
  105. exit 3
  106. ;;
  107. esac