rubber 2.6.5 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -0
  3. data/CHANGELOG +37 -0
  4. data/lib/rubber/cloud/vsphere.rb +4 -0
  5. data/lib/rubber/generator.rb +37 -19
  6. data/lib/rubber/recipes/rubber/security_groups.rb +1 -1
  7. data/lib/rubber/recipes/rubber/volumes.rb +1 -1
  8. data/lib/rubber/version.rb +1 -1
  9. data/templates/delayed_job/config/rubber/deploy-delayed_job.rb +44 -0
  10. data/templates/delayed_job/config/rubber/role/delayed_job/monit-delayed_job.conf +18 -0
  11. data/templates/delayed_job/config/rubber/rubber-delayed_job.yml +1 -0
  12. data/templates/delayed_job/templates.yml +1 -0
  13. data/templates/discourse/config/rubber/deploy-discourse.rb +16 -0
  14. data/templates/discourse/config/rubber/role/nginx/nginx.conf +43 -0
  15. data/templates/discourse/config/rubber/role/nginx/unicorn_nginx.conf +102 -0
  16. data/templates/discourse/config/rubber/role/unicorn/unicorn.rb +99 -0
  17. data/templates/discourse/config/rubber/rubber-discourse.yml +3 -0
  18. data/templates/discourse/templates.yml +5 -0
  19. data/templates/elasticsearch/config/rubber/deploy-elasticsearch.rb +7 -7
  20. data/templates/elasticsearch/config/rubber/role/elasticsearch/elasticsearch-default.conf +47 -0
  21. data/templates/elasticsearch/config/rubber/role/elasticsearch/elasticsearch.yml +49 -30
  22. data/templates/elasticsearch/config/rubber/role/elasticsearch/logging.yml +14 -3
  23. data/templates/elasticsearch/config/rubber/role/elasticsearch/monit-elasticsearch.conf +8 -0
  24. data/templates/elasticsearch/config/rubber/rubber-elasticsearch.yml +1 -4
  25. data/templates/ffmpeg/config/rubber/deploy-ffmpeg.rb +13 -0
  26. data/templates/ffmpeg/config/rubber/rubber-ffmpeg.yml +5 -0
  27. data/templates/ffmpeg/templates.yml +1 -0
  28. data/templates/graylog/config/rubber/deploy-graylog.rb +17 -20
  29. data/templates/graylog/config/rubber/role/graylog_server/graylog2.conf +157 -43
  30. data/templates/graylog/config/rubber/role/graylog_server/monit-graylog_server.conf +8 -0
  31. data/templates/graylog/config/rubber/role/graylog_web/graylog2-web-interface.conf +19 -0
  32. data/templates/graylog/config/rubber/role/graylog_web/graylog_web-upstart.conf +1 -1
  33. data/templates/graylog/config/rubber/role/graylog_web/monit-graylog_web.conf +8 -0
  34. data/templates/graylog/config/rubber/rubber-graylog.yml +5 -12
  35. data/templates/graylog/templates.rb +13 -5
  36. data/templates/memcached/config/rubber/deploy-memcached.rb +16 -0
  37. data/templates/memcached/config/rubber/role/memcached/dalli.rb +20 -0
  38. data/templates/memcached/config/rubber/role/memcached/memcached.conf +17 -8
  39. data/templates/memcached/config/rubber/rubber-memcached.yml +25 -1
  40. data/templates/monit/config/rubber/role/memcached/monit-memcached.conf +9 -0
  41. data/templates/monit/config/rubber/role/mongodb/monit-mongodb.conf +1 -0
  42. data/templates/mysql/config/rubber/deploy-mysql.rb +1 -2
  43. data/templates/newrelic/config/rubber/deploy-newrelic.rb +49 -0
  44. data/templates/newrelic/config/rubber/role/newrelic/monit-newrelic.conf +9 -0
  45. data/templates/newrelic/config/rubber/rubber-newrelic.yml +5 -0
  46. data/templates/newrelic/templates.yml +1 -0
  47. data/templates/passenger_nginx/config/rubber/deploy-passenger_nginx.rb +7 -4
  48. data/templates/passenger_nginx/config/rubber/rubber-passenger_nginx.yml +1 -0
  49. data/templates/redis/config/rubber/role/redis/redis.conf +120 -16
  50. data/templates/redis/config/rubber/rubber-redis.yml +1 -1
  51. data/templates/solr/config/rubber/deploy-solr.rb +8 -8
  52. data/templates/solr/config/rubber/rubber-solr.yml +6 -6
  53. data/templates/solr/templates.yml +1 -3
  54. data/templates/solr_sunspot/config/rubber/common/solr_sunspot.yml +10 -0
  55. data/templates/solr_sunspot/config/rubber/deploy-solr_sunspot.rb +30 -0
  56. data/templates/solr_sunspot/config/rubber/rubber-solr_sunspot.yml +5 -0
  57. data/templates/solr_sunspot/templates.yml +1 -0
  58. data/templates/unicorn/config/rubber/deploy-unicorn.rb +16 -11
  59. data/templates/unicorn/config/rubber/role/unicorn/unicorn +91 -0
  60. data/test/generator_test.rb +54 -0
  61. data/test/test_helper.rb +2 -0
  62. metadata +31 -11
  63. data/templates/elasticsearch/config/rubber/role/elasticsearch/elasticsearch-upstart.conf +0 -23
  64. data/templates/graylog/config/initializers/graylog.rb +0 -53
  65. data/templates/graylog/config/rubber/role/graylog_web/crontab +0 -9
  66. data/templates/graylog/config/rubber/role/graylog_web/email.yml +0 -16
  67. data/templates/graylog/config/rubber/role/graylog_web/general.yml +0 -27
  68. data/templates/graylog/config/rubber/role/graylog_web/mongoid.yml +0 -28
  69. data/templates/memcached/config/memcached.yml +0 -28
  70. data/templates/memcached/config/rubber/common/memcached.yml +0 -14
  71. data/templates/unicorn/config/rubber/role/unicorn/unicorn-upstart.conf +0 -13
