rubber 2.6.5 → 2.7.0

Sign up to get free protection for your applications and to get access to all the features.
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