From dba23998eff7434cb0b1fd3d696548220f71069f Mon Sep 17 00:00:00 2001 From: fsalum Date: Mon, 25 Feb 2013 16:23:42 -0800 Subject: [PATCH] fixing less options available for debian conf --- manifests/init.pp | 16 +- manifests/params.pp | 18 +- templates/redis.debian.conf.erb | 210 ++++++++++++++++++ templates/redis.logrotate.erb | 2 +- .../{redis.conf.erb => redis.rhel.conf.erb} | 0 5 files changed, 236 insertions(+), 10 deletions(-) create mode 100644 templates/redis.debian.conf.erb rename templates/{redis.conf.erb => redis.rhel.conf.erb} (100%) diff --git a/manifests/init.pp b/manifests/init.pp index 780a5af..cd02bb8 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -31,12 +31,12 @@ $service_ensure = 'running', $service_enable = true, $conf_daemonize = 'yes', - $conf_pidfile = '/var/run/redis/redis.pid', + $conf_pidfile = UNSET, $conf_port = '6379', $conf_bind = '127.0.0.1', $conf_timeout = '0', $conf_loglevel = 'notice', - $conf_logfile = '/var/log/redis/redis.log', + $conf_logfile = UNSET, $conf_syslog_enabled = UNSET, $conf_syslog_ident = UNSET, $conf_syslog_facility = UNSET, @@ -82,6 +82,16 @@ include redis::params + $conf_pidfile_real = $conf_pidfile ? { + 'UNSET' => $::redis::params::pidfile, + default => $conf_pidfile, + } + + $conf_logfile_real = $conf_logfile ? { + 'UNSET' => $::redis::params::logfile, + default => $conf_logfile, + } + package { 'redis': ensure => $package_ensure, name => $::redis::params::package, @@ -98,7 +108,7 @@ file { $::redis::params::conf: path => $::redis::params::conf, - content => template('redis/redis.conf.erb'), + content => template("redis/$::redis::params::conf_template"), owner => root, group => root, mode => '0644', diff --git a/manifests/params.pp b/manifests/params.pp index b61d5ef..686bc2d 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -14,14 +14,20 @@ case $::operatingsystem { 'centos', 'redhat', 'fedora': { - $package = 'redis' - $service = 'redis' - $conf = '/etc/redis.conf' + $package = 'redis' + $service = 'redis' + $conf = '/etc/redis.conf' + $conf_template = 'redis.rhel.conf.erb' + $pidfile = '/var/run/redis/redis.pid' + $logfile = '/var/log/redis/redis.log' } 'ubuntu', 'debian': { - $package = 'redis-server' - $service = 'redis-server' - $conf = '/etc/redis/redis.conf' + $package = 'redis-server' + $service = 'redis-server' + $conf = '/etc/redis/redis.conf' + $conf_template = 'redis.debian.conf.erb' + $pidfile = '/var/run/redis.pid' + $logfile = '/var/log/redis/redis-server.log' } default: { fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, module ${module_name} only support osfamily RedHat and Debian") diff --git a/templates/redis.debian.conf.erb b/templates/redis.debian.conf.erb new file mode 100644 index 0000000..3de480b --- /dev/null +++ b/templates/redis.debian.conf.erb @@ -0,0 +1,210 @@ +# Redis configuration file example + +# By default Redis does not run as a daemon. Use 'yes' if you need it. +# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. +daemonize <%= conf_daemonize %> + +# When run as a daemon, Redis write a pid file in /var/run/redis.pid by default. +# You can specify a custom pid file location here. +pidfile <%= conf_pidfile_real %> + +# Accept connections on the specified port, default is 6379 +port <%= conf_port %> + +# If you want you can bind a single interface, if the bind option is not +# specified all the interfaces will listen for connections. +# +bind <%= conf_bind %> + +# Close the connection after a client is idle for N seconds (0 to disable) +timeout <%= conf_timeout %> + +# Set server verbosity to 'debug' +# it can be one of: +# debug (a lot of information, useful for development/testing) +# notice (moderately verbose, what you want in production probably) +# warning (only very important / critical messages are logged) +loglevel <%= conf_loglevel %> + +# Specify the log file name. Also 'stdout' can be used to force +# the demon to log on the standard output. Note that if you use standard +# output for logging but daemonize, logs will be sent to /dev/null +logfile <%= conf_logfile_real %> + +# Set the number of databases. The default database is DB 0, you can select +# a different one on a per-connection basis using SELECT where +# dbid is a number between 0 and 'databases'-1 +databases <%= conf_databases %> + +################################ SNAPSHOTTING ################################# +# +# Save the DB on disk: +# +# save +# +# Will save the DB if both the given number of seconds and the given +# number of write operations against the DB occurred. +# +# In the example below the behaviour will be to save: +# after 900 sec (15 min) if at least 1 key changed +# after 300 sec (5 min) if at least 10 keys changed +# after 60 sec if at least 10000 keys changed +<% if conf_save != 'UNSET' %> +save <%= conf_save %> +<% else %> +save 900 1 +save 300 10 +save 60 10000 +<% end %> + +# Compress string objects using LZF when dump .rdb databases? +# For default that's set to 'yes' as it's almost always a win. +# If you want to save some CPU in the saving child set it to 'no' but +# the dataset will likely be bigger if you have compressible values or keys. +rdbcompression <%= conf_rdbcompression %> + +# The filename where to dump the DB +dbfilename <%= conf_dbfilename %> + +# For default save/load DB in/from the working directory +# Note that you must specify a directory not a file name. +dir <%= conf_dir %> + +################################# REPLICATION ################################# + +# Master-Slave replication. Use slaveof to make a Redis instance a copy of +# another Redis server. Note that the configuration is local to the slave +# so for example it is possible to configure the slave to save the DB with a +# different interval, or to listen to another port, and so on. +# +# slaveof +<% if conf_slaveof != 'UNSET' %> +slaveof <%= conf_slaveof %> +<% end %> + +# If the master is password protected (using the "requirepass" configuration +# directive below) it is possible to tell the slave to authenticate before +# starting the replication synchronization process, otherwise the master will +# refuse the slave request. +# +# masterauth +<% if conf_masterauth != 'UNSET' %> +masterauth <%= conf_masterauth %> +<% end %> + + +################################## SECURITY ################################### + +# Require clients to issue AUTH before processing any other +# commands. This might be useful in environments in which you do not trust +# others with access to the host running redis-server. +# +# This should stay commented out for backward compatibility and because most +# people do not need auth (e.g. they run their own servers). +# +# requirepass foobared +<% if conf_requirepass != 'UNSET' %> +requirepass <%= conf_requirepass %> +<% end %> + + +################################### LIMITS #################################### + +# Set the max number of connected clients at the same time. By default there +# is no limit, and it's up to the number of file descriptors the Redis process +# is able to open. The special value '0' means no limts. +# Once the limit is reached Redis will close all the new connections sending +# an error 'max number of clients reached'. +# +# maxclients 128 +<% if conf_maxclients != 'UNSET' %> +maxclients <%= conf_maxclients %> +<% end %> + +# Don't use more memory than the specified amount of bytes. +# When the memory limit is reached Redis will try to remove keys with an +# EXPIRE set. It will try to start freeing keys that are going to expire +# in little time and preserve keys with a longer time to live. +# Redis will also try to remove objects from free lists if possible. +# +# If all this fails, Redis will start to reply with errors to commands +# that will use more memory, like SET, LPUSH, and so on, and will continue +# to reply to most read-only commands like GET. +# +# WARNING: maxmemory can be a good idea mainly if you want to use Redis as a +# 'state' server or cache, not as a real DB. When Redis is used as a real +# database the memory usage will grow over the weeks, it will be obvious if +# it is going to use too much memory in the long run, and you'll have the time +# to upgrade. With maxmemory after the limit is reached you'll start to get +# errors for write operations, and this may even lead to DB inconsistency. +# +# maxmemory +<% if conf_maxmemory != 'UNSET' %> +maxmemory <%= conf_maxmemory %> +<% end %> + +############################## APPEND ONLY MODE ############################### + +# By default Redis asynchronously dumps the dataset on disk. If you can live +# with the idea that the latest records will be lost if something like a crash +# happens this is the preferred way to run Redis. If instead you care a lot +# about your data and don't want to that a single record can get lost you should +# enable the append only mode: when this mode is enabled Redis will append +# every write operation received in the file appendonly.log. This file will +# be read on startup in order to rebuild the full dataset in memory. +# +# Note that you can have both the async dumps and the append only file if you +# like (you have to comment the "save" statements above to disable the dumps). +# Still if append only mode is enabled Redis will load the data from the +# log file at startup ignoring the dump.rdb file. +# +# The name of the append only file is "appendonly.log" +# +# IMPORTANT: Check the BGREWRITEAOF to check how to rewrite the append +# log file in background when it gets too big. + +appendonly <%= conf_appendonly %> + +# The fsync() call tells the Operating System to actually write data on disk +# instead to wait for more data in the output buffer. Some OS will really flush +# data on disk, some other OS will just try to do it ASAP. +# +# Redis supports three different modes: +# +# no: don't fsync, just let the OS flush the data when it wants. Faster. +# always: fsync after every write to the append only log . Slow, Safest. +# everysec: fsync only if one second passed since the last fsync. Compromise. +# +# The default is "always" that's the safer of the options. It's up to you to +# understand if you can relax this to "everysec" that will fsync every second +# or to "no" that will let the operating system flush the output buffer when +# it want, for better performances (but if you can live with the idea of +# some data loss consider the default persistence mode that's snapshotting). + +appendfsync <%= conf_appendfsync %> +# appendfsync everysec +# appendfsync no + +############################### ADVANCED CONFIG ############################### + +# Glue small output buffers together in order to send small replies in a +# single TCP packet. Uses a bit more CPU but most of the times it is a win +# in terms of number of queries per second. Use 'yes' if unsure. +glueoutputbuf yes + +# Use object sharing. Can save a lot of memory if you have many common +# string in your dataset, but performs lookups against the shared objects +# pool so it uses more CPU and can be a bit slower. Usually it's a good +# idea. +# +# When object sharing is enabled (shareobjects yes) you can use +# shareobjectspoolsize to control the size of the pool used in order to try +# object sharing. A bigger pool size will lead to better sharing capabilities. +# In general you want this value to be at least the double of the number of +# very common strings you have in your dataset. +# +# WARNING: object sharing is experimental, don't enable this feature +# in production before of Redis 1.0-stable. Still please try this feature in +# your development environment so that we can test it better. +shareobjects no +shareobjectspoolsize 1024 diff --git a/templates/redis.logrotate.erb b/templates/redis.logrotate.erb index 9f9f22f..cedfe6d 100644 --- a/templates/redis.logrotate.erb +++ b/templates/redis.logrotate.erb @@ -1,4 +1,4 @@ -<%= conf_logfile %> { +<%= conf_logfile_real %> { weekly rotate 10 copytruncate diff --git a/templates/redis.conf.erb b/templates/redis.rhel.conf.erb similarity index 100% rename from templates/redis.conf.erb rename to templates/redis.rhel.conf.erb