diff --git a/attributes/default.rb b/attributes/default.rb index 924b8ec..4ab855d 100644 --- a/attributes/default.rb +++ b/attributes/default.rb @@ -10,4 +10,5 @@ default[:statsite][:timer_eps] = 0.01 default[:statsite][:stream_command] = "" -default[:statsite][:service_type] = "runit" \ No newline at end of file +default[:statsite][:service_type] = "runit" +default[:statsite][:pid_file] = "/var/run/statsite/statsite.pid" diff --git a/recipes/default.rb b/recipes/default.rb index 6c88fcb..72f10b0 100644 --- a/recipes/default.rb +++ b/recipes/default.rb @@ -50,6 +50,13 @@ group node[:statsite][:group] end +# template +template node[:statsite][:conf] do + owner node[:statsite][:owner] + notifies :restart, "service[statsite]", :delayed +end + + # service service_type = node[:statsite][:service_type] @@ -73,6 +80,26 @@ supports :restart => true, :status => true action [:enable, :start] end + +when 'init' + service_resource = 'service[statsite]' + + template "/etc/init.d/statsite" do + source "init.statsite.erb" + mode "0755" + variables( + :conf => node[:statsite][:conf], + :path => node[:statsite][:path], + :user => node[:statsite][:owner], + :group => node[:statsite][:group], + :pidfile => node[:statsite][:pid_file] + ) + end + + service "statsite" do + action [:enable, :start] + end + else service_resource = 'runit_service[statsite]' @@ -80,11 +107,3 @@ runit_service "statsite" end -# template -template node[:statsite][:conf] do - owner node[:statsite][:owner] - notifies :restart, "service[statsite]", :delayed -end - - - diff --git a/templates/default/init.statsite.erb b/templates/default/init.statsite.erb new file mode 100644 index 0000000..7c25283 --- /dev/null +++ b/templates/default/init.statsite.erb @@ -0,0 +1,54 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: statsite +# Required-Start: $network $named $syslog +# Required-Stop: $network $named $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + + +SS_BIN="<%= @path %>/statsite" +SS_USER="<%= @user %>" +SS_GROUP="<%= @group %>" +SS_PIDFILE="<%= @pidfile %>" +SS_CONFIG="<%= @conf %>" +NAME=${0} +DESC="statsite" + +test -x ${SS_BIN} || exit 0 + +[ -d /var/run/statsite ] || mkdir /var/run/statsite +chown ${SS_USER}:${SS_GROUP} /var/run/statsite + +set -e + +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --quiet --pidfile ${SS_PIDFILE} --chuid ${SS_USER}:${SS_GROUP} \ + --exec ${SS_BIN} -- -f ${SS_CONFIG} + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --stop --quiet --oknodo --pidfile ${SS_PIDFILE} \ + --exec ${SS_BIN} 2>&1 > /dev/null + echo "$NAME." + ;; + status) + start-stop-daemon --status --quiet --pidfile ${SS_PIDFILE} + ;; + restart|force-reload) + $0 stop + sleep 2 + $0 start + ;; + *) + N=/etc/init.d/${NAME} + echo "Usage: ${N} {start|stop|restart|status|force-reload}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/templates/default/statsite.conf.erb b/templates/default/statsite.conf.erb index 9b03285..0beb392 100644 --- a/templates/default/statsite.conf.erb +++ b/templates/default/statsite.conf.erb @@ -1,4 +1,8 @@ [statsite] +<% if node[:statsite][:service_type] == 'init' -%> +daemonize = 1 +pid_file = <%= node[:statsite][:pid_file] %> +<% end -%> port = <%= node[:statsite][:port] %> udp_port = <%= node[:statsite][:port] %> log_level = <%= node[:statsite][:loglevel] %>