Here is an example of a custom service for ubuntu:
package 'push-jobs-client' do
action :install
end
template '/etc/chef/push-jobs-client.rb' do
source 'push-jobs-client.rb.erb'
owner 'root'
group 'root'
mode '644'
end
template '/etc/init/chef-push-jobs.conf' do
source 'push-jobs-client-run.erb'
owner 'root'
group 'root'
mode '644'
end
service 'chef-push-jobs' do
supports [:stop, :start, :restart, :status]
action [ :enable, :start]
end
cat templates/default/push-jobs-client.rb.erb
# Generated by Chef for <%= node[:fqdn] %>
# Local modifications will be overwritten!
# Added this wrapper for community cookbook to allow_unecrypted; encryption is done over SSL
LC_ALL='en_US.UTF-8'
# Chef server connect options
chef_server_url '<%= Chef::Config[:chef_server_url] %>'
node_name '<%= Chef::Config[:node_name] %>'
client_key '/etc/chef/client.pem'
trusted_certs_dir '/etc/chef/trusted_certs'
verify_api_cert false
allow_unencrypted true
# The whitelist comes from default attributes
whitelist<%= node['base']['push-jobs']['whitelist'] %>
# We're under runit, so don't output timestamp
Mixlib::Log::Formatter.show_time = false
cat templates/default/push-jobs-client-run.erb
start on runlevel [2345]
stop on runlevel [!2345]
script
exec /opt/push-jobs-client/bin/pushy-client -l info -c /etc/chef/push-jobs-client.rb
end script