@@ -0,0 +1,8 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-graylog_server.conf'
3
+ %>
4
+ check process graylog_server with pidfile <%= rubber_env.graylog_server_pid_file %>
5
+ group graylog-<%= Rubber.env %>
6
+ start program = "/usr/bin/env service graylog-server start"
7
+ stop program = "/usr/bin/env service graylog-server stop"
8
+ if failed host <%= rubber_env.host %> port <%= rubber_env.graylog_server_port %> type UDP with timeout 10 seconds for 10 cycles then restart
@@ -0,0 +1,19 @@
1
+ <%
2
+ @path = "#{rubber_env.graylog_web_dir}/conf/graylog2-web-interface.conf"
3
+
4
+ graylog_server_uris = rubber_instances.for_role('graylog_server').collect { |i| "http://#{i.internal_ip}:12900/" }.join(',')
5
+ %>
6
+ # graylog2-server REST URIs (one or more, comma separated) For example: "http://127.0.0.1:12900/,http://127.0.0.1:12910/"
7
+ graylog2-server.uris="<%= graylog_server_uris %>"
8
+
9
+ # Secret key
10
+ # ~~~~~
11
+ # The secret key is used to secure cryptographics functions. Set this to a long and randomly generated string.
12
+ # If you deploy your application to several instances be sure to use the same key!
13
+ # Generate for example with: pwgen -s 96
14
+ application.secret="<%= rubber_env.graylog_web_secret %>"
15
+
16
+ # Web interface timezone
17
+ # Graylog2 stores all timestamps in UTC. To properly display times, set the default timezone of the interface.
18
+ # If you leave this out, Graylog2 will pick your system default as the timezone. Usually you will want to configure it explicitly.
19
+ timezone="<%= rubber_env.timezone %>"
@@ -9,7 +9,7 @@ stop on runlevel [016]
9
9
 
10
10
  script
11
11
  cd <%= rubber_env.graylog_web_dir %>
12
- exec bash -l -c "RAILS_ENV=production bundle exec puma -p <%= rubber_env.graylog_web_port %> <%= rubber_env.graylog_web_dir %>/config.ru"
12
+ exec ./bin/graylog2-web-interface > graylog.log 2>&1
13
13
  end script
14
14
 
15
15
  post-start script
@@ -0,0 +1,8 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-graylog_web.conf'
3
+ %>
4
+ check process graylog_web with pidfile <%= rubber_env.graylog_web_pid_file %>
5
+ group graylog-<%= Rubber.env %>
6
+ start program = "/usr/bin/env service graylog-web start"
7
+ stop program = "/usr/bin/env service graylog-web stop"
8
+ if failed host <%= rubber_env.host %> port <%= rubber_env.graylog_web_port %> with timeout 10 seconds for 10 cycles then restart
@@ -1,24 +1,21 @@
1
- graylog_server_version: "0.9.6p1"
2
- graylog_server_pkg_url: "https://github.com/downloads/Graylog2/graylog2-server/graylog2-server-#{graylog_server_version}.tar.gz"
1
+ graylog_server_version: "0.20.0-rc.1-1"
3
2
  graylog_server_prefix: "/usr/local"
