Vendor the external cookbooks
Knife-Zero doesn't include Berkshelf support, so vendoring everything in the repo is convenient again
This commit is contained in:
7
cookbooks/poise-service/templates/default/dummy.json.erb
Normal file
7
cookbooks/poise-service/templates/default/dummy.json.erb
Normal file
@@ -0,0 +1,7 @@
|
||||
<%= {command: @command,
|
||||
directory: @directory,
|
||||
environment: @environment,
|
||||
name: @name,
|
||||
reload_signal: @reload_signal,
|
||||
stop_signal: @stop_signal,
|
||||
user: @user}.to_json %>
|
||||
15
cookbooks/poise-service/templates/default/inittab.sh.erb
Normal file
15
cookbooks/poise-service/templates/default/inittab.sh.erb
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
exec /opt/chef/embedded/bin/ruby <<EOH
|
||||
require 'etc'
|
||||
IO.write("<%= @pid_file %>", Process.pid)
|
||||
Dir.chdir("<%= @directory %>")
|
||||
ent = Etc.getpwnam("<%= @user %>")
|
||||
if Process.euid != ent.uid || Process.egid != ent.gid
|
||||
Process.initgroups(ent.name, ent.gid)
|
||||
Process::GID.change_privilege(ent.gid) if Process.egid != ent.gid
|
||||
Process::UID.change_privilege(ent.uid) if Process.euid != ent.uid
|
||||
end
|
||||
(ENV["HOME"] = Dir.home("<%= @user %>")) rescue nil
|
||||
<%= @environment.map {|key, value| "ENV[#{key.to_s.inspect}] = #{value.to_s.inspect}" }.join("; ") %>
|
||||
exec(*<%= Shellwords.split(@command).inspect %>)
|
||||
EOH
|
||||
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=<%= @name %>
|
||||
|
||||
[Service]
|
||||
Environment=<%= @environment.map {|key, val| %Q{"#{key}=#{val}"} }.join(' ') %>
|
||||
ExecStart=<%= @command %>
|
||||
ExecReload=/bin/kill -<%= @reload_signal %> $MAINPID
|
||||
KillSignal=<%= @stop_signal %>
|
||||
User=<%= @user %>
|
||||
WorkingDirectory=<%= @directory %>
|
||||
Restart=<%= @restart_mode %>
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
190
cookbooks/poise-service/templates/default/sysvinit.sh.erb
Normal file
190
cookbooks/poise-service/templates/default/sysvinit.sh.erb
Normal file
@@ -0,0 +1,190 @@
|
||||
#!/bin/sh
|
||||
# Init script for <%= @name %> generated by poise-service
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Provides: <%= @name %>
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Init script for <%= @name %>
|
||||
# Description: Init script for <%= @name %>
|
||||
### END INIT INFO
|
||||
|
||||
<%- if @platform_family == 'debian' -%>
|
||||
. /lib/lsb/init-functions
|
||||
|
||||
_start() {
|
||||
start-stop-daemon --start --quiet --background \
|
||||
--pidfile "<%= @pid_file %>"<% unless @pid_file_external %> --make-pidfile<% end %> \
|
||||
--chuid "<%= @user %>" --chdir "<%= @directory %>" \
|
||||
--exec "<%= @daemon %>" -- <%= @daemon_options %>
|
||||
}
|
||||
|
||||
_stop() {
|
||||
start-stop-daemon --stop --quiet --pidfile "<%= @pid_file %>" --user "<%= @user %>" --signal "<%= @stop_signal %>"
|
||||
}
|
||||
|
||||
_status() {
|
||||
status_of_proc -p "<%= @pid_file %>" "<%= @daemon %>" "<%= @name %>"
|
||||
}
|
||||
|
||||
_reload() {
|
||||
start-stop-daemon --stop --quiet --pidfile "<%= @pid_file %>" --user "<%= @user %>" --signal "<%= @reload_signal %>"
|
||||
}
|
||||
|
||||
<%- else -%>
|
||||
_start() {
|
||||
<%# Implementing this using RedHat's bash helpers is too painful. Sorry. %>
|
||||
<%# See dummy.rb for a more commented version of this code. %>
|
||||
/opt/chef/embedded/bin/ruby <<EOH
|
||||
require 'etc'
|
||||
pid_file = <%= @pid_file.inspect %>
|
||||
File.unlink(pid_file) if File.exist?(pid_file)
|
||||
if Process.fork
|
||||
sleep(1) until File.exist?(pid_file)
|
||||
else
|
||||
Process.daemon(true)
|
||||
Dir.chdir(<%= @directory.inspect %>)
|
||||
<%- unless @pid_file_external -%>
|
||||
IO.write(pid_file, Process.pid)
|
||||
<%- end -%>
|
||||
ent = Etc.getpwnam(<%= @user.inspect %>)
|
||||
if Process.euid != ent.uid || Process.egid != ent.gid
|
||||
Process.initgroups(ent.name, ent.gid)
|
||||
Process::GID.change_privilege(ent.gid) if Process.egid != ent.gid
|
||||
Process::UID.change_privilege(ent.uid) if Process.euid != ent.uid
|
||||
end
|
||||
Kernel.exec(*<%= Shellwords.split(@command).inspect %>)
|
||||
exit!
|
||||
end
|
||||
EOH
|
||||
}
|
||||
|
||||
_stop() {
|
||||
if [ -r "<%= @pid_file %>" ]; then
|
||||
kill -<%= @stop_signal%> "$(cat "<%= @pid_file %>")"
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
_status() {
|
||||
if [ -r "<%= @pid_file %>" ]; then
|
||||
kill -0 "$(cat "<%= @pid_file %>")"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
_reload() {
|
||||
if [ -r "<%= @pid_file %>" ]; then
|
||||
kill -<%= @reload_signal%> "$(cat "<%= @pid_file %>")"
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
<%# Some functions to match LSB %>
|
||||
|
||||
log_daemon_msg() {
|
||||
echo -n "$1"
|
||||
}
|
||||
|
||||
log_progress_msg() {
|
||||
echo -n "$1"
|
||||
}
|
||||
|
||||
log_warning_msg() {
|
||||
echo -n "$1"
|
||||
}
|
||||
|
||||
log_failure_msg() {
|
||||
echo -n "$1"
|
||||
}
|
||||
|
||||
log_end_msg() {
|
||||
if [ "$1" = 0 ]; then
|
||||
echo " [ OK ]"
|
||||
else
|
||||
echo " [FAILED]"
|
||||
fi
|
||||
}
|
||||
<%- end -%>
|
||||
|
||||
set -e
|
||||
|
||||
start() {
|
||||
if _start
|
||||
then
|
||||
rc=0
|
||||
sleep 1
|
||||
if ! kill -0 "$(cat "<%= @pid_file %>")" >/dev/null 2>&1; then
|
||||
log_failure_msg "<%= @name %> failed to start"
|
||||
rc=1
|
||||
fi
|
||||
else
|
||||
rc=1
|
||||
fi
|
||||
if [ "$rc" -eq 0 ]; then
|
||||
log_end_msg 0
|
||||
else
|
||||
log_end_msg 1
|
||||
rm -f "<%= @pid_file %>"
|
||||
fi
|
||||
}
|
||||
|
||||
<%- @environment.each do |key, val| -%>
|
||||
export <%= key %>="<%= val %>"
|
||||
<%- end -%>
|
||||
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
log_daemon_msg "Starting <%= @name %>"
|
||||
if [ -s "<%= @pid_file %>" ] && kill -0 "$(cat "<%= @pid_file %>")" >/dev/null 2>&1; then
|
||||
log_progress_msg "apparently already running"
|
||||
log_end_msg 0
|
||||
exit 0
|
||||
fi
|
||||
start
|
||||
;;
|
||||
|
||||
stop)
|
||||
log_daemon_msg "Stopping <%= @name %>"
|
||||
_stop
|
||||
log_end_msg "$?"
|
||||
rm -f "<%= @pid_file %>"
|
||||
;;
|
||||
|
||||
reload|force-reload)
|
||||
log_daemon_msg "Reloading <%= @name %>"
|
||||
_reload
|
||||
log_end_msg "$?"
|
||||
;;
|
||||
|
||||
restart)
|
||||
set +e
|
||||
log_daemon_msg "Restarting <%= @name %>"
|
||||
if [ -s "<%= @pid_file %>" ] && kill -0 "$(cat "<%= @pid_file %>")" >/dev/null 2>&1; then
|
||||
_stop || true
|
||||
sleep 1
|
||||
else
|
||||
log_warning_msg "<%= @name %> not running, attempting to start."
|
||||
rm -f "<%= @pid_file %>"
|
||||
fi
|
||||
start
|
||||
;;
|
||||
|
||||
status)
|
||||
set +e
|
||||
_status
|
||||
exit $?
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: /etc/init.d/<%= @name %> {start|stop|reload|force-reload|restart|status}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
exit 0
|
||||
49
cookbooks/poise-service/templates/default/upstart.conf.erb
Normal file
49
cookbooks/poise-service/templates/default/upstart.conf.erb
Normal file
@@ -0,0 +1,49 @@
|
||||
# <%= @name %> generated by poise-service for <%= @new_resource.to_s %>
|
||||
|
||||
description "<%= @name %>"
|
||||
|
||||
start on runlevel [2345]
|
||||
stop on runlevel [!2345]
|
||||
|
||||
respawn
|
||||
respawn limit 10 5
|
||||
umask 022
|
||||
chdir <%= @directory %>
|
||||
<%- @environment.each do |key, val| -%>
|
||||
env <%= key %>="<%= val %>"
|
||||
<%- end -%>
|
||||
<%- if @upstart_features[:setuid] -%>
|
||||
setuid <%= @user %>
|
||||
<%- end -%>
|
||||
<%- if @upstart_features[:kill_signal] -%>
|
||||
kill signal <%= @stop_signal %>
|
||||
<%- end -%>
|
||||
<%- if @upstart_features[:reload_signal] -%>
|
||||
reload signal <%= @reload_signal %>
|
||||
<%- end -%>
|
||||
|
||||
<%- if @upstart_features[:setuid] -%>
|
||||
exec <%= @command %>
|
||||
<%- else -%>
|
||||
script
|
||||
exec /opt/chef/embedded/bin/ruby <<EOH
|
||||
require 'etc'
|
||||
ent = Etc.getpwnam(<%= @user.inspect %>)
|
||||
if Process.euid != ent.uid || Process.egid != ent.gid
|
||||
Process.initgroups(ent.name, ent.gid)
|
||||
Process::GID.change_privilege(ent.gid) if Process.egid != ent.gid
|
||||
Process::UID.change_privilege(ent.uid) if Process.euid != ent.uid
|
||||
end
|
||||
ENV["HOME"] = Dir.home(<%= @user.inspect %>) rescue nil
|
||||
exec(*<%= Shellwords.split(@command).inspect %>)
|
||||
EOH
|
||||
end script
|
||||
<%- end -%>
|
||||
<%- if !@upstart_features[:kill_signal] && @stop_signal != 'TERM' -%>
|
||||
pre-stop script
|
||||
PID=`initctl status <%= @name %> | sed 's/^.*process \([0-9]*\)$/\1/'`
|
||||
if [ -n "$PID" ]; then
|
||||
kill -<%= @stop_signal %> "$PID"
|
||||
fi
|
||||
end script
|
||||
<%- end -%>
|
||||
Reference in New Issue
Block a user