class Chef::Platform::ServiceHelpers
Public Class Methods
config_for_service(service_name)
click to toggle source
# File lib/chef/platform/service_helpers.rb, line 71 def config_for_service(service_name) configs = [] if file_exist?(Chef.path_to("/etc/init.d/#{service_name}")) configs += [ :initd, :systemd ] end if file_exist?(Chef.path_to("/etc/init/#{service_name}.conf")) configs << :upstart end if file_exist?(Chef.path_to("/etc/xinetd.d/#{service_name}")) configs << :xinetd end if file_exist?(Chef.path_to("/etc/rc.d/#{service_name}")) configs << :etc_rcd end if file_exist?(Chef.path_to("/usr/local/etc/rc.d/#{service_name}")) configs << :usr_local_etc_rcd end if has_systemd_service_unit?(service_name) || has_systemd_unit?(service_name) configs << :systemd end configs end
service_resource_providers()
click to toggle source
This helper is mostly used to sort out the mess of different linux mechanisms that can be used to start services. It does not necessarily need to linux-specific, but currently all our other service providers are narrowly platform-specific with no alternatives.
NOTE: if a system has (for example) chkconfig installed then we should report that chkconfig is installed. The fact that a system may also have systemd installed does not mean that we do not report that systemd is also installed. This module is purely for discovery of all the alternatives, handling the priority of the different services is NOT a design concern of this module.
# File lib/chef/platform/service_helpers.rb, line 41 def service_resource_providers providers = [] if file_exist?(Chef.path_to("/usr/sbin/update-rc.d")) providers << :debian end if file_exist?(Chef.path_to("/usr/sbin/invoke-rc.d")) providers << :invokercd end if file_exist?(Chef.path_to("/sbin/initctl")) providers << :upstart end if file_exist?(Chef.path_to("/sbin/insserv")) providers << :insserv end if systemd_is_init? providers << :systemd end if file_exist?(Chef.path_to("/sbin/chkconfig")) providers << :redhat end providers end
Private Class Methods
has_systemd_service_unit?(svc_name)
click to toggle source
# File lib/chef/platform/service_helpers.rb, line 108 def has_systemd_service_unit?(svc_name) %w{ /etc /usr/lib /lib /run }.any? do |load_path| file_exist?( Chef.path_to("#{load_path}/systemd/system/#{svc_name.gsub(/@.*$/, '@')}.service") ) end end
has_systemd_unit?(svc_name)
click to toggle source
# File lib/chef/platform/service_helpers.rb, line 116 def has_systemd_unit?(svc_name) # TODO: stop supporting non-service units with service resource %w{ /etc /usr/lib /lib /run }.any? do |load_path| file_exist?(Chef.path_to("#{load_path}/systemd/system/#{svc_name}")) end end
systemd_is_init?()
click to toggle source
# File lib/chef/platform/service_helpers.rb, line 103 def systemd_is_init? file_exist?(Chef.path_to("/proc/1/comm")) && file_open(Chef.path_to("/proc/1/comm")).gets.chomp == "systemd" end