4
3
  graylog_server_dir: "#{graylog_server_prefix}/graylog2-server-#{graylog_server_version}"
5
4
  graylog_server_pid_file: "/var/run/graylog-server.pid"
6
5
  graylog_server_port: 12201
7
6
  graylog_server_syslog_port: 12514
8
7
 
9
- graylog_web_version: "0.9.6p1"
10
- graylog_web_pkg_url: "https://github.com/downloads/Graylog2/graylog2-web-interface/graylog2-web-interface-#{graylog_web_version}.tar.gz"
8
+ graylog_web_version: "0.20.0-rc.1-1"
11
9
  graylog_web_prefix: "/usr/local"
12
10
  graylog_web_dir: "#{graylog_web_prefix}/graylog2-web-interface-#{graylog_web_version}"
13
11
  graylog_web_pid_file: "/var/run/graylog-web.pid"
14
- graylog_web_port: 3005
12
+ graylog_web_port: 9000
15
13
 
16
14
  graylog_web_username: admin
17
15
  graylog_web_password: admin1
18
- graylog_web_email: "#{admin_email}"
19
16
 
20
17
  graylog_mongo_database: graylog2
21
- graylog_elasticsearch_index: graylog2
18
+ graylog_elasticsearch_index: "graylog2_#{Rubber.env}"
22
19
 
23
20
  web_tools_proxies:
24
21
  graylog:
@@ -27,7 +24,6 @@ web_tools_proxies:
27
24
  path: /
28
25
 
29
26
  role_dependencies:
30
- web_tools: [graylog_web, graylog_server]
31
27
  graylog_server: [graylog_mongodb, graylog_elasticsearch]
32
28
  graylog_mongodb: [mongodb]
33
29
  graylog_elasticsearch: [elasticsearch]
@@ -36,7 +32,4 @@ roles:
36
32
  graylog_server:
37
33
  packages: [openjdk-7-jdk, mongodb-10gen]
38
34
  graylog_web:
39
- packages: [libcurl4-openssl-dev]
40
- gems: [puma]
41
-
42
- gems: [gelf, graylog2_exceptions, graylog2-resque]
35
+ packages: [openjdk-7-jdk]
@@ -1,5 +1,13 @@
1
- if Rubber::Util::is_bundler?
2
- append_to_file "Gemfile", "gem 'gelf'\n"
3
- append_to_file "Gemfile", "gem 'graylog2_exceptions', :git => 'git://github.com/wr0ngway/graylog2_exceptions.git'\n"
4
- append_to_file "Gemfile", "gem 'graylog2-resque'\n"
5
- end
1
+ require 'securerandom'
2
+
3
+ extra_config = <<-EXTRA
4
+ # This was auto-generated by Rubber and is unique to your machine. Feel free to regenerate if you'd like.
5
+ # You may want to move this to your rubber-secret.yml to keep it out of version control.
6
+ graylog_server_secret: #{SecureRandom.hex(96)}
7
+
8
+ # This was auto-generated by Rubber and is unique to your machine. Feel free to regenerate if you'd like.
9
+ # You may want to move this to your rubber-secret.yml to keep it out of version control.
10
+ graylog_web_secret: #{SecureRandom.hex(96)}
11
+ EXTRA
12
+
13
+ append_to_file 'config/rubber/rubber-graylog.yml', "\n#{extra_config}"
@@ -3,6 +3,22 @@ namespace :rubber do
3
3
 
4
4
  namespace :memcached do
5
5
 
6
+ desc "Starts memcached shared memory"
7
+ task :start, :roles => :memcached do
8
+ rsudo "service memcached status || service memcached start"
9
+ end
10
+
11
+ desc "Stops memcached shared memory"
12
+ task :stop, :roles => :memcached do
13
+ rsudo "service memcached stop || true"
14
+ end
15
+
16
+ desc "Restarts memcached shared memory"
17
+ task :restart, :roles => :memcached do
18
+ stop
19
+ start
20
+ end
21
+
6
22
  desc "Display status of memcached shared memory"
7
23
  task :status, :roles => :memcached do
8
24
  rsudo "service memcached status || true"
@@ -0,0 +1,20 @@
1
+ <%
2
+ @path = "#{Rubber.root}/config/dalli.rb"
3
+ %>
4
+
5
+ module Rubber
6
+ module Dalli
7
+ module Config
8
+ include ::Rails::Initializable
9
+
10
+ initializer :set_dalli_cache, :before => :initialize_cache do |app|
11
+ config.action_controller.perform_caching = true
12
+ config.cache_store = :dalli_store,
13
+ <%- rubber_instances.for_role('memcached').each do |ic| %>
14
+ '<%= ic.full_name %>:<%= rubber_env.memcached_port %>',
15
+ <%- end %>
16
+ { :value_max_bytes => <%= rubber_env.memcached_max_slab_bytes %> }
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,9 +1,10 @@
1
1
  <%
