This replaces the deprecated redis cookbook. Compiles the latest version of Redis, currently 7.0.11 Refs #488
		
			
				
	
	
		
			172 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
package_bin_path = '/usr/bin'
 | 
						|
config_dir = '/etc/redis'
 | 
						|
default_package_install = false
 | 
						|
 | 
						|
case node['platform_family']
 | 
						|
when 'debian'
 | 
						|
  shell = '/bin/false'
 | 
						|
  homedir = '/var/lib/redis'
 | 
						|
  package_name = 'redis-server'
 | 
						|
when 'rhel', 'fedora'
 | 
						|
  shell = '/bin/sh'
 | 
						|
  homedir = '/var/lib/redis'
 | 
						|
  package_name = 'redis'
 | 
						|
when 'freebsd'
 | 
						|
  shell = '/bin/sh'
 | 
						|
  homedir = '/var/lib/redis'
 | 
						|
  package_name = 'redis'
 | 
						|
  package_bin_path = '/usr/local/bin'
 | 
						|
  config_dir = '/usr/local/etc/redis'
 | 
						|
  default_package_install = true
 | 
						|
else
 | 
						|
  shell = '/bin/sh'
 | 
						|
  homedir = '/redis'
 | 
						|
  package_name = 'redis'
 | 
						|
end
 | 
						|
 | 
						|
# Overwite template used for the Redis Server config (not sentinel)
 | 
						|
default['redisio']['redis_config']['template_cookbook'] = 'redisio'
 | 
						|
default['redisio']['redis_config']['template_source'] = 'redis.conf.erb'
 | 
						|
 | 
						|
# Install related attributes
 | 
						|
default['redisio']['safe_install'] = true
 | 
						|
default['redisio']['package_install'] = default_package_install
 | 
						|
default['redisio']['package_name'] =  package_name
 | 
						|
default['redisio']['bypass_setup'] = false
 | 
						|
 | 
						|
# Tarball and download related defaults
 | 
						|
default['redisio']['mirror'] = 'http://download.redis.io/releases/'
 | 
						|
default['redisio']['base_name'] = 'redis-'
 | 
						|
default['redisio']['artifact_type'] = 'tar.gz'
 | 
						|
default['redisio']['base_piddir'] = '/var/run/redis'
 | 
						|
 | 
						|
# Version
 | 
						|
default['redisio']['version'] = if node['redisio']['package_install']
 | 
						|
                                  # latest version (only for package install)
 | 
						|
                                  nil
 | 
						|
                                else
 | 
						|
                                  # force version for tarball
 | 
						|
                                  '3.2.11'
 | 
						|
                                end
 | 
						|
 | 
						|
# Custom installation directory
 | 
						|
default['redisio']['install_dir'] = nil
 | 
						|
 | 
						|
# Job control related options (initd, upstart, or systemd)
 | 
						|
default['redisio']['job_control'] = if systemd?
 | 
						|
                                      'systemd'
 | 
						|
                                    elsif platform_family?('freebsd')
 | 
						|
                                      'rcinit'
 | 
						|
                                    else
 | 
						|
                                      'initd'
 | 
						|
                                    end
 | 
						|
 | 
						|
# Init.d script related options
 | 
						|
default['redisio']['init.d']['required_start'] = []
 | 
						|
default['redisio']['init.d']['required_stop'] = []
 | 
						|
 | 
						|
# Default settings for all redis instances, these can be overridden on a per server basis in the 'servers' hash
 | 
						|
