79 lines
2.4 KiB
Ruby
79 lines
2.4 KiB
Ruby
include_recipe 'redisio::_install_prereqs'
|
|
include_recipe 'redisio::install'
|
|
include_recipe 'redisio::ulimit'
|
|
|
|
redis = node['redisio']
|
|
|
|
sentinel_instances = redis['sentinels']
|
|
if sentinel_instances.nil?
|
|
sentinel_instances = [
|
|
{
|
|
'sentinel_port' => '26379',
|
|
'name' => 'mycluster',
|
|
'masters' => [
|
|
{
|
|
'master_name' => 'mycluster_master',
|
|
'master_ip' => '127.0.0.1',
|
|
'master_port' => '6379',
|
|
},
|
|
],
|
|
},
|
|
]
|
|
end
|
|
|
|
redisio_sentinel 'redis-sentinels' do
|
|
version redis['version'] if redis['version']
|
|
sentinel_defaults redis['sentinel_defaults']
|
|
sentinels sentinel_instances
|
|
base_piddir redis['base_piddir']
|
|
end
|
|
|
|
bin_path = if node['redisio']['install_dir']
|
|
::File.join(node['redisio']['install_dir'], 'bin')
|
|
else
|
|
node['redisio']['bin_path']
|
|
end
|
|
|
|
template '/lib/systemd/system/redis-sentinel@.service' do
|
|
source 'redis-sentinel@.service'
|
|
variables(
|
|
bin_path: bin_path,
|
|
limit_nofile: redis['default_settings']['maxclients'] + 32
|
|
)
|
|
only_if { node['redisio']['job_control'] == 'systemd' }
|
|
end
|
|
|
|
# Create a service resource for each sentinel instance, named for the port it runs on.
|
|
sentinel_instances.each do |current_sentinel|
|
|
sentinel_name = current_sentinel['name']
|
|
|
|
case node['redisio']['job_control']
|
|
when 'initd'
|
|
service "redis_sentinel_#{sentinel_name}" do
|
|
# don't supply start/stop/restart commands, Chef::Provider::Service::*
|
|
# do a fine job on it's own, and support systemd correctly
|
|
supports start: true, stop: true, restart: true, status: false
|
|
end
|
|
when 'upstart'
|
|
service "redis_sentinel_#{sentinel_name}" do
|
|
provider Chef::Provider::Service::Upstart
|
|
start_command "start redis_sentinel_#{sentinel_name}"
|
|
stop_command "stop redis_sentinel_#{sentinel_name}"
|
|
restart_command "restart redis_sentinel_#{sentinel_name}"
|
|
supports start: true, stop: true, restart: true, status: false
|
|
end
|
|
when 'systemd'
|
|
service "redis-sentinel@#{sentinel_name}" do
|
|
provider Chef::Provider::Service::Systemd
|
|
supports start: true, stop: true, restart: true, status: true
|
|
end
|
|
when 'rcinit'
|
|
service "redis_sentinel_#{sentinel_name}" do
|
|
provider Chef::Provider::Service::Freebsd
|
|
supports start: true, stop: true, restart: true, status: true
|
|
end
|
|
else
|
|
Chef::Log.error('Unknown job control type, no service resource created!')
|
|
end
|
|
end
|