2
2
  @path = "/etc/memcached.conf"
3
- @post = "service memcached restart"
3
+ max_mem = rubber_env.memcached_max_mem
4
+ max_mem = max_mem[rubber_instances[rubber_env.host].image_type.split('.')[1]] if max_mem.is_a?(Hash)
4
5
  %>
5
6
 
6
- # memcached default config file edited for mobicious
7
+ # memcached default config file
7
8
  # 2003 - Jay Bonci <jaybonci@debian.org>
8
9
  # This configuration file is read by the start-memcached script provided as
9
10
  # part of the Debian GNU/Linux distribution.
@@ -16,8 +17,11 @@
16
17
  # Log memcached's output to /var/log/memcached
17
18
  logfile <%= rubber_env.memcached_log_dir %>/memcached.log
18
19
 
19
- # Be verbose
20
- -v
20
+ # pid file
21
+ -P <%= rubber_env.memcached_pid_file %>
22
+
23
+ # Be verbose (shows errors, warnings, and socket connections)
24
+ -v
21
25
 
22
26
  # Be even more verbose (print client commands as well)
23
27
  # -vv
@@ -25,19 +29,24 @@ logfile <%= rubber_env.memcached_log_dir %>/memcached.log
25
29
  # Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
26
30
  # Note that the daemon will grow to this size, but does not start out holding this much
27
31
  # memory
28
- -m <%= rubber_env.memcached_max_mem %>
32
+ -m <%= max_mem %>
33
+
34
+ # Override the size of each slab page in bytes, i.e. the maximum item size that
35
+ # memcached will accept. Recommended not to set above 1 MB for performance reasons.
36
+ # The default value is 1 MB.
37
+ -I <%= rubber_env.memcached_max_slab_bytes %>
29
38
 
30
39
  # Default connection port is 11211
31
- -p 11211
40
+ -p <%= rubber_env.memcached_port %>
32
41
 
33
42
  # Run the daemon as root. The start-memcached will default to running as root if no
34
43
  # -u command is present in this config file
35
- -u nobody
44
+ -u memcache
36
45
 
37
46
  # Specify which IP address to listen on. The default is to listen on all IP addresses
38
47
  # This parameter is one of the only security measures that memcached has, so make sure
39
48
  # it's listening on a firewalled interface.
40
- #-l 127.0.0.1
49
+ # -l 127.0.0.1
41
50
 
42
51
  # Limit the number of simultaneous incoming connections. The daemon default is 1024
43
52
  # -c 1024
@@ -1,7 +1,31 @@
1
1
  # Sets up memcached server and client as dalli
2
+ #
3
+ # !!!IMPORTANT!!! add the following lines inside your application.rb class:
4
+ #
5
+ # dalli_config = Rails.root.join('config','dalli.rb')
6
+ # if File.exists?(dalli_config)
7
+ # require dalli_config; include ::Rubber::Dalli::Config
8
+ # end
2
9
 
10
+ memcached_pid_file: /var/run/memcached.pid
3
11
  memcached_log_dir: /var/log/memcached
4
- memcached_max_mem: 64
12
+ memcached_port: 11211
13
+
14
+ # MB memory max to use for object storage in megabytes.
15
+ # Accepts either a single value or a hash by instance size
16
+ memcached_max_mem:
17
+ micro: 64 # 613MB max
18
+ small: 768 # 1.7GB max
19
+ medium: 2048 # 3.7GB max
20
+ large: 4096 # 7.5GB max
21
+ xlarge: 10240 # 15GB max
22
+ 2xlarge: 20480 # 30GB max
23
+ 4xlarge: 51200 # 60GB max
24
+
25
+ # Set size of each slab page in bytes, i.e. maximum item size
26
+ # that memcached will accept. Recommended not to set above 1 MB
27
+ # for performance reasons.
28
+ memcached_max_slab_bytes: "#{1024*1024}"
5
29
 
6
30
  gems: [dalli]
7
31
 
@@ -0,0 +1,9 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-memcached.conf'
3
+ %>
4
+ check process memcache with pidfile <%= rubber_env.memcached_pid_file %>
5
+ group memcache-<%= Rubber.env %>
6
+ start program = "/usr/bin/env service memcached start"
7
+ stop program = "/usr/bin/env service memcached stop"
8
+ if failed port <%= rubber_env.memcached_port %> protocol memcache then restart
9
+ if 5 restarts within 5 cycles then timeout
@@ -6,5 +6,6 @@ check process mongodb with pidfile <%= rubber_env.mongodb_pid %>
6
6
  group mongodb-<%= Rubber.env %>
