railslove_deploy 0.2.0 → 0.3.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.
- data/lib/railslove/recipes/backup.rb +1 -1
- data/lib/railslove/recipes/hooks.rb +5 -3
- data/lib/railslove/recipes/munin_node.rb +10 -0
- data/lib/railslove/recipes/shared.rb +7 -3
- data/lib/railslove/sprinkle/monit.rb +6 -6
- data/lib/railslove/sprinkle/munin.rb +31 -0
- data/lib/railslove/sprinkle/passenger.rb +5 -5
- data/lib/railslove/templates/deploy.rb +19 -2
- data/lib/railslove/templates/munin-node.conf.erb +45 -0
- data/lib/railslove/templates/passenger.conf +1 -1
- data/lib/railslove/templates/passenger.load +1 -1
- data/lib/railslove/templates/sprinkle.rb +2 -0
- data/lib/railslove/templates/vhost.erb +2 -2
- metadata +5 -2
@@ -2,7 +2,7 @@ namespace :backup do
|
|
2
2
|
|
3
3
|
desc "Create a new backup using the astrails-safe config script from config/server/backup.rb"
|
4
4
|
task :run do
|
5
|
-
sudo "cd #{current_path}; /usr/local/ruby-enterprise/bin/astrails-safe -v #{current_path}/config/server
|
5
|
+
sudo "cd #{current_path}; /usr/local/ruby-enterprise/bin/astrails-safe -v #{current_path}/config/server/#{fetch(:backup_script, "backup.rb")}"
|
6
6
|
end
|
7
7
|
|
8
8
|
end
|
@@ -10,21 +10,23 @@ namespace :hooks do
|
|
10
10
|
url = URI.parse("http://twitter.com/statuses/update.json")
|
11
11
|
|
12
12
|
status = Capistrano::CLI.ui.ask("Update Twitter status to: (leave blank to skip)")
|
13
|
+
user = fetch(:twitter_user, nil).nil? ? Capistrano::CLI.ui.ask("Twitter username: ") : fetch(:twitter_user, nil)
|
14
|
+
passwd = fetch(:twitter_password, nil).nil? ? Capistrano::CLI.password_prompt("Twitter password for @#{user}: ") : fetch(:twitter_password, nil)
|
13
15
|
unless status.empty?
|
14
16
|
|
15
17
|
http = Net::HTTP.new(url.host, 80)
|
16
18
|
http.open_timeout = 20
|
17
19
|
|
18
|
-
headers = {'Authorization' => 'Basic ' + ["#{
|
20
|
+
headers = {'Authorization' => 'Basic ' + ["#{user}:#{passwd}"].pack('m').delete("\r\n")}
|
19
21
|
|
20
22
|
body = "status=#{CGI.escape(status)}"
|
21
23
|
begin
|
22
24
|
http.send(:post, url.path, body, headers)
|
25
|
+
puts "Status updated..."
|
23
26
|
rescue Timeout::Error => e
|
24
27
|
puts "Timeout after 20s: Seems like Twitter is down."
|
25
|
-
puts "Use \"cap twitter:update\" to update Twitter status later w/o deploying"
|
28
|
+
puts "Use \"cap hooks:twitter:update\" to update Twitter status later w/o deploying"
|
26
29
|
end
|
27
|
-
# if an exception is thrown, let them see it, they're a developer (most likely)
|
28
30
|
end
|
29
31
|
end
|
30
32
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
namespace :munin_node do
|
2
|
+
|
3
|
+
desc "Upload the munin node configuration"
|
4
|
+
task :configure do
|
5
|
+
put render("config/server/munin-node.conf.erb", binding), "/tmp/munin_node"
|
6
|
+
sudo "mv /tmp/munin_node /etc/munin/munin-node.conf"
|
7
|
+
sudo "chown -R root:root /etc/munin/munin-node.conf"
|
8
|
+
end
|
9
|
+
|
10
|
+
end
|
@@ -1,15 +1,19 @@
|
|
1
1
|
namespace :shared do
|
2
|
+
|
3
|
+
# source is the file/folder within the release
|
4
|
+
# target is the file/folder in the shared folder
|
5
|
+
|
2
6
|
task :setup do
|
3
7
|
fetch(:shared_files,{}).each do |source,target|
|
4
|
-
path = File.directory?(source) ? File.dirname(target)
|
8
|
+
path = File.directory?(source) ? target : File.dirname(target)
|
5
9
|
run "mkdir -p #{shared_path}/#{path}"
|
6
10
|
end
|
7
11
|
end
|
8
12
|
|
9
13
|
task :symlink do
|
10
14
|
fetch(:shared_files,{}).each do |source,target|
|
11
|
-
run "rm -rf #{source}"
|
12
|
-
run "ln -
|
15
|
+
run "rm -rf #{release_path}/#{source}"
|
16
|
+
run "ln -nfs #{shared_path}/#{target} #{release_path}/#{source}"
|
13
17
|
end
|
14
18
|
end
|
15
19
|
|
@@ -9,9 +9,9 @@ package :monit, :provides => :monitoring do
|
|
9
9
|
|
10
10
|
requires :essentials, :monit_dependencies
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
verify do
|
13
|
+
has_executable "monit"
|
14
|
+
end
|
15
15
|
end
|
16
16
|
|
17
17
|
package :monit_init_d do
|
@@ -22,9 +22,9 @@ package :monit_init_d do
|
|
22
22
|
post :install, "chmod +x /etc/init.d/monit"
|
23
23
|
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
verify do
|
26
|
+
has_file "/etc/init.d/monit"
|
27
|
+
end
|
28
28
|
|
29
29
|
end
|
30
30
|
|
@@ -0,0 +1,31 @@
|
|
1
|
+
package :munin_node do
|
2
|
+
description 'munin-node - daemon to gather system ressouce information in cooperation with the main Munin program'
|
3
|
+
requires :essentials
|
4
|
+
# the apache stats for munin need libwww-perl
|
5
|
+
apt 'munin-node libwww-perl'
|
6
|
+
|
7
|
+
verify do
|
8
|
+
has_executable "munin-node"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
package :munin_apache_status do
|
13
|
+
description "Configure the Munin node for extended apache process, access and volumne information"
|
14
|
+
requires :munin_node
|
15
|
+
|
16
|
+
noop do
|
17
|
+
post :install, "ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/"
|
18
|
+
post :install, "ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/"
|
19
|
+
post :install, "ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/"
|
20
|
+
post :install, 'sed -e "s/<\/IfModule>/ExtendedStatus On \n<\/IfModule>/g" /etc/apache2/mods-available/status.conf > /etc/apache2/mods-available/status.conf'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
package :munin do
|
25
|
+
description "Munin is a networked resource monitoring tool that can help analyze resource trends"
|
26
|
+
apt 'munin'
|
27
|
+
|
28
|
+
verify do
|
29
|
+
has_executable "munin"
|
30
|
+
end
|
31
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
package :passenger_gem do
|
2
2
|
description 'Phusion Passenger (aka mod_rails)'
|
3
|
-
version '2.2.
|
3
|
+
version '2.2.9'
|
4
4
|
gem 'passenger'
|
5
5
|
requires :ruby_enterprise
|
6
6
|
|
@@ -14,7 +14,7 @@ package :passenger_apache, :provides => :appserver do
|
|
14
14
|
# require the apache passenger module load/conf files before installation because of a sprinkle limitation.
|
15
15
|
requires :apache, :passenger_gem, :passenger_module_load, :passenger_module_conf
|
16
16
|
|
17
|
-
passenger_version = '2.2.
|
17
|
+
passenger_version = '2.2.9'
|
18
18
|
|
19
19
|
noop do
|
20
20
|
pre :install, 'passenger-install-apache2-module --auto'
|
@@ -25,7 +25,7 @@ package :passenger_apache, :provides => :appserver do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
verify do
|
28
|
-
has_file '/usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-2.2.
|
28
|
+
has_file '/usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so'
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -35,7 +35,7 @@ package :passenger_module_load do
|
|
35
35
|
requires :apache, :passenger_gem
|
36
36
|
|
37
37
|
#TODO: :render => true seems not to work? hello sprinkle?!
|
38
|
-
passenger_version = '2.2.
|
38
|
+
passenger_version = '2.2.9'
|
39
39
|
transfer "#{File.dirname(__FILE__)}/../templates/passenger.load", "/etc/apache2/mods-available/passenger.load", :render => true
|
40
40
|
|
41
41
|
verify do
|
@@ -49,7 +49,7 @@ package :passenger_module_conf do
|
|
49
49
|
requires :apache, :passenger_gem
|
50
50
|
|
51
51
|
#TODO: :render => true seems not to work? hello sprinkle?!
|
52
|
-
passenger_version = '2.2.
|
52
|
+
passenger_version = '2.2.9'
|
53
53
|
transfer "#{File.dirname(__FILE__)}/../templates/passenger.conf", "/etc/apache2/mods-available/passenger.conf", :render => true
|
54
54
|
|
55
55
|
verify do
|
@@ -77,8 +77,11 @@ set :use_sudo, false
|
|
77
77
|
|
78
78
|
# the files and directories that you want to share between the releases of your application
|
79
79
|
# for example:
|
80
|
-
# set :shared_files, {
|
81
|
-
# symlinks <release>/files to <shared>/files and
|
80
|
+
# set :shared_files, {"public/files" => "files"}
|
81
|
+
# symlinks <release>/public/files to <shared>/files and
|
82
|
+
# set :shared_files, {"config/myconf.rb" => "config/myconfig.rb"}
|
83
|
+
# symlinks <release>/config/myconfig.rb to <shared>/config/myconfig.rb and
|
84
|
+
|
82
85
|
|
83
86
|
set :shared_files, {}
|
84
87
|
|
@@ -137,6 +140,19 @@ after "deploy:setup",
|
|
137
140
|
"ferm:configure"
|
138
141
|
|
139
142
|
|
143
|
+
#############################################################################
|
144
|
+
# Munin configuration
|
145
|
+
#############################################################################
|
146
|
+
|
147
|
+
# A list of addresses that are allowed to connect to the munin-node.
|
148
|
+
# Add the IP address of your munin-server.
|
149
|
+
|
150
|
+
set :munin_allow_from_addresses, ["127.0.0.1"]
|
151
|
+
|
152
|
+
after "deploy:setup",
|
153
|
+
"munin_node:configure"
|
154
|
+
|
155
|
+
|
140
156
|
#############################################################################
|
141
157
|
# Logrotation configuration
|
142
158
|
#############################################################################
|
@@ -165,6 +181,7 @@ after "deploy:setup",
|
|
165
181
|
"apache:upload_vhost_config",
|
166
182
|
"db:upload_config_yml",
|
167
183
|
"gems:install"
|
184
|
+
"shared:setup"
|
168
185
|
|
169
186
|
after "deploy:cold",
|
170
187
|
"apache:enable_site",
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
# Example config-file for munin-node
|
3
|
+
#
|
4
|
+
|
5
|
+
log_level 4
|
6
|
+
log_file /var/log/munin/munin-node.log
|
7
|
+
pid_file /var/run/munin/munin-node.pid
|
8
|
+
|
9
|
+
background 1
|
10
|
+
setseid 1
|
11
|
+
|
12
|
+
user root
|
13
|
+
group root
|
14
|
+
setsid yes
|
15
|
+
|
16
|
+
# Regexps for files to ignore
|
17
|
+
|
18
|
+
ignore_file ~$
|
19
|
+
ignore_file \.bak$
|
20
|
+
ignore_file %$
|
21
|
+
ignore_file \.dpkg-(tmp|new|old|dist)$
|
22
|
+
ignore_file \.rpm(save|new)$
|
23
|
+
ignore_file \.pod$
|
24
|
+
|
25
|
+
# Set this if the client doesn't report the correct hostname when
|
26
|
+
# telnetting to localhost, port 4949
|
27
|
+
#
|
28
|
+
#host_name localhost.localdomain
|
29
|
+
|
30
|
+
# A list of addresses that are allowed to connect. This must be a
|
31
|
+
# regular expression, due to brain damage in Net::Server, which
|
32
|
+
# doesn't understand CIDR-style network notation. You may repeat
|
33
|
+
# the allow line as many times as you'd like
|
34
|
+
|
35
|
+
<% for address in fetch(:munin_allow_from_addresses, ['127.0.0.1'] %>
|
36
|
+
allow ^<%= address.gsub('.','\.') %>$
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
# Which address to bind to;
|
40
|
+
host *
|
41
|
+
# host 127.0.0.1
|
42
|
+
|
43
|
+
# And which port
|
44
|
+
port 4949
|
45
|
+
|
@@ -1,3 +1,3 @@
|
|
1
|
-
PassengerRoot /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-<%= passenger_version || "2.2.
|
1
|
+
PassengerRoot /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-<%= passenger_version || "2.2.9" %>
|
2
2
|
PassengerRuby /usr/local/ruby-enterprise/bin/ruby
|
3
3
|
RailsEnv production
|
@@ -1 +1 @@
|
|
1
|
-
LoadModule passenger_module /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-<%= passenger_version || "2.2.
|
1
|
+
LoadModule passenger_module /usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/passenger-<%= passenger_version || "2.2.9" %>/ext/apache2/mod_passenger.so
|
@@ -21,6 +21,8 @@ policy :passenger_stack, :roles => :app do
|
|
21
21
|
requires :ferm # ferm iptable configuration tool
|
22
22
|
requires :ferm_conf # configure ferm (allow http, https and ssh)
|
23
23
|
requires :monit # monit - system process monitoring
|
24
|
+
requires :munin_node # install munin-node for system monitoring
|
25
|
+
requires :munin_apache_status # configure extended apache status information
|
24
26
|
end
|
25
27
|
|
26
28
|
deployment do
|
@@ -6,9 +6,9 @@
|
|
6
6
|
DocumentRoot /var/www/rails_apps/<%= application %>/current/public
|
7
7
|
|
8
8
|
<directory "/var/www/rails_apps/<%= application %>/current/public">
|
9
|
+
AllowOverride all # <-- relax Apache security settings
|
10
|
+
Options -MultiViews # <-- MultiViews must be turned off
|
9
11
|
Options FollowSymLinks
|
10
|
-
Order allow,deny
|
11
|
-
Allow from all
|
12
12
|
</directory>
|
13
13
|
RailsEnv <%= fetch(:rails_env, "production") %>
|
14
14
|
LogLevel warn
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railslove_deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bumann
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-04 00:00:00 +01:00
|
13
13
|
default_executable: deployify
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/railslove/recipes/memcache.rb
|
49
49
|
- lib/railslove/recipes/misc.rb
|
50
50
|
- lib/railslove/recipes/monit.rb
|
51
|
+
- lib/railslove/recipes/munin_node.rb
|
51
52
|
- lib/railslove/recipes/passenger.rb
|
52
53
|
- lib/railslove/recipes/shared.rb
|
53
54
|
- lib/railslove/recipes/sphinx.rb
|
@@ -60,6 +61,7 @@ files:
|
|
60
61
|
- lib/railslove/sprinkle/image_magick.rb
|
61
62
|
- lib/railslove/sprinkle/memcache.rb
|
62
63
|
- lib/railslove/sprinkle/monit.rb
|
64
|
+
- lib/railslove/sprinkle/munin.rb
|
63
65
|
- lib/railslove/sprinkle/mysql.rb
|
64
66
|
- lib/railslove/sprinkle/nginx.rb
|
65
67
|
- lib/railslove/sprinkle/passenger.rb
|
@@ -82,6 +84,7 @@ files:
|
|
82
84
|
- lib/railslove/templates/monitoring/sphinx.monit.erb
|
83
85
|
- lib/railslove/templates/monitoring/sshd.monit.erb
|
84
86
|
- lib/railslove/templates/monitrc.erb
|
87
|
+
- lib/railslove/templates/munin-node.conf.erb
|
85
88
|
- lib/railslove/templates/nginx.conf
|
86
89
|
- lib/railslove/templates/nginx_init
|
87
90
|
- lib/railslove/templates/passenger.conf
|