Dev set up
This commit is contained in:
183
ops/cookbooks/vendor/runit/libraries/helpers.rb
vendored
Normal file
183
ops/cookbooks/vendor/runit/libraries/helpers.rb
vendored
Normal file
@ -0,0 +1,183 @@
|
||||
#
|
||||
# Cookbook:: runit
|
||||
# Library:: helpers
|
||||
#
|
||||
# Author:: Joshua Timberman <joshua@chef.io>
|
||||
# Author:: Sean OMeara <sean@sean.io>
|
||||
# Copyright:: 2008-2019, Chef Software, Inc. <legal@chef.io>
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
module RunitCookbook
|
||||
module Helpers
|
||||
# include Chef::Mixin::ShellOut if it is not already included in the calling class
|
||||
def self.included(klass)
|
||||
klass.class_eval { include Chef::Mixin::ShellOut } unless klass.ancestors.include?(Chef::Mixin::ShellOut)
|
||||
end
|
||||
|
||||
def down_file
|
||||
::File.join(sv_dir_name, 'down')
|
||||
end
|
||||
|
||||
def env_dir
|
||||
::File.join(sv_dir_name, 'env')
|
||||
end
|
||||
|
||||
def extra_env_files?
|
||||
files = []
|
||||
Dir.glob(::File.join(sv_dir_name, 'env', '*')).each do |f|
|
||||
files << File.basename(f)
|
||||
end
|
||||
return true if files.sort != new_resource.env.keys.sort
|
||||
false
|
||||
end
|
||||
|
||||
def delete_extra_env_files
|
||||
Dir.glob(::File.join(sv_dir_name, 'env', '*')).each do |f|
|
||||
unless new_resource.env.key?(File.basename(f))
|
||||
File.unlink(f)
|
||||
Chef::Log.info("removing file #{f}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def wait_for_service
|
||||
raise 'Runit does not appear to be installed. Include runit::default before using the resource!' unless binary_exists?
|
||||
|
||||
sleep 1 until ::FileTest.pipe?(::File.join(service_dir_name, 'supervise', 'ok'))
|
||||
|
||||
if new_resource.log
|
||||
sleep 1 until ::FileTest.pipe?(::File.join(service_dir_name, 'log', 'supervise', 'ok'))
|
||||
end
|
||||
end
|
||||
|
||||
def runit_send_signal(signal, friendly_name = nil)
|
||||
friendly_name ||= signal
|
||||
converge_by("send #{friendly_name} to #{new_resource}") do
|
||||
safe_sv_shellout!("#{sv_args}#{signal} #{service_dir_name}")
|
||||
Chef::Log.info("#{new_resource} sent #{friendly_name}")
|
||||
end
|
||||
end
|
||||
|
||||
def running?
|
||||
cmd = safe_sv_shellout("#{sv_args}status #{service_dir_name}", returns: [0, 100])
|
||||
!cmd.error? && cmd.stdout =~ /^run:/
|
||||
end
|
||||
|
||||
def log_running?
|
||||
cmd = safe_sv_shellout("#{sv_args}status #{::File.join(service_dir_name, 'log')}", returns: [0, 100])
|
||||
!cmd.error? && cmd.stdout =~ /^run:/
|
||||
end
|
||||
|
||||
def enabled?
|
||||
::File.exist?(::File.join(service_dir_name, 'run'))
|
||||
end
|
||||
|
||||
def log_service_name
|
||||
::File.join(new_resource.service_name, 'log')
|
||||
end
|
||||
|
||||
def sv_dir_name
|
||||
::File.join(new_resource.sv_dir, new_resource.service_name)
|
||||
end
|
||||
|
||||
def sv_args
|
||||
sv_args = ''
|
||||
sv_args += "-w #{new_resource.sv_timeout} " unless new_resource.sv_timeout.nil?
|
||||
sv_args += '-v ' if new_resource.sv_verbose
|
||||
sv_args
|
||||
end
|
||||
|
||||
def service_dir_name
|
||||
::File.join(new_resource.service_dir, new_resource.service_name)
|
||||
end
|
||||
|
||||
def log_dir_name
|
||||
::File.join(new_resource.service_dir, new_resource.service_name, log)
|
||||
end
|
||||
|
||||
def binary_exists?
|
||||
begin
|
||||
Chef::Log.debug("Checking to see if the runit binary exists by running #{new_resource.sv_bin}")
|
||||
shell_out!(new_resource.sv_bin.to_s, returns: [0, 100])
|
||||
rescue Errno::ENOENT
|
||||
Chef::Log.debug("Failed to return 0 or 100 running #{new_resource.sv_bin}")
|
||||
return false
|
||||
end
|
||||
true
|
||||
end
|
||||
|
||||
def safe_sv_shellout(command, options = {})
|
||||
begin
|
||||
Chef::Log.debug("Attempting to run runit command: #{new_resource.sv_bin} #{command}")
|
||||
cmd = shell_out("#{new_resource.sv_bin} #{command}", options)
|
||||
rescue Errno::ENOENT
|
||||
if binary_exists?
|
||||
raise # Some other cause
|
||||
else
|
||||
raise 'Runit does not appear to be installed. You must install runit before using the runit_service resource!'
|
||||
end
|
||||
end
|
||||
cmd
|
||||
end
|
||||
|
||||
def safe_sv_shellout!(command, options = {})
|
||||
safe_sv_shellout(command, options).tap(&:error!)
|
||||
end
|
||||
|
||||
def disable_service
|
||||
Chef::Log.debug("Attempting to disable runit service with: #{new_resource.sv_bin} #{sv_args}down #{service_dir_name}")
|
||||
shell_out("#{new_resource.sv_bin} #{sv_args}down #{service_dir_name}")
|
||||
FileUtils.rm(service_dir_name)
|
||||
|
||||
# per the documentation, a service should be removed from supervision
|
||||
# within 5 seconds of removing the service dir symlink, so we'll sleep for 6.
|
||||
# otherwise, runit recreates the 'ok' named pipe too quickly
|
||||
Chef::Log.debug('Sleeping 6 seconds to allow the disable to take effect')
|
||||
sleep(6)
|
||||
# runit will recreate the supervise directory and
|
||||
# pipes when the service is reenabled
|
||||
Chef::Log.debug("Removing #{::File.join(sv_dir_name, 'supervise', 'ok')}")
|
||||
FileUtils.rm(::File.join(sv_dir_name, 'supervise', 'ok'))
|
||||
end
|
||||
|
||||
def start_service
|
||||
safe_sv_shellout!("#{sv_args}start #{service_dir_name}")
|
||||
end
|
||||
|
||||
def stop_service
|
||||
safe_sv_shellout!("#{sv_args}stop #{service_dir_name}")
|
||||
end
|
||||
|
||||
def restart_service
|
||||
safe_sv_shellout!("#{sv_args}restart #{service_dir_name}")
|
||||
end
|
||||
|
||||
def restart_log_service
|
||||
safe_sv_shellout!("#{sv_args}restart #{::File.join(service_dir_name, 'log')}")
|
||||
end
|
||||
|
||||
def reload_service
|
||||
safe_sv_shellout!("#{sv_args}force-reload #{service_dir_name}")
|
||||
end
|
||||
|
||||
def reload_log_service
|
||||
if log_running?
|
||||
safe_sv_shellout!("#{sv_args}force-reload #{::File.join(service_dir_name, 'log')}")
|
||||
else
|
||||
Chef::Log.debug('Logging not running so doing nothing')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
368
ops/cookbooks/vendor/runit/libraries/provider_runit_service.rb
vendored
Normal file
368
ops/cookbooks/vendor/runit/libraries/provider_runit_service.rb
vendored
Normal file
@ -0,0 +1,368 @@
|
||||
#
|
||||
# Cookbook:: runit
|
||||
# Provider:: runit_service
|
||||
#
|
||||
# Author:: Joshua Timberman <jtimberman@chef.io>
|
||||
# Author:: Sean OMeara <sean@sean.io>
|
||||
# Copyright:: 2011-2019, Chef Software Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
class Chef
|
||||
class Provider
|
||||
class RunitService < Chef::Provider::LWRPBase
|
||||
provides :runit_service
|
||||
|
||||
unless defined?(VALID_SIGNALS)
|
||||
# Mapping of valid signals with optional friendly name
|
||||
VALID_SIGNALS = Mash.new(
|
||||
:down => nil,
|
||||
:hup => nil,
|
||||
:int => nil,
|
||||
:term => nil,
|
||||
:kill => nil,
|
||||
:quit => nil,
|
||||
:up => nil,
|
||||
:once => nil,
|
||||
:cont => nil,
|
||||
1 => :usr1,
|
||||
2 => :usr2
|
||||
)
|
||||
end
|
||||
|
||||
# Mix in helpers from libraries/helpers.rb
|
||||
include RunitCookbook::Helpers
|
||||
|
||||
# actions
|
||||
action :create do
|
||||
ruby_block 'restart_service' do
|
||||
block do
|
||||
previously_enabled = enabled?
|
||||
action_enable
|
||||
|
||||
# Only restart the service if it was previously enabled. If the service was disabled
|
||||
# or not running, then the enable action will start the service, and it's unnecessary
|
||||
# to restart the service again.
|
||||
restart_service if previously_enabled
|
||||
end
|
||||
action :nothing
|
||||
only_if { new_resource.restart_on_update && !new_resource.start_down }
|
||||
end
|
||||
|
||||
ruby_block 'restart_log_service' do
|
||||
block do
|
||||
action_enable
|
||||
restart_log_service
|
||||
end
|
||||
action :nothing
|
||||
only_if { new_resource.restart_on_update && !new_resource.start_down }
|
||||
end
|
||||
|
||||
# sv_templates
|
||||
if new_resource.sv_templates
|
||||
directory sv_dir_name do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
template ::File.join(sv_dir_name, 'run') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
source "sv-#{new_resource.run_template_name}-run.erb"
|
||||
cookbook new_resource.cookbook
|
||||
mode '0755'
|
||||
variables(options: new_resource.options)
|
||||
action :create
|
||||
notifies :run, 'ruby_block[restart_service]', :delayed
|
||||
end
|
||||
|
||||
# log stuff
|
||||
if new_resource.log
|
||||
directory ::File.join(sv_dir_name, 'log') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
directory ::File.join(sv_dir_name, 'log', 'main') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
directory new_resource.log_dir do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
recursive true
|
||||
action :create
|
||||
end
|
||||
|
||||
template ::File.join(sv_dir_name, 'log', 'config') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0644'
|
||||
cookbook 'runit'
|
||||
source 'log-config.erb'
|
||||
variables(config: new_resource)
|
||||
notifies :run, 'ruby_block[restart_log_service]', :delayed
|
||||
action :create
|
||||
end
|
||||
|
||||
link ::File.join(new_resource.log_dir, 'config') do
|
||||
to ::File.join(sv_dir_name, 'log', 'config')
|
||||
end
|
||||
|
||||
if new_resource.default_logger
|
||||
template ::File.join(sv_dir_name, 'log', 'run') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
cookbook 'runit'
|
||||
source 'log-run.erb'
|
||||
variables(config: new_resource)
|
||||
notifies :run, 'ruby_block[restart_log_service]', :delayed
|
||||
action :create
|
||||
end
|
||||
else
|
||||
template ::File.join(sv_dir_name, 'log', 'run') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
source "sv-#{new_resource.log_template_name}-log-run.erb"
|
||||
cookbook new_resource.cookbook
|
||||
variables(options: new_resource.options)
|
||||
action :create
|
||||
notifies :run, 'ruby_block[restart_log_service]', :delayed
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# environment stuff
|
||||
directory ::File.join(sv_dir_name, 'env') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
action :create
|
||||
end
|
||||
|
||||
new_resource.env.map do |var, value|
|
||||
file ::File.join(sv_dir_name, 'env', var) do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
content value
|
||||
sensitive true
|
||||
mode '0640'
|
||||
action :create
|
||||
notifies :run, 'ruby_block[restart_service]', :delayed
|
||||
end
|
||||
end
|
||||
|
||||
ruby_block "Delete unmanaged env files for #{new_resource.name} service" do
|
||||
block { delete_extra_env_files }
|
||||
only_if { extra_env_files? }
|
||||
not_if { new_resource.env.empty? }
|
||||
action :run
|
||||
notifies :run, 'ruby_block[restart_service]', :delayed
|
||||
end
|
||||
|
||||
template ::File.join(sv_dir_name, 'check') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
cookbook new_resource.cookbook
|
||||
source "sv-#{new_resource.check_script_template_name}-check.erb"
|
||||
variables(options: new_resource.options)
|
||||
action :create
|
||||
only_if { new_resource.check }
|
||||
end
|
||||
|
||||
template ::File.join(sv_dir_name, 'finish') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
source "sv-#{new_resource.finish_script_template_name}-finish.erb"
|
||||
cookbook new_resource.cookbook
|
||||
variables(options: new_resource.options) if new_resource.options.respond_to?(:has_key?)
|
||||
action :create
|
||||
only_if { new_resource.finish }
|
||||
end
|
||||
|
||||
directory ::File.join(sv_dir_name, 'control') do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
action :create
|
||||
end
|
||||
|
||||
new_resource.control.map do |signal|
|
||||
template ::File.join(sv_dir_name, 'control', signal) do
|
||||
owner new_resource.owner unless new_resource.owner.nil?
|
||||
group new_resource.group unless new_resource.group.nil?
|
||||
mode '0755'
|
||||
source "sv-#{new_resource.control_template_names[signal]}-#{signal}.erb"
|
||||
cookbook new_resource.cookbook
|
||||
variables(options: new_resource.options)
|
||||
action :create
|
||||
end
|
||||
end
|
||||
|
||||
# lsb_init
|
||||
if platform?('debian','ubuntu') && !new_resource.use_init_script_sv_link
|
||||
ruby_block "unlink #{::File.join(new_resource.lsb_init_dir, new_resource.service_name)}" do
|
||||
block { ::File.unlink(::File.join(new_resource.lsb_init_dir, new_resource.service_name).to_s) }
|
||||
only_if { ::File.symlink?(::File.join(new_resource.lsb_init_dir, new_resource.service_name).to_s) }
|
||||
end
|
||||
|
||||
template ::File.join(new_resource.lsb_init_dir, new_resource.service_name) do
|
||||
owner 'root'
|
||||
group 'root'
|
||||
mode '0755'
|
||||
cookbook 'runit'
|
||||
source 'init.d.erb'
|
||||
variables(
|
||||
name: new_resource.service_name,
|
||||
sv_bin: new_resource.sv_bin,
|
||||
sv_args: sv_args,
|
||||
init_dir: ::File.join(new_resource.lsb_init_dir, '')
|
||||
)
|
||||
action :create
|
||||
end
|
||||
else
|
||||
link ::File.join(new_resource.lsb_init_dir, new_resource.service_name) do
|
||||
to new_resource.sv_bin
|
||||
action :create
|
||||
end
|
||||
end
|
||||
|
||||
# Create/Delete service down file
|
||||
# To prevent unexpected behavior, require users to explicitly set
|
||||
# delete_downfile to remove any down file that may already exist
|
||||
df_action = :nothing
|
||||
if new_resource.start_down
|
||||
df_action = :create
|
||||
elsif new_resource.delete_downfile
|
||||
df_action = :delete
|
||||
end
|
||||
|
||||
file down_file do
|
||||
mode '0644'
|
||||
backup false
|
||||
content '# File created and managed by chef!'
|
||||
action df_action
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
action :disable do
|
||||
ruby_block "disable #{new_resource.service_name}" do
|
||||
block { disable_service }
|
||||
only_if { enabled? }
|
||||
end
|
||||
end
|
||||
|
||||
action :enable do
|
||||
action_create
|
||||
|
||||
directory new_resource.service_dir
|
||||
|
||||
link service_dir_name.to_s do
|
||||
to sv_dir_name
|
||||
action :create
|
||||
end
|
||||
|
||||
ruby_block "wait for #{new_resource.service_name} service socket" do
|
||||
block do
|
||||
wait_for_service
|
||||
end
|
||||
action :run
|
||||
end
|
||||
|
||||
# Support supervisor owner and groups http://smarden.org/runit/faq.html#user
|
||||
if new_resource.supervisor_owner || new_resource.supervisor_group
|
||||
directory ::File.join(service_dir_name, 'supervise') do
|
||||
mode '0755'
|
||||
action :create
|
||||
end
|
||||
%w(ok status control).each do |target|
|
||||
file ::File.join(service_dir_name, 'supervise', target) do
|
||||
owner new_resource.supervisor_owner || 'root'
|
||||
group new_resource.supervisor_group || 'root'
|
||||
action :touch
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# signals
|
||||
VALID_SIGNALS.each do |signal, signal_name|
|
||||
action(signal_name || signal) do
|
||||
if running?
|
||||
Chef::Log.info "#{new_resource} signalled (#{(signal_name || signal).to_s.upcase})"
|
||||
runit_send_signal(signal, signal_name)
|
||||
else
|
||||
Chef::Log.debug "#{new_resource} not running - nothing to do"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
action :restart do
|
||||
restart_service
|
||||
end
|
||||
|
||||
action :start do
|
||||
if running?
|
||||
Chef::Log.debug "#{new_resource} already running - nothing to do"
|
||||
else
|
||||
start_service
|
||||
Chef::Log.info "#{new_resource} started"
|
||||
end
|
||||
end
|
||||
|
||||
action :stop do
|
||||
if running?
|
||||
stop_service
|
||||
Chef::Log.info "#{new_resource} stopped"
|
||||
else
|
||||
Chef::Log.debug "#{new_resource} already stopped - nothing to do"
|
||||
end
|
||||
end
|
||||
|
||||
action :reload do
|
||||
if running?
|
||||
reload_service
|
||||
Chef::Log.info "#{new_resource} reloaded"
|
||||
else
|
||||
Chef::Log.debug "#{new_resource} not running - nothing to do"
|
||||
end
|
||||
end
|
||||
|
||||
action :status do
|
||||
running?
|
||||
end
|
||||
|
||||
action :reload_log do
|
||||
converge_by('reload log service') do
|
||||
reload_log_service
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
114
ops/cookbooks/vendor/runit/libraries/resource_runit_service.rb
vendored
Normal file
114
ops/cookbooks/vendor/runit/libraries/resource_runit_service.rb
vendored
Normal file
@ -0,0 +1,114 @@
|
||||
#
|
||||
# Cookbook:: runit
|
||||
# resource:: runit_service
|
||||
#
|
||||
# Author:: Joshua Timberman <jtimberman@chef.io>
|
||||
# Copyright:: 2011-2019, Chef Software Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
require 'chef/resource'
|
||||
require 'chef/resource/service'
|
||||
|
||||
class Chef
|
||||
class Resource
|
||||
# Missing top-level class documentation comment
|
||||
class RunitService < Chef::Resource::Service
|
||||
resource_name :runit_service
|
||||
|
||||
default_action :enable
|
||||
allowed_actions :nothing, :start, :stop, :enable, :disable, :restart, :reload, :status, :once, :hup, :cont, :term, :kill, :up, :down, :usr1, :usr2, :create, :reload_log
|
||||
|
||||
# For legacy reasons we allow setting these via attribute
|
||||
property :sv_bin, String, default: lazy { node['runit']['sv_bin'] || (platform_family?('debian') ? '/usr/bin/sv' : '/sbin/sv') }
|
||||
property :sv_dir, [String, FalseClass], default: lazy { node['runit']['sv_dir'] || '/etc/sv' }
|
||||
property :service_dir, String, default: lazy { node['runit']['service_dir'] || '/etc/service' }
|
||||
property :lsb_init_dir, String, default: lazy { node['runit']['lsb_init_dir'] || '/etc/init.d' }
|
||||
|
||||
property :control, Array, default: []
|
||||
property :options, Hash, default: lazy { default_options }, coerce: proc { |r| default_options.merge(r) if r.respond_to?(:merge) }
|
||||
property :env, Hash, default: {}
|
||||
property :log, [TrueClass, FalseClass], default: true
|
||||
property :cookbook, String
|
||||
property :check, [TrueClass, FalseClass], default: false
|
||||
property :start_down, [TrueClass, FalseClass], default: false
|
||||
property :delete_downfile, [TrueClass, FalseClass], default: false
|
||||
property :finish, [TrueClass, FalseClass], default: false
|
||||
property :supervisor_owner, String, regex: [Chef::Config[:user_valid_regex]]
|
||||
property :supervisor_group, String, regex: [Chef::Config[:group_valid_regex]]
|
||||
property :owner, String, regex: [Chef::Config[:user_valid_regex]]
|
||||
property :group, String, regex: [Chef::Config[:group_valid_regex]]
|
||||
property :enabled, [TrueClass, FalseClass], default: false
|
||||
property :running, [TrueClass, FalseClass], default: false
|
||||
property :default_logger, [TrueClass, FalseClass], default: false
|
||||
property :restart_on_update, [TrueClass, FalseClass], default: true
|
||||
property :run_template_name, String, default: lazy { service_name }
|
||||
property :log_template_name, String, default: lazy { service_name }
|
||||
property :check_script_template_name, String, default: lazy { service_name }
|
||||
property :finish_script_template_name, String, default: lazy { service_name }
|
||||
property :control_template_names, Hash, default: lazy { set_control_template_names }
|
||||
property :status_command, String, default: lazy { "#{sv_bin} status #{service_dir}" }
|
||||
property :sv_templates, [TrueClass, FalseClass], default: true
|
||||
property :sv_timeout, Integer
|
||||
property :sv_verbose, [TrueClass, FalseClass], default: false
|
||||
property :log_dir, String, default: lazy { ::File.join('/var/log/', service_name) }
|
||||
property :log_flags, String, default: '-tt'
|
||||
property :log_size, Integer
|
||||
property :log_num, Integer
|
||||
property :log_min, Integer
|
||||
property :log_timeout, Integer
|
||||
property :log_processor, String
|
||||
property :log_socket, [String, Hash]
|
||||
property :log_prefix, String
|
||||
property :log_config_append, String
|
||||
|
||||
# Use a link to sv instead of a full blown init script calling runit.
|
||||
# This was added for omnibus projects and probably shouldn't be used elsewhere
|
||||
property :use_init_script_sv_link, [TrueClass, FalseClass], default: false
|
||||
|
||||
alias template_name run_template_name
|
||||
|
||||
def set_control_template_names
|
||||
template_names = {}
|
||||
control.each do |signal|
|
||||
template_names[signal] ||= service_name
|
||||
end
|
||||
template_names
|
||||
end
|
||||
|
||||
# the default legacy options kept for compatibility with the definition
|
||||
#
|
||||
# @return [Hash] an empty hash if env property is set. Otherwise it's env_dir
|
||||
def default_options
|
||||
env.empty? ? {} : { env_dir: ::File.join(sv_dir, service_name, 'env') }
|
||||
end
|
||||
|
||||
def after_created
|
||||
unless run_context.nil?
|
||||
new_resource = self
|
||||
service_dir_name = ::File.join(service_dir, service_name)
|
||||
find_resource(:service, new_resource.name) do # creates if it does not exist
|
||||
provider Chef::Provider::Service::Simple
|
||||
supports new_resource.supports
|
||||
start_command "#{new_resource.sv_bin} start #{service_dir_name}"
|
||||
stop_command "#{new_resource.sv_bin} stop #{service_dir_name}"
|
||||
restart_command "#{new_resource.sv_bin} restart #{service_dir_name}"
|
||||
status_command "#{new_resource.sv_bin} status #{service_dir_name}"
|
||||
action :nothing
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user