7
7
  start program = "/bin/bash -c 'rm -f <%= rubber_env.mongodb_pid %>; /usr/bin/env service mongodb start'"
8
8
  stop program = "/usr/bin/env service mongodb stop"
9
+ if does not exist for 5 cycles then restart
9
10
  if failed port 27017 then restart
10
11
  if 5 restarts within 5 cycles then timeout
@@ -1,4 +1,3 @@
1
-
2
1
  namespace :rubber do
3
2
 
4
3
  namespace :mysql do
@@ -40,7 +39,7 @@ namespace :rubber do
40
39
  pass = "identified by '#{env.db_pass}'" if env.db_pass
41
40
  rubber.sudo_script "create_master_db", <<-ENDSCRIPT
42
41
  mysql -u root -e "create database #{env.db_name};"
43
- mysql -u root -e "delete from mysql.user where user='' and host='localhost';"
42
+ mysql -u root -e "delete from mysql.user where user='';"
44
43
  mysql -u root -e "grant all on *.* to '#{env.db_user}'@'%' #{pass};"
45
44
  mysql -u root -e "grant select on *.* to '#{env.db_slave_user}'@'%' #{pass};"
46
45
  mysql -u root -e "grant replication slave on *.* to '#{env.db_replicator_user}'@'%' #{pass};"
