capistrano-cluster 0.0.10

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 (94) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +38 -0
  6. data/Rakefile +1 -0
  7. data/capistrano-cluster.gemspec +29 -0
  8. data/files/Procfile.erb +2 -0
  9. data/files/apt.conf.d/10periodic +4 -0
  10. data/files/apt.conf.d/50unattended-upgrades +4 -0
  11. data/files/database.yml.erb +11 -0
  12. data/files/etc/hosts.erb +9 -0
  13. data/files/firewall.erb +8 -0
  14. data/files/issue.net +11 -0
  15. data/files/lb-sysctl.conf +24 -0
  16. data/files/nginx/application.conf.erb +67 -0
  17. data/files/nginx/lb-application.conf.erb +91 -0
  18. data/files/nginx/lb-nginx.conf.erb +84 -0
  19. data/files/nginx/nginx.conf.erb +80 -0
  20. data/files/pg_hba.conf.erb +10 -0
  21. data/files/postgresql.conf +19 -0
  22. data/files/redis/redis.conf +597 -0
  23. data/files/service.erb +67 -0
  24. data/files/solr/conf/lang/contractions_ca.txt +8 -0
  25. data/files/solr/conf/lang/contractions_fr.txt +9 -0
  26. data/files/solr/conf/lang/contractions_ga.txt +5 -0
  27. data/files/solr/conf/lang/contractions_it.txt +23 -0
  28. data/files/solr/conf/lang/hyphenations_ga.txt +5 -0
  29. data/files/solr/conf/lang/stemdict_nl.txt +6 -0
  30. data/files/solr/conf/lang/stoptags_ja.txt +420 -0
  31. data/files/solr/conf/lang/stopwords_ar.txt +125 -0
  32. data/files/solr/conf/lang/stopwords_bg.txt +193 -0
  33. data/files/solr/conf/lang/stopwords_ca.txt +220 -0
  34. data/files/solr/conf/lang/stopwords_cz.txt +172 -0
  35. data/files/solr/conf/lang/stopwords_da.txt +108 -0
  36. data/files/solr/conf/lang/stopwords_de.txt +292 -0
  37. data/files/solr/conf/lang/stopwords_el.txt +78 -0
  38. data/files/solr/conf/lang/stopwords_en.txt +54 -0
  39. data/files/solr/conf/lang/stopwords_es.txt +354 -0
  40. data/files/solr/conf/lang/stopwords_eu.txt +99 -0
  41. data/files/solr/conf/lang/stopwords_fa.txt +313 -0
  42. data/files/solr/conf/lang/stopwords_fi.txt +95 -0
  43. data/files/solr/conf/lang/stopwords_fr.txt +183 -0
  44. data/files/solr/conf/lang/stopwords_ga.txt +110 -0
  45. data/files/solr/conf/lang/stopwords_gl.txt +161 -0
  46. data/files/solr/conf/lang/stopwords_hi.txt +235 -0
  47. data/files/solr/conf/lang/stopwords_hu.txt +209 -0
  48. data/files/solr/conf/lang/stopwords_hy.txt +46 -0
  49. data/files/solr/conf/lang/stopwords_id.txt +359 -0
  50. data/files/solr/conf/lang/stopwords_it.txt +301 -0
  51. data/files/solr/conf/lang/stopwords_ja.txt +127 -0
  52. data/files/solr/conf/lang/stopwords_lv.txt +172 -0
  53. data/files/solr/conf/lang/stopwords_nl.txt +117 -0
  54. data/files/solr/conf/lang/stopwords_no.txt +192 -0
  55. data/files/solr/conf/lang/stopwords_pt.txt +251 -0
  56. data/files/solr/conf/lang/stopwords_ro.txt +233 -0
  57. data/files/solr/conf/lang/stopwords_ru.txt +241 -0
  58. data/files/solr/conf/lang/stopwords_sv.txt +131 -0
  59. data/files/solr/conf/lang/stopwords_th.txt +119 -0
  60. data/files/solr/conf/lang/stopwords_tr.txt +212 -0
  61. data/files/solr/conf/lang/userdict_ja.txt +29 -0
  62. data/files/solr/conf/mapping-FoldToASCII.txt +3813 -0
  63. data/files/solr/conf/schema.xml +111 -0
  64. data/files/solr/conf/solrconfig.xml +59 -0
  65. data/files/solr/conf/stopwords.txt +14 -0
  66. data/files/solr/solr.xml +45 -0
  67. data/files/ssh/authorized_keys.erb +4 -0
  68. data/files/ssh/config +3 -0
  69. data/files/sshd_config +40 -0
  70. data/files/tmux.conf +136 -0
  71. data/files/ufw +44 -0
  72. data/files/unicorn.rb.erb +63 -0
  73. data/lib/capistrano/cluster/application.rb +75 -0
  74. data/lib/capistrano/cluster/core_ext/object.rb +17 -0
  75. data/lib/capistrano/cluster/files.rb +57 -0
  76. data/lib/capistrano/cluster/packages.rb +62 -0
  77. data/lib/capistrano/cluster/paths.rb +18 -0
  78. data/lib/capistrano/cluster/service.rb +70 -0
  79. data/lib/capistrano/cluster/version.rb +5 -0
  80. data/lib/capistrano/cluster.rb +35 -0
  81. data/tasks/deploy/application.rake +48 -0
  82. data/tasks/deploy.rake +71 -0
  83. data/tasks/roles/app.rake +71 -0
  84. data/tasks/roles/cache.rake +16 -0
  85. data/tasks/roles/db.rake +66 -0
  86. data/tasks/roles/indexer.rake +132 -0
  87. data/tasks/roles/proxy.rake +59 -0
  88. data/tasks/roles/rabbit.rake +52 -0
  89. data/tasks/roles/resque.rake +96 -0
  90. data/tasks/roles/sidekiq.rake +42 -0
  91. data/tasks/roles/web.rake +64 -0
  92. data/tasks/setup/firewall.rake +53 -0
  93. data/tasks/setup.rake +96 -0
  94. metadata +221 -0
