110 lines
2.6 KiB
Ruby
110 lines
2.6 KiB
Ruby
def service_user
|
|
value_for_platform_family(
|
|
%w(suse fedora rhel amazon) => 'memcached',
|
|
'debian' => 'memcache',
|
|
'default' => 'nobody'
|
|
)
|
|
end
|
|
|
|
def service_group
|
|
value_for_platform_family(
|
|
%w(suse fedora rhel amazon) => 'memcached',
|
|
'debian' => 'memcache',
|
|
'default' => 'nogroup'
|
|
)
|
|
end
|
|
|
|
def binary_path
|
|
new_resource.binary_path || value_for_platform_family(
|
|
'suse' => '/usr/sbin/memcached',
|
|
'default' => '/usr/bin/memcached'
|
|
)
|
|
end
|
|
|
|
def lock_dir
|
|
value_for_platform_family(
|
|
%w(rhel fedora suse amazon) => '/var/lock/subsys',
|
|
'default' => '/var/lock'
|
|
)
|
|
end
|
|
|
|
# if the instance name is memcached don't spit out memcached_memcached
|
|
def memcached_instance_name
|
|
new_resource.instance_name == 'memcached' ? 'memcached' : "memcached_#{new_resource.instance_name}"
|
|
end
|
|
|
|
def disable_default_memcached_instance
|
|
return unless new_resource.disable_default_instance
|
|
|
|
service 'disable default memcached' do
|
|
service_name 'memcached'
|
|
action [:stop, :disable]
|
|
not_if { new_resource.instance_name == 'memcached' }
|
|
end
|
|
end
|
|
|
|
def remove_default_memcached_configs
|
|
return unless new_resource.remove_default_config
|
|
|
|
%w(/etc/memcached.conf /etc/sysconfig/memcached /etc/default/memcached).each do |f|
|
|
file f do
|
|
action :delete
|
|
end
|
|
end
|
|
end
|
|
|
|
def cli_options
|
|
options = "-m #{new_resource.memory} \
|
|
-U #{new_resource.udp_port} \
|
|
-p #{new_resource.port} \
|
|
-u #{new_resource.user} \
|
|
-l #{new_resource.listen} \
|
|
-c #{new_resource.maxconn} \
|
|
-I #{new_resource.max_object_size}"
|
|
|
|
options << " -o #{new_resource.experimental_options.join(',')}" unless new_resource.experimental_options.empty?
|
|
|
|
log_arg = ''
|
|
case new_resource.log_level
|
|
when 'info'
|
|
log_arg = 'v'
|
|
when 'debug'
|
|
log_arg = 'vv'
|
|
when 'trace'
|
|
log_arg = 'vvv'
|
|
end
|
|
options << " -#{log_arg}"
|
|
|
|
options << " -t #{new_resource.threads}" if new_resource.threads
|
|
options << " #{new_resource.extra_cli_options.join(' ')}" unless new_resource.extra_cli_options.empty?
|
|
options
|
|
end
|
|
|
|
def disable_legacy_runit_instance
|
|
return unless ::File.exist?("/etc/sv/#{memcached_instance_name}/run")
|
|
|
|
memcached_instance_runit memcached_instance_name do
|
|
action :remove
|
|
end
|
|
end
|
|
|
|
# choose the right platform init class
|
|
def platform_sysv_init_class
|
|
value_for_platform_family(
|
|
'debian' => Chef::Provider::Service::Init::Debian,
|
|
'default' => Chef::Provider::Service::Init::Redhat
|
|
)
|
|
end
|
|
|
|
def log_file_name
|
|
File.join(node['memcached']['logfilepath'], "#{memcached_instance_name}.log")
|
|
end
|
|
|
|
def create_log_file
|
|
file log_file_name do
|
|
user service_user
|
|
group service_group
|
|
mode '0644'
|
|
end
|
|
end
|