default['redisio']['default_settings'] = {
 | 
						|
  'user'                       => 'redis',
 | 
						|
  'group'                      => 'redis',
 | 
						|
  'permissions'                => '0644',
 | 
						|
  'homedir'                    => homedir,
 | 
						|
  'shell'                      => shell,
 | 
						|
  'systemuser'                 => true,
 | 
						|
  'uid'                        => nil,
 | 
						|
  'ulimit'                     => 0,
 | 
						|
  'configdir'                  => config_dir,
 | 
						|
  'name'                       => nil,
 | 
						|
  'tcpbacklog'                 => '511',
 | 
						|
  'address'                    => nil,
 | 
						|
  'databases'                  => '16',
 | 
						|
  'backuptype'                 => 'rdb',
 | 
						|
  'datadir'                    => '/var/lib/redis',
 | 
						|
  'unixsocket'                 => nil,
 | 
						|
  'unixsocketperm'             => nil,
 | 
						|
  'timeout'                    => '0',
 | 
						|
  'keepalive'                  => '0',
 | 
						|
  'loglevel'                   => 'notice',
 | 
						|
  'logfile'                    => nil,
 | 
						|
  'syslogenabled'              => 'yes',
 | 
						|
  'syslogfacility'             => 'local0',
 | 
						|
  'shutdown_save'              => false,
 | 
						|
  'save'                       => nil, # Defaults to ['900 1','300 10','60 10000'] inside of template. Needed due to lack of hash subtraction
 | 
						|
  'stopwritesonbgsaveerror'    => 'yes',
 | 
						|
  'rdbcompression'             => 'yes',
 | 
						|
  'rdbchecksum'                => 'yes',
 | 
						|
  'dbfilename'                 => nil,
 | 
						|
  'slaveof'                    => nil,
 | 
						|
  'protected_mode'             => nil, # unspecified by default but could be set explicitly to 'yes' or 'no'
 | 
						|
  'masterauth'                 => nil,
 | 
						|
  'slaveservestaledata'        => 'yes',
 | 
						|
  'slavereadonly'              => 'yes',
 | 
						|
  'repldisklesssync'           => 'no',
 | 
						|
  'repldisklesssyncdelay'      => '5',
 | 
						|
  'replpingslaveperiod'        => '10',
 | 
						|
  'repltimeout'                => '60',
 | 
						|
  'repldisabletcpnodelay'      => 'no',
 | 
						|
  'replbacklogsize'            => '1mb',
 | 
						|
  'replbacklogttl'             => 3600,
 | 
						|
  'slavepriority'              => '100',
 | 
						|
  'requirepass'                => nil,
 | 
						|
  'rename_commands'            => nil,
 | 
						|
  'maxclients'                 => 10000,
 | 
						|
  'maxmemory'                  => nil,
 | 
						|
  'maxmemorypolicy'            => nil,
 | 
						|
  'maxmemorysamples'           => nil,
 | 
						|
  'appendfilename'             => nil,
 | 
						|
  'appendfsync'                => 'everysec',
 | 
						|
  'noappendfsynconrewrite'     => 'no',
 | 
						|
  'aofrewritepercentage'       => '100',
 | 
						|
  'aofrewriteminsize'          => '64mb',
 | 
						|
  'aofloadtruncated'           => 'yes',
 | 
						|
  'luatimelimit'               => '5000',
 | 
						|
  'slowloglogslowerthan'       => '10000',
 | 
						|
  'slowlogmaxlen'              => '1024',
 | 
						|
  'notifykeyspaceevents'       => '',
 | 
						|
  'hashmaxziplistentries'      => '512',
 | 
						|
  'hashmaxziplistvalue'        => '64',
 | 
						|
  'listmaxziplistentries'      => '512',
 | 
						|
  'listmaxziplistvalue'        => '64',
 | 
						|
  'setmaxintsetentries'        => '512',
 | 
						|
  'zsetmaxziplistentries'      => '128',
 | 
						|
  'zsetmaxziplistvalue'        => '64',
 | 
						|
  'hllsparsemaxbytes'          => '3000',
 | 
						|
  'activerehasing'             => 'yes',
 | 
						|
  'clientoutputbufferlimit'    => [
 | 
						|
    %w(normal 0 0 0),
 | 
						|
    %w(slave 256mb 64mb 60),
 | 
						|
    %w(pubsub 32mb 8mb 60),
 | 
						|
  ],
 | 
						|
  'hz'                         => '10',
 | 
						|
  'aofrewriteincrementalfsync' => 'yes',
 | 
						|
  'clusterenabled'             => 'no',
 | 
						|
  'clusterconfigfile'          => nil, # Defaults to redis instance name inside of template if cluster is enabled.
 | 
						|
  'clusternodetimeout'         => 5000,
 | 
						|
  'includes'                   => nil,
 | 
						|
  'data_bag_name'              => nil,
 | 
						|
  'data_bag_item'              => nil,
 | 
						|
  'data_bag_key'               => nil,
 | 
						|
  'minslavestowrite'           => nil,
 | 
						|
  'minslavesmaxlag'            => nil,
 | 
						|
  'breadcrumb'                 => true,
 | 
						|
}
 | 
						|
 | 
						|
# The default for this is set inside of the "install" recipe. This is due to the way deep merge handles arrays
 | 
						|
default['redisio']['servers'] = nil
 | 
						|
 | 
						|
# Define binary path
 | 
						|
default['redisio']['bin_path'] = if node['redisio']['package_install']
 | 
						|
                                   package_bin_path
 | 
						|
                                 else
 | 
						|
                                   '/usr/local/bin'
 | 
						|
                                 end
 | 
						|
 | 
						|
# Ulimit
 | 
						|
default['ulimit']['pam_su_template_cookbook'] = nil
 | 
						|
default['ulimit']['users'] = Mash.new
 | 
						|
default['ulimit']['security_limits_directory'] = '/etc/security/limits.d'
 | 
						|
default['ulimit']['ulimit_overriding_sudo_file_name'] = 'sudo'
 | 
						|
default['ulimit']['ulimit_overriding_sudo_file_cookbook'] = nil
 |