@@ -0,0 +1,59 @@
1
+ set :proxy_files, fetch(:proxy_files,{})
2
+ namespace :setup do
3
+
4
+ task :proxy do
5
+
6
+ on roles(:proxy) do
7
+
8
+ install "nginx"
9
+
10
+ upload_as :root, file("lb-sysctl.conf"), "/etc/sysctl.d/20-web.conf"
11
+ sudo :sysctl, "-p", "/etc/sysctl.d/20-web.conf"
12
+ sudo :mkdir, "-p", "/etc/nginx/servers"
13
+ upload_as :root, file("nginx/lb-nginx.conf", user: fetch(:user)), "/etc/nginx/nginx.conf", mode: 644
14
+
15
+ sudo :rm, "-f", *%w[fastcgi_params proxy_params scgi_params uwsgi_params].map { |file| file.prepend("/etc/nginx/") }
16
+ sudo :rm, "-rf", *%w[sites-available sites-enabled conf.d].map { |file| file.prepend("/etc/nginx/") }
17
+
18
+ sudo "bash -c 'nginx -s reload || service nginx restart'"
19
+
20
+ end
21
+
22
+ end
23
+
24
+ end
25
+
26
+ after "setup:system", "setup:proxy"
27
+
28
+ namespace :deploy do
29
+
30
+ namespace :application do
31
+
32
+ task :proxy do
33
+
34
+ on roles(:proxy) do
35
+
36
+ shared_path = Pathname.new("/etc/nginx/servers/#{fetch(:application)}-#{fetch(:framework_env)}")
37
+
38
+ sudo :mkdir, '-p', shared_path
39
+ sudo :chown, "-R", fetch(:user), shared_path
40
+
41
+ if ssl_certificate = fetch(:ssl_certificate)
42
+ upload_as :root, StringIO.new(ssl_certificate), shared_path.join("ssl.pem")
43
+ end
44
+
45
+ fetch(:proxy_files).each_pair do |file, remote_file|
46
+ upload_as :root, file(file), shared_path.join(remote_file)
47
+ end
48
+
49
+ upload_as :root, file("nginx/lb-application.conf", ssl: ssl_certificate), shared_path.join("nginx.conf")
50
+
51
+ sudo "bash -c 'nginx -s reload || service nginx restart'"
52
+
53
+ end
54
+
55
+ end
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,52 @@
1
+
2
+ namespace :setup do
3
+
4
+ before :package_sources, :"rabbitmq:sources"
5
+
6
+
7
+ namespace :rabbitmq do
8
+ task :sources do
9
+
10
+ on roles(:rabbitmq) do
11
+ unless test "[ -f /etc/apt/sources.list.d/rabbitmq.list ]"
12
+ execute %q[wget --quiet -O - http://www.rabbitmq.com/rabbitmq-signing-key-public.asc | sudo apt-key add -]
13
+ upload_as :root, StringIO.new("deb http://www.rabbitmq.com/debian/ testing main"), "/etc/apt/sources.list.d/rabbitmq.list"
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+ task :rabbitmq do
21
+
22
+ on roles(:rabbitmq) do
23
+ install "rabbitmq-server"
24
+ upload_as :rabbitmq, StringIO.new("[rabbitmq_management,rabbitmq_management_visualiser,rabbitmq_stomp,rabbitmq_amqp1_0,rabbitmq_mqtt]."), "/etc/rabbitmq/enabled_plugins"
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ after "setup:system", "setup:rabbitmq"
32
+
33
+
34
+ namespace :deploy do
35
+ task :rabbitmq do
36
+ end
37
+ end
38
+
39
+ namespace :firewall do
40
+ task :rabbitmq do
41
+ on roles(:rabbitmq) do |server|
42
+ sudo :ufw, :allow, :in, :epmd
43
+ sudo :ufw, :allow, :in, :amqp
44
+ sudo :ufw, :allow, :in, :'25672'
45
+ sudo :ufw, :allow, :in, :'15672'
46
+ end
47
+ end
48
+ end
49
+
50
+
51
+ before "deploy:publishing", "deploy:rabbitmq"
52
+ after "setup:firewall", "firewall:rabbitmq"
@@ -0,0 +1,96 @@
1
+
2
+ namespace :deploy do
3
+ before :starting, "deploy:resque:deployment_hooks"
4
+
5
+ namespace :resque do
6
+
7
+ task :deployment_hooks do
8
+ after 'deploy:starting', 'deploy:resque:stop'
9
+ after 'deploy:updated', 'deploy:resque:update'
10
+ after 'deploy:reverted', 'deploy:resque:stop'
11
+ after 'deploy:published', 'deploy:resque:start'
12
+ end
13
+
14
+ task :stop do
15
+ on roles(:resque) do
16
+ service = [fetch(:application), fetch(:stage), 'resque', '*'].join("-")
17
+ execute :find, "/etc/init.d", "-type f", "-name #{service}", "-exec {} stop \\;"
18
+ end
19
+ on primary :resque_scheduler do
20
+ execute "/etc/init.d/#{fetch(:application)}-scheduler stop || true"
21
+ end
22
+
23
+ end
24
+
25
+
26
+ task update: :stop do
27
+ on roles(:resque) do |host|
28
+
29
+ match = [fetch(:application), fetch(:stage), 'resque', '*'].join("-")
30
+ sudo :find, "/etc/init.d", "-type f", "-name '#{match}'", "-exec rm -f {} \\;"
31
+
32
+ if test "[ -f /etc/init/#{fetch(:application)}-worker.conf ]"
33
+ sudo "stop '#{fetch(:application)}-worker' || true"
34
+ sudo "rm -f /etc/init/#{fetch(:application)}-worker*.conf"
35
+ end
36
+
37
+ host.properties.workers.to_i.times do |worker_id|
38
+
39
+ service_name = [fetch(:application), fetch(:stage), 'resque', worker_id].join("-")
40
+ service service_name do
41
+ user fetch(:user)
42
+ working_dir release_path
43
+
44
+ pid_file shared_path.join("tmp/pids/resque-#{worker_id}.pid")
45
+ log_file shared_path.join("log/resque-#{worker_id}.log")
46
+
47
+ start "bundle exec rake resque:work RAILS_ENV=#{fetch(:framework_env)} 'QUEUE=*' PIDFILE=#{pid_file} INTERVAL=#{fetch(:resque_interval, 0.1)} LOGFILE=#{log_file}"
48
+ stop "kill -QUIT $(cat '#{pid_file}')"
49
+
50
+ end
51
+ end
52
+
53
+ end
54
+
55
+ on primary :resque_scheduler do
56
+
57
+ service "#{fetch(:application)}-scheduler" do
58
+ user fetch(:user)
59
+ working_dir release_path
60
+
61
+ pid_file shared_path.join("tmp/pids/resque-scheduler.pid")
62
+ log_file shared_path.join("log/resque-scheduler.log")
63
+
64
+ start "bundle exec rake environment resque:scheduler RAILS_ENV=#{fetch(:framework_env)} 'QUEUE=*' PIDFILE=#{pid_file} RESQUE_SCHEDULER_INTERVAL=#{fetch(:resque_interval, 0.1)} LOGFILE=#{log_file}"
65
+ stop "kill -QUIT $(cat '#{pid_file}')"
66
+ end
67
+
68
+ end
69
+ end
70
+
71
+
72
+ task :start do
73
+ on roles(:resque) do
74
+
75
+ host.properties.workers.to_i.times do |worker_id|
76
+ service_name = [fetch(:application), fetch(:stage), 'resque', worker_id].join("-")
77
+ sudo "/etc/init.d/#{service_name}", :start
78
+ end
79
+ end
80
+
81
+ on primary :resque_scheduler do
82
+ if test "[ -f '/etc/init.d/#{fetch(:application)}-scheduler' ]"
83
+ sudo "/etc/init.d/#{fetch(:application)}-scheduler", :start
84
+ end
85
+ end
86
+
87
+ end
88
+
89
+ task restart: [:stop, :start]
90
+
91
+
92
+ end
93
+
94
+ end
95
+
96
+
@@ -0,0 +1,42 @@
1
+ namespace :deploy do
2
+
3
+ before :starting, "deploy:sidekiq:deployment_hooks"
4
+
5
+ namespace :sidekiq do
6
+ task :deployment_hooks do
7
+ after 'deploy:starting', 'deploy:sidekiq:stop'
8
+ after 'deploy:updated', 'deploy:sidekiq:update'
9
+ after 'deploy:reverted', 'deploy:sidekiq:stop'
10
+ after 'deploy:published', 'deploy:sidekiq:start'
11
+ end
12
+
13
+ task :update do
14
+ on roles(:sidekiq) do
15
+ service "#{fetch(:application)}-sidekiq" do
16
+ user fetch(:user)
17
+ working_dir current_path
18
+ start "bundle exec sidekiq -e '#{fetch(:framework_env)}' -C '#{current_path}/config/sidekiq.yml' -L '#{current_path}/log/sidekiq.log' -P '#{current_path}/tmp/pids/sidekiq.pid' #{fetch(:sidekiq_options)}"
19
+ stop "bundle exec sidekiqctl stop '#{current_path}/tmp/pids/sidekiq.pid' 10"
20
+ end
21
+ end
22
+ end
23
+
24
+
25
+ task :start do
26
+ on roles(:sidekiq) do
27
+ sudo "/etc/init.d/#{fetch(:application)}-sidekiq" , :start
28
+ end
29
+ end
30
+
31
+ task :stop do
32
+ on roles(:sidekiq) do
33
+ sudo "/etc/init.d/#{fetch(:application)}-sidekiq stop || true"
34
+ end
35
+ end
36
+
37
+ task restart: [:stop, :start]
38
+
39
+ end
40
+
41
+ end
42
+
@@ -0,0 +1,64 @@
1
+ namespace :setup do
2
+
3
+ task :web do
4
+
5
+ on roles(:web) do
6
+ install %w[nginx]
7
+ upload_as :root, file("lb-sysctl.conf"), "/etc/sysctl.d/20-web.conf"
8
+ sudo :sysctl, "-p", "/etc/sysctl.d/20-web.conf"
9
+
10
+ sudo :mkdir, "-p", "/etc/nginx/servers"
11
+ upload_as :root, file("nginx/nginx.conf", user: fetch(:user)), "/etc/nginx/nginx.conf"
12
+ sudo :rm, "-f", *%w[fastcgi_params proxy_params scgi_params uwsgi_params].map { |file| file.prepend("/etc/nginx/") }
13
+ sudo :rm, "-rf", *%w[sites-available sites-enabled conf.d].map { |file| file.prepend("/etc/nginx/") }
14
+ sudo "nginx -s reload || sudo service nginx restart"
15
+ end
16
+
17
+ end
18
+
19
+ end
20
+
21
+ after "setup:customizations", "setup:web"
22
+
23
+ namespace :deploy do
24
+
25
+ namespace :application do
26
+
27
+ task :web do
28
+
29
+ on roles(:web) do |host|
30
+
31
+ upload! file("unicorn.rb", instances: host.properties.instances ), shared_path.join("config/unicorn.rb")
32
+ upload! file("nginx/application.conf"), shared_path.join("config/nginx.conf")
33
+
34
+ service "#{fetch(:application)}-web" do
35
+ user fetch(:user)
36
+ working_dir current_path
37
+ start "bundle exec unicorn_rails -E '#{fetch(:framework_env)}' -l '#{shared_path.join("tmp/sockets/nginx.sock")}' -c '#{shared_path.join("config/unicorn.rb")}'"
38
+ stop "kill -TERM $(cat '#{shared_path.join("tmp/pids/unicorn.pid")}')"
39
+ reload "kill -USR2 $(cat '#{shared_path.join("tmp/pids/unicorn.pid")}') || start "
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+
46
+
47
+ task :reload do
48
+ on roles(:web) do
49
+ sudo "nginx -s reload || sudo service nginx restart"
50
+ end
51
+ end
52
+
53
+
54
+
55
+ end
56
+
57
+ end
58
+
59
+
60
+
61
+ namespace :deploy do
62
+ after :restart, "application:reload"
63
+ end
64
+
@@ -0,0 +1,53 @@
1
+ namespace :setup do
2
+
3
+ task :firewall do
4
+
5
+ def ufw(*rule)
6
+ sudo :ufw, *rule
7
+ end
8
+
9
+ on roles(:all) do
10
+ upload_as :root, file("ufw"), "/etc/default/ufw"
11
+ ufw :allow, "in ssh"
12
+ end
13
+
14
+ on roles(:db) do
15
+ roles(:app).each do |server|
16
+ ufw :allow, "proto tcp from #{server.hostname} to any port postgresql"
17
+ end
18
+ end
19
+
20
+ on roles(:indexer) do
21
+ roles(:app).each do |server|
22
+ ufw :allow, "proto tcp from #{server.hostname} to any port 8983"
23
+ end
24
+ end
25
+
26
+ on roles(:cache) do
27
+ roles(:app).each do |server|
28
+ ufw :allow, "proto tcp from #{server.hostname} to any port 6379"
29
+ end
30
+ end
31
+
32
+ on roles(:web) do
33
+ roles(:proxy).each do |server|
34
+ ufw :allow, "proto tcp from #{server.hostname} to any port http"
35
+ end
36
+ end
37
+
38
+
39
+ on roles(:proxy).each do |server|
40
+ ufw :allow, "in http"
41
+ ufw :allow, "in https"
42
+ end
43
+
44
+ on roles(:all) do
45
+ execute :yes, "| sudo ufw enable"
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+
52
+
53
+ before "setup:finished", "setup:firewall"
data/tasks/setup.rake ADDED
@@ -0,0 +1,96 @@
1
+
2
+ set :default_packages, %w{tmux htop vim-nox software-properties-common curl wget unattended-upgrades bash-completion git lsof ufw ngrep}
3
+ set :packages, fetch(:packages, [])
4
+
5
+ desc "Bootstraps the servers"
6
+ task prepare: %w{setup:system setup:finished}
7
+
8
+
9
+ namespace :setup do
10
+
11
+ task system: [:hostname, :swap, :users, :package_sources, :packages, :customizations]
12
+
13
+ task :users do
14
+ on roles(:all) do |host|
15
+
16
+ login_as(:root, on: host) do
17
+ user = fetch(:user)
18
+
19
+ unless test "id -u #{user}"
20
+ execute :useradd, "--home", "/home/#{user}", "-m", "--shell", "/bin/bash", user
21
+ execute :mkdir, "-p", "#{home_path}/.ssh"
22
+ execute :chmod, "0700", "#{home_path}/.ssh"
23
+ execute :chown, "-R", "#{user}:#{user}", "#{home_path}"
24
+ upload! StringIO.new("#{user} ALL=NOPASSWD:ALL"), "/etc/sudoers.d/#{user}"
25
+ end
26
+
27
+ upload! file('ssh/authorized_keys', keys: fetch(:deploy_keys,[])), "#{home_path}/.ssh/authorized_keys"
28
+ upload! file('ssh/config', keys: fetch(:deploy_keys,[])), "#{home_path}/.ssh/config"
29
+ execute :chmod, "0600", "#{home_path}/.ssh/authorized_keys #{home_path}/.ssh/config"
30
+ execute :chown, "#{user}:#{user}", "#{home_path}/.ssh/authorized_keys #{home_path}/.ssh/config"
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ task :finished
39
+
40
+ task :hostname do
41
+
42
+ on roles(:all) do |host|
43
+ login_as :root, on: host do
44
+ unless (hostname = capture(:hostname).strip).empty?
45
+ upload_as :root, file("etc/hosts", hostname: hostname), "/etc/hosts"
46
+ end
47
+ end
48
+ end
49
+
50
+ end
51
+
52
+ task :packages do
53
+
54
+ on roles(:all) do
55
+ upload_as :root, file("apt.conf.d/10periodic"), "/etc/apt/apt.conf.d/10periodic"
56
+ upload_as :root, file("apt.conf.d/50unattended-upgrades"), "/etc/apt/apt.conf.d/50unattended-upgrades"
57
+ packages = fetch(:default_packages,[]) + fetch(:packages,[])
58
+ install *packages unless packages.empty?
59
+ end
60
+
61
+ end
62
+
63
+ task :customizations do
64
+ on roles(:all) do
65
+ upload_as :root, file("tmux.conf"), "/etc/tmux.conf"
66
+ sudo :chmod, "0644", "/etc/tmux.conf"
67
+ upload_as :root, file("sshd_config"), "/etc/ssh/sshd_config"
68
+ upload_as :root, file("issue.net"), "/etc/issue.net"
69
+ sudo :service, 'ssh', 'reload'
70
+ end
71
+ end
72
+
73
+ task :swap do
74
+ on roles(:swap) do
75
+ if test "[ ! -f /swap ]"
76
+ sudo "dd if=/dev/zero of=/swap count=$(cat /proc/meminfo | head -1 | awk '{ print $2*2 }') bs=1KB"
77
+ sudo "mkswap /swap"
78
+ sudo "swapon /swap"
79
+ sudo "echo '/swap none swap sw 0 0' >> /etc/fstab "
80
+ end
81
+ end
82
+ end
83
+
84
+
85
+ task :package_sources do
86
+ on roles(:all) do
87
+ unless test "[ -f /etc/apt/sources.list.d/pgdg.list ]"
88
+ execute %q[wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -]
89
+ sudo %q[echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -c | awk '{print $2}'`-pgdg main" >/etc/apt/sources.list.d/pgdg.list]
90
+ end
91
+ end
92
+ end
93
+
94
+ end
95
+
96
+
metadata ADDED
@@ -0,0 +1,221 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capistrano-cluster
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.10
5
+ platform: ruby
6
+ authors:
7
+ - Vlad Verestiuc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: capistrano
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: capistrano-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: capistrano-bundler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: nokogiri
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Setup tasks and role additions for capistrano
98
+ email:
99
+ - verestiuc.vlad@gmail.com
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - ".gitignore"
105
+ - Gemfile
106
+ - LICENSE.txt
107
+ - README.md
108
+ - Rakefile
109
+ - capistrano-cluster.gemspec
110
+ - files/Procfile.erb
111
+ - files/apt.conf.d/10periodic
112
+ - files/apt.conf.d/50unattended-upgrades
113
+ - files/database.yml.erb
114
+ - files/etc/hosts.erb
115
+ - files/firewall.erb
116
+ - files/issue.net
117
+ - files/lb-sysctl.conf
118
+ - files/nginx/application.conf.erb
119
+ - files/nginx/lb-application.conf.erb
120
+ - files/nginx/lb-nginx.conf.erb
121
+ - files/nginx/nginx.conf.erb
122
+ - files/pg_hba.conf.erb
123
+ - files/postgresql.conf
124
+ - files/redis/redis.conf
125
+ - files/service.erb
126
+ - files/solr/conf/lang/contractions_ca.txt
127
+ - files/solr/conf/lang/contractions_fr.txt
128
+ - files/solr/conf/lang/contractions_ga.txt
129
+ - files/solr/conf/lang/contractions_it.txt
130
+ - files/solr/conf/lang/hyphenations_ga.txt
131
+ - files/solr/conf/lang/stemdict_nl.txt
132
+ - files/solr/conf/lang/stoptags_ja.txt
133
+ - files/solr/conf/lang/stopwords_ar.txt
134
+ - files/solr/conf/lang/stopwords_bg.txt
135
+ - files/solr/conf/lang/stopwords_ca.txt
136
+ - files/solr/conf/lang/stopwords_cz.txt
137
+ - files/solr/conf/lang/stopwords_da.txt
138
+ - files/solr/conf/lang/stopwords_de.txt
139
+ - files/solr/conf/lang/stopwords_el.txt
140
+ - files/solr/conf/lang/stopwords_en.txt
141
+ - files/solr/conf/lang/stopwords_es.txt
142
+ - files/solr/conf/lang/stopwords_eu.txt
143
+ - files/solr/conf/lang/stopwords_fa.txt
144
+ - files/solr/conf/lang/stopwords_fi.txt
145
+ - files/solr/conf/lang/stopwords_fr.txt
146
+ - files/solr/conf/lang/stopwords_ga.txt
147
+ - files/solr/conf/lang/stopwords_gl.txt
148
+ - files/solr/conf/lang/stopwords_hi.txt
149
+ - files/solr/conf/lang/stopwords_hu.txt
150
+ - files/solr/conf/lang/stopwords_hy.txt
151
+ - files/solr/conf/lang/stopwords_id.txt
152
+ - files/solr/conf/lang/stopwords_it.txt
153
+ - files/solr/conf/lang/stopwords_ja.txt
154
+ - files/solr/conf/lang/stopwords_lv.txt
155
+ - files/solr/conf/lang/stopwords_nl.txt
156
+ - files/solr/conf/lang/stopwords_no.txt
157
+ - files/solr/conf/lang/stopwords_pt.txt
158
+ - files/solr/conf/lang/stopwords_ro.txt
159
+ - files/solr/conf/lang/stopwords_ru.txt
160
+ - files/solr/conf/lang/stopwords_sv.txt
161
+ - files/solr/conf/lang/stopwords_th.txt
162
+ - files/solr/conf/lang/stopwords_tr.txt
163
+ - files/solr/conf/lang/userdict_ja.txt
164
+ - files/solr/conf/mapping-FoldToASCII.txt
165
+ - files/solr/conf/schema.xml
166
+ - files/solr/conf/solrconfig.xml
167
+ - files/solr/conf/stopwords.txt
168
+ - files/solr/solr.xml
169
+ - files/ssh/authorized_keys.erb
170
+ - files/ssh/config
171
+ - files/sshd_config
172
+ - files/tmux.conf
173
+ - files/ufw
174
+ - files/unicorn.rb.erb
175
+ - lib/capistrano/cluster.rb
176
+ - lib/capistrano/cluster/application.rb
177
+ - lib/capistrano/cluster/core_ext/object.rb
178
+ - lib/capistrano/cluster/files.rb
179
+ - lib/capistrano/cluster/packages.rb
180
+ - lib/capistrano/cluster/paths.rb
181
+ - lib/capistrano/cluster/service.rb
182
+ - lib/capistrano/cluster/version.rb
183
+ - tasks/deploy.rake
184
+ - tasks/deploy/application.rake
185
+ - tasks/roles/app.rake
186
+ - tasks/roles/cache.rake
187
+ - tasks/roles/db.rake
188
+ - tasks/roles/indexer.rake
189
+ - tasks/roles/proxy.rake
190
+ - tasks/roles/rabbit.rake
191
+ - tasks/roles/resque.rake
192
+ - tasks/roles/sidekiq.rake
193
+ - tasks/roles/web.rake
194
+ - tasks/setup.rake
195
+ - tasks/setup/firewall.rake
196
+ homepage: ''
197
+ licenses:
198
+ - MIT
199
+ metadata: {}
200
+ post_install_message:
201
+ rdoc_options: []
202
+ require_paths:
203
+ - lib
204
+ required_ruby_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ requirements: []
215
+ rubyforge_project:
216
+ rubygems_version: 2.2.2
217
+ signing_key:
218
+ specification_version: 4
219
+ summary: Environment setup automation.
220
+ test_files: []
221
+ has_rdoc: