recipiez 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/recipes/apache.rb +35 -31
- data/recipes/chef.rb +11 -7
- data/recipes/deployment_recipiez.rb +37 -33
- data/recipes/logrotate.rb +12 -8
- data/recipes/monit.rb +49 -45
- data/recipes/nginx.rb +31 -29
- data/recipes/thin.rb +38 -35
- data/recipes/tolk.rb +16 -12
- data/recipiez.gemspec +1 -1
- metadata +1 -1
data/recipes/apache.rb
CHANGED
@@ -1,41 +1,45 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
Capistrano::Configuration.instance(true).load do
|
2
|
+
|
3
|
+
namespace :apache do
|
4
|
+
|
5
|
+
desc "Setup passenger vhost"
|
6
|
+
task :passenger_vhost do
|
7
|
+
logger.info "generating .conf file"
|
8
|
+
logger.info "placing #{application}.conf on remote server"
|
9
|
+
apache_conf = "/etc/apache2/sites-available/#{application}"
|
10
|
+
put render("passenger_vhost", binding), "#{application}.conf"
|
11
|
+
sudo "mv #{application}.conf #{apache_conf}"
|
12
|
+
sudo "a2ensite #{application}"
|
13
|
+
sudo "/etc/init.d/apache2 reload"
|
14
|
+
end
|
13
15
|
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
+
desc "PHP Vhost Setup"
|
18
|
+
task :php_vhost do
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
unless defined? apache_port
|
21
|
+
set :apache_port, '80'
|
22
|
+
end
|
23
|
+
|
24
|
+
logger.info "generating .conf file"
|
25
|
+
logger.info "placing #{application}.conf on remote server"
|
26
|
+
apache_conf = "/etc/apache2/sites-available/#{application}"
|
27
|
+
put render("php_vhost", binding), "#{application}.conf"
|
28
|
+
sudo "mv #{application}.conf #{apache_conf}"
|
29
|
+
sudo "a2ensite #{application}"
|
30
|
+
sudo "/etc/init.d/apache2 reload"
|
20
31
|
end
|
21
32
|
|
22
|
-
logger.info "generating .conf file"
|
23
|
-
logger.info "placing #{application}.conf on remote server"
|
24
|
-
apache_conf = "/etc/apache2/sites-available/#{application}"
|
25
|
-
put render("php_vhost", binding), "#{application}.conf"
|
26
|
-
sudo "mv #{application}.conf #{apache_conf}"
|
27
|
-
sudo "a2ensite #{application}"
|
28
|
-
sudo "/etc/init.d/apache2 reload"
|
29
|
-
end
|
30
33
|
|
34
|
+
desc "enable php"
|
35
|
+
task :enable_php do
|
36
|
+
put render("php_handler", binding), "phphandler.conf"
|
37
|
+
apache_handler = "/etc/apache2/conf.d/phphandler"
|
38
|
+
sudo "mv phphandler.conf #{apache_handler}"
|
39
|
+
sudo "/etc/init.d/apache2 force-reload"
|
40
|
+
end
|
31
41
|
|
32
|
-
desc "enable php"
|
33
|
-
task :enable_php do
|
34
|
-
put render("php_handler", binding), "phphandler.conf"
|
35
|
-
apache_handler = "/etc/apache2/conf.d/phphandler"
|
36
|
-
sudo "mv phphandler.conf #{apache_handler}"
|
37
|
-
sudo "/etc/init.d/apache2 force-reload"
|
38
|
-
end
|
39
42
|
|
43
|
+
end
|
40
44
|
|
41
45
|
end
|
data/recipes/chef.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
Capistrano::Configuration.instance(true).load do
|
2
|
+
|
3
|
+
namespace :chef do
|
4
|
+
|
5
|
+
desc "Runs chef client on all the app servers"
|
6
|
+
task :client do
|
7
|
+
sudo "chef-client"
|
8
|
+
end
|
9
|
+
|
6
10
|
end
|
7
|
-
|
8
|
-
end
|
11
|
+
|
12
|
+
end
|
@@ -6,8 +6,10 @@ require 'activecollab_notifier'
|
|
6
6
|
# Hook them into your deploy script with the *after* function.
|
7
7
|
# Author: Alastair Brunton
|
8
8
|
|
9
|
+
Capistrano::Configuration.instance(true).load do
|
10
|
+
|
9
11
|
namespace :recipiez do
|
10
|
-
|
12
|
+
|
11
13
|
desc "generate config file used for db syncing etc"
|
12
14
|
task :generate_config do
|
13
15
|
if File.exists?('config/recipiez.yml')
|
@@ -16,8 +18,8 @@ namespace :recipiez do
|
|
16
18
|
`cp vendor/plugins/deployment_recipiez/recipes/templates/recipiez.yml.example config/recipiez.yml`
|
17
19
|
end
|
18
20
|
end
|
19
|
-
|
20
|
-
|
21
|
+
|
22
|
+
|
21
23
|
desc "Rename db file for deployment."
|
22
24
|
task :rename_db_file do
|
23
25
|
run "cp #{release_path}/config/database.#{rails_env} #{release_path}/config/database.yml"
|
@@ -38,10 +40,10 @@ namespace :recipiez do
|
|
38
40
|
basecamp_auth, current_revision, get_rev_log)
|
39
41
|
basecamp_notifier.notify
|
40
42
|
end
|
41
|
-
|
43
|
+
|
42
44
|
# You need to add the below line to your deploy.rb
|
43
|
-
# set :activecollab_options, {:base_url => "http://projects.bla.com",
|
44
|
-
# :project_id => 5, :ticket_id => 10,
|
45
|
+
# set :activecollab_options, {:base_url => "http://projects.bla.com",
|
46
|
+
# :project_id => 5, :ticket_id => 10,
|
45
47
|
# :username => 'bla', :password => 'bla'}
|
46
48
|
desc "Update activecollab with information of the deployment."
|
47
49
|
task :update_activecollab do
|
@@ -183,46 +185,48 @@ namespace :recipiez do
|
|
183
185
|
end
|
184
186
|
|
185
187
|
end
|
186
|
-
|
188
|
+
|
187
189
|
desc "Install bundler"
|
188
190
|
task :bundler do
|
189
191
|
sudo "gem install bundler --no-rdoc --no-ri"
|
190
192
|
end
|
191
|
-
|
193
|
+
|
192
194
|
desc "Install libxml and headers"
|
193
195
|
task :libxml do
|
194
196
|
sudo "apt-get install -y libxml2 libxml2-dev libxslt1-dev"
|
195
197
|
end
|
196
|
-
|
197
|
-
|
198
|
+
|
199
|
+
|
198
200
|
desc "Setup /var/www/apps"
|
199
201
|
task :app_dir do
|
200
|
-
sudo <<-CMD
|
201
|
-
|
202
|
-
|
202
|
+
sudo <<-CMD
|
203
|
+
if [ ! -d "/var/www/apps" ]; then
|
204
|
+
sudo mkdir -p /var/www/apps
|
203
205
|
fi
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
desc "Add user to www-data group"
|
209
|
-
task :www_group do
|
210
|
-
sudo "sudo usermod -a -G www-data #{user}"
|
211
|
-
sudo "sudo usermod -a -G #{user} www-data"
|
212
|
-
end
|
206
|
+
CMD
|
207
|
+
sudo "chown -R #{user}:#{user} /var/www/apps"
|
208
|
+
end
|
213
209
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
210
|
+
desc "Add user to www-data group"
|
211
|
+
task :www_group do
|
212
|
+
sudo "sudo usermod -a -G www-data #{user}"
|
213
|
+
sudo "sudo usermod -a -G #{user} www-data"
|
214
|
+
end
|
219
215
|
|
220
|
-
|
216
|
+
desc "Setup the deployment directories and fix permissions"
|
217
|
+
task :setup do
|
218
|
+
deploy::setup
|
219
|
+
sudo "chown -R #{user}:#{user} #{deploy_to}"
|
220
|
+
end
|
221
221
|
|
222
|
-
namespace :deploy do
|
223
|
-
task :restart do
|
224
|
-
# override this task
|
225
222
|
end
|
223
|
+
|
224
|
+
namespace :deploy do
|
225
|
+
task :restart do
|
226
|
+
# override this task
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
226
230
|
end
|
227
231
|
|
228
232
|
# Internal helper to shell out and run a query. Doesn't select a database.
|
@@ -282,11 +286,11 @@ end
|
|
282
286
|
|
283
287
|
|
284
288
|
def set_variables_from_yaml
|
285
|
-
|
289
|
+
|
286
290
|
unless File.exists?("config/recipiez.yml")
|
287
291
|
raise StandardError, "You need a config/recipiez.yml file which defines the database syncing settings. Run recipiez:generate_config"
|
288
292
|
end
|
289
|
-
|
293
|
+
|
290
294
|
global = YAML.load_file("config/recipiez.yml")
|
291
295
|
app_config = global[rails_env]
|
292
296
|
app_config.each_pair do |key, value|
|
data/recipes/logrotate.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
Capistrano::Configuration.instance(true).load do
|
2
|
+
|
3
|
+
namespace :logrotate do
|
4
|
+
desc "Configures logrotate for the application"
|
5
|
+
task :configure, :roles => :app do
|
6
|
+
generated = render('logrotate', binding)
|
7
|
+
puts generated
|
8
|
+
put generated, "#{application}"
|
9
|
+
sudo "mv #{application} /etc/logrotate.d/#{application}"
|
10
|
+
end
|
8
11
|
end
|
9
|
-
|
12
|
+
|
13
|
+
end
|
data/recipes/monit.rb
CHANGED
@@ -1,46 +1,50 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
Capistrano::Configuration.instance(true).load do
|
2
|
+
|
3
|
+
namespace :monit do
|
4
|
+
|
5
|
+
desc "configures monit for nginx"
|
6
|
+
task :nginx, :roles => :web do
|
7
|
+
put render('nginx_monit', binding), "nginx.conf"
|
8
|
+
sudo "mv nginx.conf /etc/monit/conf.d/nginx.conf"
|
9
|
+
sudo "/etc/init.d/monit restart"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "configures monit for thin"
|
13
|
+
task :thin, :roles => :web do
|
14
|
+
put render('thin_monit', binding), "#{application}.conf"
|
15
|
+
sudo "mv #{application}.conf /etc/monit/conf.d/#{application}.conf"
|
16
|
+
sudo "/etc/init.d/monit restart"
|
17
|
+
end
|
18
|
+
|
19
|
+
desc "configures monit for apache"
|
20
|
+
task :apache, :roles => :web do
|
21
|
+
put render('apache_monit', binding), "apache_monit.conf"
|
22
|
+
sudo "mv apache_monit.conf /etc/monit/conf.d/apache_monit.conf"
|
23
|
+
sudo "/etc/init.d/monit restart"
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "configures monit for mysql"
|
27
|
+
task :mysql, :roles => :db do
|
28
|
+
put render("mysql_monit", binding), "mysql_monit.conf"
|
29
|
+
sudo "mv mysql_monit.conf /etc/monit/conf.d/mysql_monit.conf"
|
30
|
+
sudo "/etc/init.d/monit restart"
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "configures monit for mysql"
|
34
|
+
task :sshd, :roles => :web do
|
35
|
+
put render("sshd_monit", binding), "sshd_monit.conf"
|
36
|
+
sudo "mv sshd_monit.conf /etc/monit/conf.d/sshd_monit.conf"
|
37
|
+
sudo "/etc/init.d/monit restart"
|
38
|
+
end
|
39
|
+
|
40
|
+
task :configure, :roles => :web do
|
41
|
+
put render("monit_config", binding), 'monitrc'
|
42
|
+
sudo "mv monitrc /etc/monit/monitrc"
|
43
|
+
sudo "chown root:root /etc/monit/monitrc"
|
44
|
+
sudo "/etc/init.d/monit restart"
|
45
|
+
end
|
46
|
+
|
47
|
+
|
8
48
|
end
|
9
|
-
|
10
|
-
|
11
|
-
task :thin, :roles => :web do
|
12
|
-
put render('thin_monit', binding), "#{application}.conf"
|
13
|
-
sudo "mv #{application}.conf /etc/monit/conf.d/#{application}.conf"
|
14
|
-
sudo "/etc/init.d/monit restart"
|
15
|
-
end
|
16
|
-
|
17
|
-
desc "configures monit for apache"
|
18
|
-
task :apache, :roles => :web do
|
19
|
-
put render('apache_monit', binding), "apache_monit.conf"
|
20
|
-
sudo "mv apache_monit.conf /etc/monit/conf.d/apache_monit.conf"
|
21
|
-
sudo "/etc/init.d/monit restart"
|
22
|
-
end
|
23
|
-
|
24
|
-
desc "configures monit for mysql"
|
25
|
-
task :mysql, :roles => :db do
|
26
|
-
put render("mysql_monit", binding), "mysql_monit.conf"
|
27
|
-
sudo "mv mysql_monit.conf /etc/monit/conf.d/mysql_monit.conf"
|
28
|
-
sudo "/etc/init.d/monit restart"
|
29
|
-
end
|
30
|
-
|
31
|
-
desc "configures monit for mysql"
|
32
|
-
task :sshd, :roles => :web do
|
33
|
-
put render("sshd_monit", binding), "sshd_monit.conf"
|
34
|
-
sudo "mv sshd_monit.conf /etc/monit/conf.d/sshd_monit.conf"
|
35
|
-
sudo "/etc/init.d/monit restart"
|
36
|
-
end
|
37
|
-
|
38
|
-
task :configure, :roles => :web do
|
39
|
-
put render("monit_config", binding), 'monitrc'
|
40
|
-
sudo "mv monitrc /etc/monit/monitrc"
|
41
|
-
sudo "chown root:root /etc/monit/monitrc"
|
42
|
-
sudo "/etc/init.d/monit restart"
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
|
-
end
|
49
|
+
|
50
|
+
end
|
data/recipes/nginx.rb
CHANGED
@@ -1,35 +1,37 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
1
|
+
Capistrano::Configuration.instance(true).load do
|
2
|
+
namespace :nginx do
|
3
|
+
desc "configures a vhost for the app, needs - num_servers, start_port"
|
4
|
+
task :configure, :roles => :web do
|
5
|
+
put render("nginx_vhost", binding), "#{application}.conf"
|
6
|
+
sudo "mv #{application}.conf /etc/nginx/sites-available/#{application}.conf"
|
7
|
+
begin
|
8
|
+
sudo "ln -s /etc/nginx/sites-available/#{application}.conf /etc/nginx/sites-enabled/#{application}.conf"
|
9
|
+
rescue
|
10
|
+
# do nothing
|
11
|
+
end
|
12
|
+
|
13
|
+
begin
|
14
|
+
stop
|
15
|
+
rescue
|
16
|
+
# do nothing
|
17
|
+
end
|
18
|
+
|
19
|
+
begin
|
20
|
+
start
|
21
|
+
rescue
|
22
|
+
# do nothing
|
23
|
+
end
|
16
24
|
end
|
17
25
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
# do nothing
|
26
|
+
desc "Starts Nginx webserver"
|
27
|
+
task :start, :roles => :web do
|
28
|
+
sudo "/etc/init.d/nginx start"
|
22
29
|
end
|
23
|
-
end
|
24
30
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
31
|
+
desc "Stops Nginx webserver"
|
32
|
+
task :stop, :roles => :web do
|
33
|
+
sudo "/etc/init.d/nginx stop"
|
34
|
+
end
|
29
35
|
|
30
|
-
desc "Stops Nginx webserver"
|
31
|
-
task :stop, :roles => :web do
|
32
|
-
sudo "/etc/init.d/nginx stop"
|
33
36
|
end
|
34
|
-
|
35
|
-
end
|
37
|
+
end
|
data/recipes/thin.rb
CHANGED
@@ -1,37 +1,40 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
task :configure_rack, :roles => :app do
|
10
|
-
sudo "thin config -C /etc/thin/#{application}.yml -c #{current_path} --servers #{num_servers} --port #{start_port} -e #{rack_env} -R #{current_path}/config.ru"
|
11
|
-
end
|
12
|
-
|
13
|
-
desc "install thin"
|
14
|
-
task :install, :roles => :app do
|
15
|
-
sudo "gem install thin"
|
16
|
-
sudo "thin install"
|
17
|
-
sudo "/usr/sbin/update-rc.d -f thin defaults"
|
18
|
-
end
|
19
|
-
|
20
|
-
desc "start thin"
|
21
|
-
task :start, :roles => :app do
|
22
|
-
sudo "/etc/init.d/thin start"
|
23
|
-
sudo "/usr/bin/ruby /usr/bin/thin start -C /etc/thin/#{application}.yml"
|
24
|
-
end
|
25
|
-
|
26
|
-
desc "stop thin"
|
27
|
-
task :stop, :roles => :app do
|
28
|
-
sudo "/usr/bin/ruby /usr/bin/thin stop -C /etc/thin/#{application}.yml"
|
29
|
-
end
|
30
|
-
|
31
|
-
desc "restart thin"
|
32
|
-
task :restart, :roles => :app do
|
33
|
-
sudo "/usr/bin/ruby /usr/bin/thin restart -C /etc/thin/#{application}.yml"
|
34
|
-
end
|
1
|
+
Capistrano::Configuration.instance(true).load do
|
2
|
+
|
3
|
+
namespace :thin do
|
4
|
+
|
5
|
+
desc "configures thin, requires num_servers and start_port"
|
6
|
+
task :configure, :roles => :app do
|
7
|
+
sudo "thin config -C /etc/thin/#{application}.yml -c #{current_path} --servers #{num_servers} -e #{rails_env} --port #{start_port}"
|
8
|
+
end
|
35
9
|
|
36
|
-
|
10
|
+
desc "configures thin with rackup eg. Sinatra. Requires thin_port, rack_env"
|
11
|
+
task :configure_rack, :roles => :app do
|
12
|
+
sudo "thin config -C /etc/thin/#{application}.yml -c #{current_path} --servers #{num_servers} --port #{start_port} -e #{rack_env} -R #{current_path}/config.ru"
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "install thin"
|
16
|
+
task :install, :roles => :app do
|
17
|
+
sudo "gem install thin"
|
18
|
+
sudo "thin install"
|
19
|
+
sudo "/usr/sbin/update-rc.d -f thin defaults"
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "start thin"
|
23
|
+
task :start, :roles => :app do
|
24
|
+
sudo "/etc/init.d/thin start"
|
25
|
+
sudo "/usr/bin/ruby /usr/bin/thin start -C /etc/thin/#{application}.yml"
|
26
|
+
end
|
27
|
+
|
28
|
+
desc "stop thin"
|
29
|
+
task :stop, :roles => :app do
|
30
|
+
sudo "/usr/bin/ruby /usr/bin/thin stop -C /etc/thin/#{application}.yml"
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "restart thin"
|
34
|
+
task :restart, :roles => :app do
|
35
|
+
sudo "/usr/bin/ruby /usr/bin/thin restart -C /etc/thin/#{application}.yml"
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
end
|
37
40
|
end
|
data/recipes/tolk.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
Capistrano::Configuration.instance(true).load do
|
2
|
+
|
3
|
+
namespace :tolk do
|
4
|
+
|
5
|
+
desc "Runs tolk:sync on the remove server. Useful for when you update"
|
6
|
+
task :sync do
|
7
|
+
run "cd #{current_path};rake tolk:sync RAILS_ENV=#{rails_env}"
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Runs tolk:dump_all on the remove server. Useful for when you update"
|
11
|
+
task :dump_all do
|
12
|
+
run "cd #{current_path};rake tolk:dump_all RAILS_ENV=#{rails_env}"
|
13
|
+
end
|
14
|
+
|
6
15
|
end
|
7
|
-
|
8
|
-
|
9
|
-
task :dump_all do
|
10
|
-
run "cd #{current_path};rake tolk:dump_all RAILS_ENV=#{rails_env}"
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
16
|
+
|
17
|
+
end
|
data/recipiez.gemspec
CHANGED