This replaces the deprecated redis cookbook. Compiles the latest version of Redis, currently 7.0.11 Refs #488
		
			
				
	
	
		
			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
 |