@@ -0,0 +1,49 @@
1
+
2
+ namespace :rubber do
3
+
4
+ namespace :newrelic do
5
+
6
+ rubber.allow_optional_tasks(self)
7
+
8
+ before "rubber:install_packages", "rubber:newrelic:install_newrelic_apt"
9
+
10
+ task :install_newrelic_apt, :roles => :newrelic do
11
+ rubber.sudo_script 'install_newrelic', <<-ENDSCRIPT
12
+ if [[ -z $(cat /etc/apt/sources.list.d/newrelic.list 2> /dev/null) ]]; then
13
+ wget -O /etc/apt/sources.list.d/newrelic.list http://download.newrelic.com/debian/newrelic.list
14
+ apt-key adv --keyserver hkp://subkeys.pgp.net --recv-keys 548C16BF
15
+ fi
16
+ ENDSCRIPT
17
+ end
18
+
19
+ after "rubber:bootstrap", "rubber:newrelic:bootstrap"
20
+
21
+ task :bootstrap, :roles => :newrelic do
22
+ rubber.sudo_script 'bootstrap_newrelic', <<-ENDSCRIPT
23
+ if [[ -z $(cat /etc/newrelic/nrsysmond.cfg | grep #{rubber_env.nrsysmond_license_key} 2> /dev/null) ]]; then
24
+ nrsysmond-config --set license_key=#{rubber_env.nrsysmond_license_key}
25
+ fi
26
+ ENDSCRIPT
27
+
28
+ restart
29
+ end
30
+
31
+ desc "Start newrelic system monitoring"
32
+ task :start, :roles => :newrelic do
33
+ rsudo "service newrelic-sysmond start"
34
+ end
35
+
36
+ desc "Stop newrelic system monitoring"
37
+ task :stop, :roles => :newrelic do
38
+ rsudo "service newrelic-sysmond stop || true"
39
+ end
40
+
41
+ desc "Restart newrelic system monitoring"
42
+ task :restart, :roles => :newrelic do
43
+ stop
44
+ start
45
+ end
46
+
47
+ end
48
+
49
+ end
@@ -0,0 +1,9 @@
1
+ <%
2
+ @path = '/etc/monit/monit.d/monit-newrelic.conf'
3
+ %>
4
+
5
+ check process nrsysmond with pidfile /var/run/nrsysmond.pid
6
+ group newrelic-<%= Rubber.env %>
7
+ start program = "/usr/bin/env service newrelic-sysmond restart"
8
+ stop program = "/usr/bin/env service newrelic-sysmond stop"
9
+ if 5 restarts within 5 cycles then timeout
@@ -0,0 +1,5 @@
1
+ nrsysmond_license_key: 11111222223333444455555
2
+
3
+ roles:
4
+ newrelic:
5
+ packages: [newrelic-sysmond]
@@ -0,0 +1 @@
1
+ description: The newrelic server monitoring module
@@ -11,10 +11,13 @@ namespace :rubber do
11
11
  # Check if there is an nginx with the required version and passenger built in.
12
12
  if [ -x /usr/sbin/nginx ]
13
13
  then echo 'Found nginx on system'
14
- pax=$(/usr/sbin/nginx -V 2>&1 | awk '/nginx\\/#{rubber_env.nginx_version}/{a++}/passenger-#{rubber_env.passenger_version}/{b++} END {print a&&b}')
15
- if [ $pax -eq 1 ]
16
- then echo 'Nginx/Passenger version matches'
17
- exit 0
14
+ if [ $(find #{rubber_env.ruby_path} -regex .*passenger-#{rubber_env.passenger_version}.*PassengerWatchdog | wc -l) -gt 0 ]
15
+ then echo 'Found passenger-nginx-module on system'
16
+ pax=$(/usr/sbin/nginx -V 2>&1 | awk '/nginx\\/#{rubber_env.nginx_version}/{a++}/passenger-#{rubber_env.passenger_version}/{b++} END {print a&&b}')
17
+ if [ $pax -eq 1 ]
18
+ then echo 'Nginx/Passenger version matches'
19
+ exit 0
20
+ fi
18
21
  fi
19
22
  fi
20
23
  # Lets install
@@ -3,6 +3,7 @@ nginx_version: 1.2.8
3
3
  passenger_root: "#{`bash -l -c 'find #{ruby_path} -name passenger-#{passenger_version}'`.strip}"
4
4
  passenger_ruby: "#{ruby_path}/bin/ruby"
5
5
  passenger_lib: "#{passenger_root}/ext/nginx"
6
+ nginx_log_dir: /mnt/nginx/logs
6
7
  passenger_listen_port: 7000
7
8
  passenger_listen_ssl_port: 7001
8
9
  max_app_connections: 20
@@ -32,12 +32,17 @@ pidfile /var/run/redis.pid
32
32
  # If port 0 is specified Redis will not listen on a TCP socket.
33
33
  port <%= rubber_env.redis_server_port %>
34
34
 
35
- # If you want you can bind a single interface, if the bind option is not
36
- # specified all the interfaces will listen for incoming connections.
35
+ # By default Redis listens for connections from all the network interfaces
36
+ # available on the server. It is possible to listen to just one or multiple
37
+ # interfaces using the "bind" configuration directive, followed by one or
38
+ # more IP addresses.
37
39
  #
40
+ # Examples:
41
+ #
42
+ # bind 192.168.1.100 10.0.0.1
38
43
  # bind 127.0.0.1
39
44
 
40
- # Specify the path for the unix socket that will be used to listen for
45
+ # Specify the path for the Unix socket that will be used to listen for
41
46
  # incoming connections. There is no default, so Redis will not listen
42
47
  # on a unix socket when not specified.
43
48
  #
@@ -71,7 +76,7 @@ tcp-keepalive 60
71
76
  # warning (only very important / critical messages are logged)
72
77
  loglevel notice
73
78
 
74
- # Specify the log file name. Also 'stdout' can be used to force
79
+ # Specify the log file name. Also the empty string can be used to force
75
80
  # Redis to log on the standard output. Note that if you use standard
76
81
  # output for logging but daemonize, logs will be sent to /dev/null
77
82
  logfile <%= rubber_env.redis_server_log_file %>
@@ -119,16 +124,16 @@ save 60 10000
119
124
 
120
125
  # By default Redis will stop accepting writes if RDB snapshots are enabled
121
126
  # (at least one save point) and the latest background save failed.
122
- # This will make the user aware (in an hard way) that data is not persisting
127
+ # This will make the user aware (in a hard way) that data is not persisting
123
128
  # on disk properly, otherwise chances are that no one will notice and some
124
- # distater will happen.
129
+ # disaster will happen.
125
130
  #
126
131
  # If the background saving process will start working again Redis will
127
132
  # automatically allow writes again.
128
133
  #
129
134
  # However if you have setup your proper monitoring of the Redis server
130
135
  # and persistence, you may want to disable this feature so that Redis will
131
- # continue to work as usually even if there are problems with disk,
136
+ # continue to work as usual even if there are problems with disk,
132
137
  # permissions, and so forth.
133
138
  stop-writes-on-bgsave-error yes
134
139
 
@@ -207,7 +212,7 @@ slave-serve-stale-data yes
207
212
  # Note: read only slaves are not designed to be exposed to untrusted clients
208
213
  # on the internet. It's just a protection layer against misuse of the instance.
209
214
  # Still a read only slave exports by default all the administrative commands
210
- # such as CONFIG, DEBUG, and so forth. To a limited extend you can improve
215
+ # such as CONFIG, DEBUG, and so forth. To a limited extent you can improve
211
216
  # security of read only slaves using 'rename-command' to shadow all the
212
217
  # administrative / dangerous commands.
213
218
  slave-read-only yes
@@ -218,8 +223,11 @@ slave-read-only yes
218
223
  #
219
224
  # repl-ping-slave-period 10
220
225
 
221
- # The following option sets a timeout for both Bulk transfer I/O timeout and
222
- # master data or ping response timeout. The default value is 60 seconds.
226
+ # The following option sets the replication timeout for:
227
+ #
228
+ # 1) Bulk transfer I/O during SYNC, from the point of view of slave.
229
+ # 2) Master timeout from the point of view of slaves (data, pings).
230
+ # 3) Slave timeout from the point of view of masters (REPLCONF ACK pings).
223
231
  #
224
232
  # It is important to make sure that this value is greater than the value
225
233
  # specified for repl-ping-slave-period otherwise a timeout will be detected
@@ -242,13 +250,35 @@ slave-read-only yes
242
250
  # be a good idea.
243
251
  repl-disable-tcp-nodelay no
244
252
 
253
+ # Set the replication backlog size. The backlog is a buffer that accumulates
254
+ # slave data when slaves are disconnected for some time, so that when a slave
255
+ # wants to reconnect again, often a full resync is not needed, but a partial
256
+ # resync is enough, just passing the portion of data the slave missed while
257
+ # disconnected.
258
+ #
259
+ # The biggest the replication backlog, the longer the time the slave can be
260
+ # disconnected and later be able to perform a partial resynchronization.
261
+ #
262
+ # The backlog is only allocated once there is at least a slave connected.
263
+ #
264
+ # repl-backlog-size 1mb
265
+
266
+ # After a master has no longer connected slaves for some time, the backlog
267
+ # will be freed. The following option configures the amount of seconds that
268
+ # need to elapse, starting from the time the last slave disconnected, for
269
+ # the backlog buffer to be freed.
270
+ #
271
+ # A value of 0 means to never release the backlog.
272
+ #
273
+ # repl-backlog-ttl 3600
274
+
245
275
  # The slave priority is an integer number published by Redis in the INFO output.
246
276
  # It is used by Redis Sentinel in order to select a slave to promote into a
247
277
  # master if the master is no longer working correctly.
248
278
  #
249
279
  # A slave with a low priority number is considered better for promotion, so
250
280
  # for instance if there are three slaves with priority 10, 100, 25 Sentinel will
251
- # pick the one wtih priority 10, that is the lowest.
281
+ # pick the one with priority 10, that is the lowest.
252
282
  #
253
283
  # However a special priority of 0 marks the slave as not able to perform the
254
284
  # role of master, so a slave with priority of 0 will never be selected by
@@ -256,6 +286,28 @@ repl-disable-tcp-nodelay no
256
286
  #
257
287
  # By default the priority is 100.
258
288
  slave-priority 100
289
+
290
+ # It is possible for a master to stop accepting writes if there are less than
291
+ # N slaves connected, having a lag less or equal than M seconds.
292
+ #
293
+ # The N slaves need to be in "online" state.
294
+ #
295
+ # The lag in seconds, that must be <= the specified value, is calculated from
296
+ # the last ping received from the slave, that is usually sent every second.
297
+ #
298
+ # This option does not GUARANTEES that N replicas will accept the write, but
299
+ # will limit the window of exposure for lost writes in case not enough slaves
300
+ # are available, to the specified number of seconds.
301
+ #
302
+ # For example to require at least 3 slaves with a lag <= 10 seconds use:
303
+ #
304
+ # min-slaves-to-write 3
305
+ # min-slaves-max-lag 10
306
+ #
307
+ # Setting one or the other to 0 disables the feature.
308
+ #
309
+ # By default min-slaves-to-write is set to 0 (feature disabled) and
310
+ # min-slaves-max-lag is set to 10.
259
311
  <%- end %>
260
312
 
261
313
  ################################## SECURITY ###################################
@@ -307,7 +359,7 @@ slave-priority 100
307
359
 
308
360
  # Don't use more memory than the specified amount of bytes.
309
361
  # When the memory limit is reached Redis will try to remove keys
310
- # accordingly to the eviction policy selected (see maxmemmory-policy).
362
+ # according to the eviction policy selected (see maxmemory-policy).
311
363
  #
312
364
  # If Redis can't remove keys according to the policy, or if the policy is
313
365
  # set to 'noeviction', Redis will start to reply with errors to commands
@@ -315,7 +367,7 @@ slave-priority 100
315
367
  # to reply to read-only commands like GET.
316
368
  #
317
369
  # This option is usually useful when using Redis as an LRU cache, or to set
318
- # an hard memory limit for an instance (using the 'noeviction' policy).
370
+ # a hard memory limit for an instance (using the 'noeviction' policy).
319
371
  #
320
372
  # WARNING: If you have slaves attached to an instance with maxmemory on,
321
373
  # the size of the output buffers needed to feed the slaves are subtracted
@@ -495,6 +547,52 @@ slowlog-log-slower-than 10000
495
547
  # You can reclaim memory used by the slow log with SLOWLOG RESET.
496
548
  slowlog-max-len 1024
497
549
 
550
+ ############################# Event notification ##############################
551
+
552
+ # Redis can notify Pub/Sub clients about events happening in the key space.
553
+ # This feature is documented at http://redis.io/topics/keyspace-events
554
+ #
555
+ # For instance if keyspace events notification is enabled, and a client
556
+ # performs a DEL operation on key "foo" stored in the Database 0, two
557
+ # messages will be published via Pub/Sub:
558
+ #
559
+ # PUBLISH __keyspace@0__:foo del
560
+ # PUBLISH __keyevent@0__:del foo
561
+ #
562
+ # It is possible to select the events that Redis will notify among a set
563
+ # of classes. Every class is identified by a single character:
564
+ #
565
+ # K Keyspace events, published with __keyspace@<db>__ prefix.
566
+ # E Keyevent events, published with __keyevent@<db>__ prefix.
567
+ # g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...
568
+ # $ String commands
569
+ # l List commands
570
+ # s Set commands
571
+ # h Hash commands
572
+ # z Sorted set commands
573
+ # x Expired events (events generated every time a key expires)
574
+ # e Evicted events (events generated when a key is evicted for maxmemory)
575
+ # A Alias for g$lshzxe, so that the "AKE" string means all the events.
576
+ #
577
+ # The "notify-keyspace-events" takes as argument a string that is composed
578
+ # by zero or multiple characters. The empty string means that notifications
579
+ # are disabled at all.
580
+ #
581
+ # Example: to enable list and generic events, from the point of view of the
582
+ # event name, use:
583
+ #
584
+ # notify-keyspace-events Elg
585
+ #
586
+ # Example 2: to get the stream of the expired keys subscribing to channel
587
+ # name __keyevent@0__:expired use:
588
+ #
589
+ # notify-keyspace-events Ex
590
+ #
591
+ # By default all notifications are disabled because most users don't need
592
+ # this feature and the feature has some overhead. Note that if you don't
593
+ # specify at least one of K or E, no events will be delivered.
594
+ notify-keyspace-events ""
595
+
498
596
  ############################### ADVANCED CONFIG ###############################
499
597
 
500
598
  # Hashes are encoded using a memory efficient data structure when they have a
@@ -525,7 +623,7 @@ zset-max-ziplist-value 64
525
623
  # Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in
526
624
  # order to help rehashing the main Redis hash table (the one mapping top-level
527
625
  # keys to values). The hash table implementation Redis uses (see dict.c)
528
- # performs a lazy rehashing: the more operation you run into an hash table
626
+ # performs a lazy rehashing: the more operation you run into a hash table
529
627
  # that is rehashing, the more rehashing "steps" are performed, so if the
530
628
  # server is idle the rehashing is never complete and some more memory is used
531
629
  # by the hash table.
@@ -580,10 +678,10 @@ client-output-buffer-limit slave 256mb 64mb 60
580
678
  client-output-buffer-limit pubsub 32mb 8mb 60
581
679
 
582
680
  # Redis calls an internal function to perform many background tasks, like
583
- # closing connections of clients in timeot, purging expired keys that are
681
+ # closing connections of clients in timeout, purging expired keys that are
584
682
  # never requested, and so forth.
585
683
  #
586
- # Not all tasks are perforemd with the same frequency, but Redis checks for
684
+ # Not all tasks are performed with the same frequency, but Redis checks for
587
685
  # tasks to perform accordingly to the specified "hz" value.
588
686
  #
589
687
  # By default "hz" is set to 10. Raising the value will use more CPU when
@@ -596,6 +694,12 @@ client-output-buffer-limit pubsub 32mb 8mb 60
596
694
  # 100 only in environments where very low latency is required.
597
695
  hz 10
598
696
 
697
+ # When a child rewrites the AOF file, if the following option is enabled
698
+ # the file will be fsync-ed every 32 MB of data generated. This is useful
699
+ # in order to commit the file to the disk more incrementally and avoid
700
+ # big latency spikes.
701
+ aof-rewrite-incremental-fsync yes
702
+
599
703
  ################################## INCLUDES ###################################
600
704
 
601
705
  # Include one or more other config files here. This is useful if you