rubber 1.1.5 → 1.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +25 -0
- data/VERSION +1 -1
- data/generators/vulcanize/templates/apache/config/rubber/role/web_tools/tools-index.html +2 -2
- data/generators/vulcanize/templates/base/config/rubber/common/crontab +1 -1
- data/generators/vulcanize/templates/base/config/rubber/common/rubber.profile +14 -0
- data/generators/vulcanize/templates/base/config/rubber/deploy-setup.rb +21 -23
- data/generators/vulcanize/templates/base/config/rubber/rubber.yml +7 -3
- data/generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb +56 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml +199 -0
- data/generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf +9 -0
- data/generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml +8 -0
- data/generators/vulcanize/templates/jetty/templates.yml +1 -0
- data/generators/vulcanize/templates/mongrel/config/rubber/role/mongrel/monit-mongrel.conf +2 -2
- data/generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf +9 -0
- data/generators/vulcanize/templates/munin/script/munin/example_mysql_query.rb +3 -3
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf +34 -0
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf +2 -1
- data/generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf +1 -1
- data/generators/vulcanize/templates/passenger/config/rubber/rubber-passenger.yml +0 -1
- data/generators/vulcanize/templates/redis/config/rubber/deploy-redis.rb +1 -1
- data/generators/vulcanize/templates/redis/config/rubber/role/redis/crontab +1 -1
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/crontab +2 -2
- data/generators/vulcanize/templates/sphinx/config/rubber/role/sphinx/monit-sphinx.conf +2 -2
- data/lib/rubber.rb +1 -1
- data/lib/rubber/environment.rb +4 -4
- data/lib/rubber/recipes/rubber/instances.rb +2 -0
- data/lib/rubber/recipes/rubber/utils.rb +2 -2
- metadata +10 -3
- data/generators/vulcanize/templates/base/config/rubber/common/profile.rc +0 -9
data/CHANGELOG
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
1.1.6
|
2
|
+
-----
|
3
|
+
|
4
|
+
stop using helper method to install ree as it uses different path for 64bit pkg <fbdeab3> [Matt Conway]
|
5
|
+
remind about bootstrap <fd2e593> [Matt Conway]
|
6
|
+
fix setting of rails vars <cd7206d> [Matt Conway]
|
7
|
+
Merge remote branch 'nirvdrum/master' into pull <b902618> [Matt Conway]
|
8
|
+
add passenger memory stats munin plugin <de6bb9a> [Matt Conway]
|
9
|
+
setup path so that we select correct ruby globally <8365a70> [Matt Conway]
|
10
|
+
sort display order of tools <4a7a9a0> [Matt Conway]
|
11
|
+
fix arithmetic for server slicing in serial_task <4bbd9e7> [Matt Conway]
|
12
|
+
Upgraded to the latest version of redis. <a62955f> [Kevin Menard]
|
13
|
+
Merge branch 'wr0ngway/master' <09046af> [Kevin Menard]
|
14
|
+
escape percents in crontab <a299c3b> [Matt Conway]
|
15
|
+
fix ruby prefix path for passenger munin plugin <af9488d> [Matt Conway]
|
16
|
+
fix config reference in munin example <50e563d> [Matt Conway]
|
17
|
+
enable rubygems at system level for munin plugins <df32e3e> [Matt Conway]
|
18
|
+
env should use rubygems by default <c2467cc> [Matt Conway]
|
19
|
+
make default bucket name be dns friendly <b58fbbe> [Matt Conway]
|
20
|
+
fix sphinx crontab to sudo using configured user <3fe8b6f> [Matt Conway]
|
21
|
+
fix being able to reference cluster config (instance.yml) from within rubber.yml <08fecec> [Matt Conway]
|
22
|
+
Fixed monit conf file. <d84d287> [Kevin Menard]
|
23
|
+
git-core is fine on modern Ubuntu AMIs. <16eda00> [Kevin Menard]
|
24
|
+
Added a jetty generator. <5c18774> [Kevin Menard]
|
25
|
+
|
1
26
|
1.1.5
|
2
27
|
-----
|
3
28
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.6
|
@@ -17,11 +17,11 @@
|
|
17
17
|
<li><a href="http://<%= cruise_host %>/cruise/">CruiseControl</a></li>
|
18
18
|
<% end %>
|
19
19
|
|
20
|
-
<% rubber_instances.for_role('haproxy').each do |ic| %>
|
20
|
+
<% rubber_instances.for_role('haproxy').sort {|a,b| a.name <=> b.name }.each do |ic| %>
|
21
21
|
<li><a href="/haproxy_<%= ic.name %>/">HAProxy <%= ic.name %></a></li>
|
22
22
|
<% end %>
|
23
23
|
|
24
|
-
<% rubber_instances.each do |ic| %>
|
24
|
+
<% rubber_instances.sort {|a,b| a.name <=> b.name }.each do |ic| %>
|
25
25
|
<li><a href="/monit_<%= ic.name %>/">Monit <%= ic.name %></a></li>
|
26
26
|
<% end %>
|
27
27
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
@write_cmd = 'crontab -'
|
4
4
|
%>
|
5
5
|
|
6
|
-
PATH=/usr/
|
6
|
+
PATH=/sbin:/usr/sbin:/usr/local/sbin:<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:/usr/bin:/bin
|
7
7
|
MAILTO=<%= rubber_env.admin_email %>
|
8
8
|
# don't need to set RUBBER_ENV for each script since we set it for all cron here
|
9
9
|
RUBBER_ENV=<%= RUBBER_ENV %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%
|
2
|
+
@path = "/etc/profile.d/rubber.sh"
|
3
|
+
%>
|
4
|
+
|
5
|
+
# convenience to simply running rails console, etc with correct env
|
6
|
+
export RUBBER_ENV=<%= RUBBER_ENV %>
|
7
|
+
export RAILS_ENV=<%= RUBBER_ENV %>
|
8
|
+
alias current="cd <%= RUBBER_ROOT %>"
|
9
|
+
|
10
|
+
# make sure we use the right ruby since REE installs into /usr/local
|
11
|
+
export PATH=<%= rubber_env.ruby_prefix %>/bin:$PATH
|
12
|
+
|
13
|
+
# Always use rubygems
|
14
|
+
export RUBYOPT="rubygems"
|
@@ -19,9 +19,20 @@ namespace :rubber do
|
|
19
19
|
|
20
20
|
if ent_ruby_hosts.size > 0
|
21
21
|
task :_install_enterprise_ruby, :hosts => ent_ruby_hosts do
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
ver = "1.8.7-2009.10"
|
23
|
+
rubber.run_script "install_ruby-enterprise", <<-ENDSCRIPT
|
24
|
+
if [[ ! `ruby --version 2> /dev/null` =~ "Ruby Enterprise Edition 2009.10" ]]; then
|
25
|
+
arch=`uname -m`
|
26
|
+
if [ "$arch" = "x86_64" ]; then
|
27
|
+
src="http://rubyforge.org/frs/download.php/66163/ruby-enterprise_#{ver}_amd64.deb"
|
28
|
+
else
|
29
|
+
src="http://rubyforge.org/frs/download.php/66164/ruby-enterprise_#{ver}_i386.deb"
|
30
|
+
fi
|
31
|
+
src_file="${src##*/}"
|
32
|
+
wget -qP /tmp ${src}
|
33
|
+
dpkg -i /tmp/${src_file}
|
34
|
+
fi
|
35
|
+
ENDSCRIPT
|
25
36
|
end
|
26
37
|
|
27
38
|
_install_enterprise_ruby
|
@@ -46,26 +57,13 @@ namespace :rubber do
|
|
46
57
|
ENDSCRIPT
|
47
58
|
end
|
48
59
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_amd64.deb"
|
57
|
-
else
|
58
|
-
src="http://mirrors.kernel.org/ubuntu/pool/main/g/git-core/git-core_1.5.4.5-1~dapper1_i386.deb"
|
59
|
-
fi
|
60
|
-
apt-get install liberror-perl libdigest-sha1-perl
|
61
|
-
wget -qO /tmp/git.deb ${src}
|
62
|
-
dpkg -i /tmp/git.deb
|
63
|
-
|
64
|
-
if [[ "#{repository}" =~ "@" ]]; then
|
65
|
-
# Get host key for src machine to prevent ssh from failing
|
66
|
-
rm -f ~/.ssh/known_hosts
|
67
|
-
! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
|
68
|
-
fi
|
60
|
+
after "rubber:install_packages", "rubber:base:configure_git" if scm == "git"
|
61
|
+
task :configure_git do
|
62
|
+
rubber.run_script 'configure_git', <<-ENDSCRIPT
|
63
|
+
if [[ "#{repository}" =~ "@" ]]; then
|
64
|
+
# Get host key for src machine to prevent ssh from failing
|
65
|
+
rm -f ~/.ssh/known_hosts
|
66
|
+
! ssh -o 'StrictHostKeyChecking=no' #{repository.gsub(/:.*/, '')} &> /dev/null
|
69
67
|
fi
|
70
68
|
ENDSCRIPT
|
71
69
|
end
|
@@ -68,10 +68,10 @@ cloud_providers:
|
|
68
68
|
#
|
69
69
|
# pk_file: "#{Dir[(File.expand_path('~') rescue '/root') + '/.ec2/pk-*'].first}"
|
70
70
|
# cert_file: "#{Dir[(File.expand_path('~') rescue '/root') + '/.ec2/cert-*'].first}"
|
71
|
-
# image_bucket: "#{app_name}
|
71
|
+
# image_bucket: "#{app_name}-images"
|
72
72
|
|
73
73
|
# OPTIONAL: Needed for backing up database to s3
|
74
|
-
# backup_bucket: "#{app_name}
|
74
|
+
# backup_bucket: "#{app_name}-backups"
|
75
75
|
|
76
76
|
# REQUIRED: the ami and instance type for creating instances
|
77
77
|
# The Ubuntu images at http://alestic.com/ work well
|
@@ -120,10 +120,14 @@ isolate_security_groups: true
|
|
120
120
|
# OPTIONAL: Set if you want to use Ruby Enterprise Edition instead of the standard ubuntu one
|
121
121
|
use_enterprise_ruby: false
|
122
122
|
|
123
|
+
# REE installs into /usr/local, so this lets us setup environment to use it globally
|
124
|
+
# instead of system ruby
|
125
|
+
ruby_prefix: "#{use_enterprise_ruby ? '/usr/local' : '/usr'}"
|
126
|
+
|
123
127
|
# OPTIONAL: The packages to install on all instances
|
124
128
|
# You can install a specific version of a package by using a sub-array of pkg, version
|
125
129
|
# For example, packages: [[rake, 0.7.1], irb]
|
126
|
-
packages: [postfix, build-essential, ruby-full, ruby1.8-dev, rake, irb]
|
130
|
+
packages: [postfix, build-essential, ruby-full, ruby1.8-dev, rake, irb, git-core]
|
127
131
|
|
128
132
|
# OPTIONAL: gem sources to setup for rubygems
|
129
133
|
gemsources: ["http://gemcutter.org", "http://gems.rubyforge.org/", "http://gems.github.com"]
|
@@ -0,0 +1,56 @@
|
|
1
|
+
|
2
|
+
namespace :rubber do
|
3
|
+
|
4
|
+
namespace :jetty do
|
5
|
+
|
6
|
+
rubber.allow_optional_tasks(self)
|
7
|
+
|
8
|
+
after "rubber:install_packages", "rubber:jetty:custom_install"
|
9
|
+
|
10
|
+
task :custom_install, :roles => :jetty do
|
11
|
+
rubber.sudo_script 'install_jetty', <<-ENDSCRIPT
|
12
|
+
if [[ -z `ls #{rubber_env.jetty_dir} 2> /dev/null` ]]; then
|
13
|
+
wget -q http://ftp.osuosl.org/pub/eclipse/jetty/#{rubber_env.jetty_version}/dist/jetty-distribution-#{rubber_env.jetty_version}.tar.gz
|
14
|
+
tar -zxf jetty-distribution-#{rubber_env.jetty_version}.tar.gz
|
15
|
+
|
16
|
+
# Install to appropriate location.
|
17
|
+
mv jetty-distribution-#{rubber_env.jetty_version} #{rubber_env.jetty_prefix}
|
18
|
+
ln -s #{rubber_env.jetty_prefix}/jetty-distribution-#{rubber_env.jetty_version} #{rubber_env.jetty_dir}
|
19
|
+
chmod 744 #{rubber_env.jetty_dir}/bin/*.sh
|
20
|
+
|
21
|
+
# Cleanup the jetty distribution
|
22
|
+
rm #{rubber_env.jetty_dir}/webapps/*
|
23
|
+
rm -r #{rubber_env.jetty_dir}/contexts/test.d/
|
24
|
+
mv #{rubber_env.jetty_dir}/contexts/demo.xml #{rubber_env.jetty_dir}/contexts/demo.xml.example
|
25
|
+
mv #{rubber_env.jetty_dir}/contexts/javadoc.xml #{rubber_env.jetty_dir}/contexts/javadoc.xml.example
|
26
|
+
|
27
|
+
# Cleanup after ourselves.
|
28
|
+
rm jetty-distribution-#{rubber_env.jetty_version}.tar.gz
|
29
|
+
fi
|
30
|
+
ENDSCRIPT
|
31
|
+
end
|
32
|
+
|
33
|
+
after "rubber:setup_app_permissions", "rubber:jetty:setup_jetty_permissions"
|
34
|
+
|
35
|
+
task :setup_jetty_permissions, :roles => :jetty do
|
36
|
+
run "chown -R #{rubber_env.app_user}:#{rubber_env.app_user} #{rubber_env.jetty_dir}"
|
37
|
+
end
|
38
|
+
|
39
|
+
before "deploy:stop", "rubber:jetty:stop"
|
40
|
+
after "deploy:start", "rubber:jetty:start"
|
41
|
+
after "deploy:restart", "rubber:jetty:restart"
|
42
|
+
|
43
|
+
task :restart, :roles => :jetty do
|
44
|
+
run "#{rubber_env.jetty_dir}/bin/jetty.sh restart"
|
45
|
+
end
|
46
|
+
|
47
|
+
task :stop, :roles => :jetty do
|
48
|
+
run "#{rubber_env.jetty_dir}/bin/jetty.sh stop"
|
49
|
+
end
|
50
|
+
|
51
|
+
task :start, :roles => :jetty do
|
52
|
+
run "#{rubber_env.jetty_dir}/bin/jetty.sh start"
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,199 @@
|
|
1
|
+
<%-
|
2
|
+
@path = "#{rubber_env.jetty_dir}/etc/jetty.xml"
|
3
|
+
%><?xml version="1.0"?>
|
4
|
+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
|
5
|
+
|
6
|
+
<!-- =============================================================== -->
|
7
|
+
<!-- Configure the Jetty Server -->
|
8
|
+
<!-- -->
|
9
|
+
<!-- Documentation of this file format can be found at: -->
|
10
|
+
<!-- http://docs.codehaus.org/display/JETTY/jetty.xml -->
|
11
|
+
<!-- -->
|
12
|
+
<!-- =============================================================== -->
|
13
|
+
|
14
|
+
|
15
|
+
<Configure id="Server" class="org.eclipse.jetty.server.Server">
|
16
|
+
|
17
|
+
<!-- =========================================================== -->
|
18
|
+
<!-- Server Thread Pool -->
|
19
|
+
<!-- =========================================================== -->
|
20
|
+
<Set name="ThreadPool">
|
21
|
+
<!-- Default queued blocking threadpool
|
22
|
+
-->
|
23
|
+
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
|
24
|
+
<Set name="minThreads">10</Set>
|
25
|
+
<Set name="maxThreads">200</Set>
|
26
|
+
</New>
|
27
|
+
|
28
|
+
<!-- Optional Java 5 bounded threadpool with job queue
|
29
|
+
<New class="org.eclipse.thread.concurrent.ThreadPool">
|
30
|
+
<Set name="corePoolSize">50</Set>
|
31
|
+
<Set name="maximumPoolSize">50</Set>
|
32
|
+
</New>
|
33
|
+
-->
|
34
|
+
</Set>
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
<!-- =========================================================== -->
|
39
|
+
<!-- Set connectors -->
|
40
|
+
<!-- =========================================================== -->
|
41
|
+
|
42
|
+
<Call name="addConnector">
|
43
|
+
<Arg>
|
44
|
+
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
|
45
|
+
<Set name="host"><SystemProperty name="jetty.host" /></Set>
|
46
|
+
<Set name="port"><SystemProperty name="jetty.port" default="<%= rubber_env.jetty_port %>"/></Set>
|
47
|
+
<Set name="maxIdleTime">300000</Set>
|
48
|
+
<Set name="Acceptors">2</Set>
|
49
|
+
<Set name="statsOn">false</Set>
|
50
|
+
<Set name="confidentialPort">8443</Set>
|
51
|
+
<Set name="lowResourcesConnections">20000</Set>
|
52
|
+
<Set name="lowResourcesMaxIdleTime">5000</Set>
|
53
|
+
</New>
|
54
|
+
</Arg>
|
55
|
+
</Call>
|
56
|
+
|
57
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
58
|
+
<!-- To add a HTTPS SSL connector -->
|
59
|
+
<!-- mixin jetty-ssl.xml: -->
|
60
|
+
<!-- java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml -->
|
61
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
62
|
+
|
63
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
64
|
+
<!-- To add a HTTP blocking connector -->
|
65
|
+
<!-- mixin jetty-bio.xml: -->
|
66
|
+
<!-- java -jar start.jar etc/jetty.xml etc/jetty-bio.xml -->
|
67
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
68
|
+
|
69
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
70
|
+
<!-- To allow Jetty to be started from xinetd -->
|
71
|
+
<!-- mixin jetty-xinetd.xml: -->
|
72
|
+
<!-- java -jar start.jar etc/jetty.xml etc/jetty-xinetd.xml -->
|
73
|
+
<!-- -->
|
74
|
+
<!-- See jetty-xinetd.xml for further instructions. -->
|
75
|
+
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
76
|
+
|
77
|
+
<!-- =========================================================== -->
|
78
|
+
<!-- Set handler Collection Structure -->
|
79
|
+
<!-- =========================================================== -->
|
80
|
+
<Set name="handler">
|
81
|
+
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
|
82
|
+
<Set name="handlers">
|
83
|
+
<Array type="org.eclipse.jetty.server.Handler">
|
84
|
+
<Item>
|
85
|
+
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
|
86
|
+
</Item>
|
87
|
+
<Item>
|
88
|
+
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
|
89
|
+
</Item>
|
90
|
+
<Item>
|
91
|
+
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
|
92
|
+
</Item>
|
93
|
+
</Array>
|
94
|
+
</Set>
|
95
|
+
</New>
|
96
|
+
</Set>
|
97
|
+
|
98
|
+
<!-- =========================================================== -->
|
99
|
+
<!-- Configure the context deployer -->
|
100
|
+
<!-- A context deployer will deploy contexts described in -->
|
101
|
+
<!-- configuration files discovered in a directory. -->
|
102
|
+
<!-- The configuration directory can be scanned for hot -->
|
103
|
+
<!-- deployments at the configured scanInterval. -->
|
104
|
+
<!-- -->
|
105
|
+
<!-- This deployer is configured to deploy contexts configured -->
|
106
|
+
<!-- in the $JETTY_HOME/contexts directory -->
|
107
|
+
<!-- -->
|
108
|
+
<!-- =========================================================== -->
|
109
|
+
<Call name="addBean">
|
110
|
+
<Arg>
|
111
|
+
<New class="org.eclipse.jetty.deploy.ContextDeployer">
|
112
|
+
<Set name="contexts"><Ref id="Contexts"/></Set>
|
113
|
+
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts</Set>
|
114
|
+
<Set name="scanInterval">5</Set>
|
115
|
+
<Call name="setAttribute">
|
116
|
+
<Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
|
117
|
+
<Arg>.*/jsp-api-[^/]*\.jar$|.*/jsp-[^/]*\.jar$</Arg>
|
118
|
+
</Call>
|
119
|
+
</New>
|
120
|
+
</Arg>
|
121
|
+
</Call>
|
122
|
+
|
123
|
+
<!-- =========================================================== -->
|
124
|
+
<!-- Configure the webapp deployer. -->
|
125
|
+
<!-- A webapp deployer will deploy standard webapps discovered -->
|
126
|
+
<!-- in a directory at startup, without the need for additional -->
|
127
|
+
<!-- configuration files. It does not support hot deploy or -->
|
128
|
+
<!-- non standard contexts (see ContextDeployer above). -->
|
129
|
+
<!-- -->
|
130
|
+
<!-- This deployer is configured to deploy webapps from the -->
|
131
|
+
<!-- $JETTY_HOME/webapps directory -->
|
132
|
+
<!-- -->
|
133
|
+
<!-- Normally only one type of deployer need be used. -->
|
134
|
+
<!-- -->
|
135
|
+
<!-- =========================================================== -->
|
136
|
+
<Call name="addBean">
|
137
|
+
<Arg>
|
138
|
+
<New class="org.eclipse.jetty.deploy.WebAppDeployer">
|
139
|
+
<Set name="contexts"><Ref id="Contexts"/></Set>
|
140
|
+
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
|
141
|
+
<Set name="parentLoaderPriority">false</Set>
|
142
|
+
<Set name="extract">true</Set>
|
143
|
+
<Set name="allowDuplicates">false</Set>
|
144
|
+
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
|
145
|
+
<Call name="setAttribute">
|
146
|
+
<Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
|
147
|
+
<Arg>.*/jsp-api-[^/]*\.jar$|.*/jsp-[^/]*\.jar$</Arg>
|
148
|
+
</Call>
|
149
|
+
</New>
|
150
|
+
</Arg>
|
151
|
+
</Call>
|
152
|
+
|
153
|
+
<!-- =========================================================== -->
|
154
|
+
<!-- Configure Authentication Login Service -->
|
155
|
+
<!-- Realms may be configured for the entire server here, or -->
|
156
|
+
<!-- they can be configured for a specific web app in a context -->
|
157
|
+
<!-- configuration (see $(jetty.home)/contexts/test.xml for an -->
|
158
|
+
<!-- example). -->
|
159
|
+
<!-- =========================================================== -->
|
160
|
+
<Call name="addBean">
|
161
|
+
<Arg>
|
162
|
+
<New class="org.eclipse.jetty.security.HashLoginService">
|
163
|
+
<Set name="name">Test Realm</Set>
|
164
|
+
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
|
165
|
+
<Set name="refreshInterval">0</Set>
|
166
|
+
</New>
|
167
|
+
</Arg>
|
168
|
+
</Call>
|
169
|
+
|
170
|
+
<!-- =========================================================== -->
|
171
|
+
<!-- Configure Request Log -->
|
172
|
+
<!-- Request logs may be configured for the entire server here, -->
|
173
|
+
<!-- or they can be configured for a specific web app in a -->
|
174
|
+
<!-- contexts configuration (see $(jetty.home)/contexts/test.xml -->
|
175
|
+
<!-- for an example). -->
|
176
|
+
<!-- =========================================================== -->
|
177
|
+
<Ref id="RequestLog">
|
178
|
+
<Set name="requestLog">
|
179
|
+
<New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
|
180
|
+
<Set name="filename"><SystemProperty name="jetty.home" default="."/>/logs/yyyy_mm_dd.request.log</Set>
|
181
|
+
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
|
182
|
+
<Set name="retainDays">90</Set>
|
183
|
+
<Set name="append">true</Set>
|
184
|
+
<Set name="extended">false</Set>
|
185
|
+
<Set name="logCookies">false</Set>
|
186
|
+
<Set name="LogTimeZone">GMT</Set>
|
187
|
+
</New>
|
188
|
+
</Set>
|
189
|
+
</Ref>
|
190
|
+
|
191
|
+
<!-- =========================================================== -->
|
192
|
+
<!-- extra options -->
|
193
|
+
<!-- =========================================================== -->
|
194
|
+
<Set name="stopAtShutdown">true</Set>
|
195
|
+
<Set name="sendServerVersion">true</Set>
|
196
|
+
<Set name="sendDateHeader">true</Set>
|
197
|
+
<Set name="gracefulShutdown">1000</Set>
|
198
|
+
|
199
|
+
</Configure>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%
|
2
|
+
@path = '/etc/monit/monit.d/monit-jetty.conf'
|
3
|
+
%>
|
4
|
+
<% PIDFILE = "/var/run/jetty.pid" %>
|
5
|
+
check process jetty with pidfile <%= PIDFILE %>
|
6
|
+
group jetty-<%= RUBBER_ENV %>
|
7
|
+
start program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh start"
|
8
|
+
stop program = "<%= rubber_env.jetty_dir %>/bin/jetty.sh stop"
|
9
|
+
if failed host <%= rubber_env.host %> port <%= rubber_env.jetty_port %> with timeout 10 seconds for 10 cycles then restart
|
@@ -0,0 +1 @@
|
|
1
|
+
description: Jetty HTTP server and servlet container module
|
@@ -8,12 +8,12 @@
|
|
8
8
|
<% PIDFILE = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{PORT}.pid" %>
|
9
9
|
check process mongrel-<%= PORT %> with pidfile <%= PIDFILE %>
|
10
10
|
group mongrel-<%= RUBBER_ENV %>
|
11
|
-
start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH
|
11
|
+
start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::start --clean --only <%= PORT %>'"
|
12
12
|
<%
|
13
13
|
# Stop gracefully - monit waits for stop to complete (since below process exits immediately, it must
|
14
14
|
# wait for pid to disappear) before trying to start
|
15
15
|
%>
|
16
|
-
stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH
|
16
|
+
stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::stop --clean --only <%= PORT %> && sleep 30 && mongrel_rails cluster::stop --clean --force --only <%= PORT %>'"
|
17
17
|
if totalmem > 200.0 MB for 3 cycles then restart
|
18
18
|
<%# monit needs to test on same same interface that mongrel is listening on (see mongrel_cluster.yml) %>
|
19
19
|
if failed host <%= rubber_env.host %> port <%= PORT %> protocol http with timeout 10 seconds for 10 cycles then restart
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<%
|
2
|
+
@path = '/etc/munin/plugin-conf.d/rubber'
|
3
|
+
%>
|
4
|
+
|
5
|
+
# munin-node clears out enviroment variables, so we need to add these in
|
6
|
+
# to make sure we are running the correct ruby (REE vs regular)
|
7
|
+
[*]
|
8
|
+
env.PATH /sbin:/usr/sbin:/usr/local/sbin:<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:/usr/bin:/bin
|
9
|
+
env.RUBYOPT rubygems
|
@@ -43,10 +43,10 @@ source ||= RUBBER_INSTANCES.for_role("mysql_slave").first
|
|
43
43
|
source ||= RUBBER_INSTANCES.for_role("mysql_master").first
|
44
44
|
db_host = source ? source.full_name : 'localhost'
|
45
45
|
|
46
|
-
command = "mysql -u #{
|
47
|
-
command << " --password=#{
|
46
|
+
command = "mysql -u #{RUBBER_CONFIG.db_slave_user}"
|
47
|
+
command << " --password=#{RUBBER_CONFIG.db_pass}"
|
48
48
|
command << " -h #{db_host}"
|
49
|
-
command << " #{
|
49
|
+
command << " #{RUBBER_CONFIG.db_name} --skip-column-names"
|
50
50
|
|
51
51
|
# execute a sql query to get some data
|
52
52
|
data = `echo "#{query}" | #{command}`
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<%
|
2
|
+
@path = "/etc/munin/plugins/passenger_memory_status"
|
3
|
+
@perms = 0755
|
4
|
+
%>#!/usr/bin/env ruby
|
5
|
+
# put in /etc/munin/plugins and restart munin-node
|
6
|
+
# by Dan Manges, http://www.dcmanges.com/blog/rails-application-visualization-with-munin
|
7
|
+
# NOTE: you might need to add munin to allow passwordless sudo for passenger-memory-stats
|
8
|
+
|
9
|
+
def output_config
|
10
|
+
puts <<-END
|
11
|
+
graph_category App
|
12
|
+
graph_title Passenger memory stats
|
13
|
+
graph_vlabel megabytes
|
14
|
+
|
15
|
+
memory.label memory
|
16
|
+
END
|
17
|
+
exit 0
|
18
|
+
end
|
19
|
+
|
20
|
+
def output_values
|
21
|
+
status = `sudo <%= rubber_env.ruby_prefix %>/bin/passenger-memory-stats | tail -1`
|
22
|
+
unless $?.success?
|
23
|
+
$stderr.puts "failed executing passenger-memory-stats"
|
24
|
+
exit 1
|
25
|
+
end
|
26
|
+
status =~ /(\d+\.\d+)/
|
27
|
+
puts "memory.value #{$1}"
|
28
|
+
end
|
29
|
+
|
30
|
+
if ARGV[0] == "config"
|
31
|
+
output_config
|
32
|
+
else
|
33
|
+
output_values
|
34
|
+
end
|
@@ -3,4 +3,5 @@
|
|
3
3
|
@additive = ["# munin passenger start", "# munin passenger end"]
|
4
4
|
%>
|
5
5
|
|
6
|
-
nobody ALL=(ALL) NOPASSWD:
|
6
|
+
nobody ALL=(ALL) NOPASSWD: <%= rubber_env.ruby_prefix %>/bin/passenger-status
|
7
|
+
nobody ALL=(ALL) NOPASSWD: <%= rubber_env.ruby_prefix %>/bin/passenger-memory-stats
|
@@ -1,5 +1,4 @@
|
|
1
1
|
passenger_version: 2.2.5
|
2
|
-
ruby_prefix: "#{use_enterprise_ruby ? '/usr/local' : '/usr'}"
|
3
2
|
passenger_root: "#{ruby_prefix}/lib/ruby/gems/1.8/gems/passenger-#{passenger_version}"
|
4
3
|
passenger_ruby: "#{ruby_prefix}/bin/ruby"
|
5
4
|
passenger_lib: "#{passenger_root}/ext/apache2/mod_passenger.so"
|
@@ -8,7 +8,7 @@ namespace :rubber do
|
|
8
8
|
after "rubber:install_packages", "rubber:redis:custom_install"
|
9
9
|
|
10
10
|
task :custom_install, :roles => :redis do
|
11
|
-
custom_package('http://ftp.us.debian.org/debian/pool/main/r/redis/', 'redis-server', '1.
|
11
|
+
custom_package('http://ftp.us.debian.org/debian/pool/main/r/redis/', 'redis-server', '1.02-1', '! -x /usr/bin/redis-server')
|
12
12
|
end
|
13
13
|
|
14
14
|
desc "Stops the redis server"
|
@@ -5,4 +5,4 @@
|
|
5
5
|
%>
|
6
6
|
|
7
7
|
# backup redis DBs every hour
|
8
|
-
0 * * * * BACKUP_DIR=/mnt/redis_backups BACKUP_NAME=redis BACKUP_CMD="tar -czf
|
8
|
+
0 * * * * BACKUP_DIR=/mnt/redis_backups BACKUP_NAME=redis BACKUP_CMD="tar -czf \%dir\%/redis_\%time_stamp\%.tgz <%= rubber_env.redis_db_dir %>" <%= RUBBER_ROOT %>/script/cron-rake rubber:backup
|
@@ -5,7 +5,7 @@
|
|
5
5
|
%>
|
6
6
|
|
7
7
|
# incremental index once every 10 minutes
|
8
|
-
*/10 * * * * sudo -u
|
8
|
+
*/10 * * * * sudo -u <%= rubber_env.app_user %> <%= RUBBER_ROOT %>/script/cron-rake RUBBER_ENV=<%= RUBBER_ENV %> ts:in:delta
|
9
9
|
|
10
10
|
# full reindex daily at 4:35
|
11
|
-
35 4 * * * sudo -u
|
11
|
+
35 4 * * * sudo -u <%= rubber_env.app_user %> <%= RUBBER_ROOT %>/script/cron-rake RUBBER_ENV=<%= RUBBER_ENV %> ts:index
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
check process sphinx with pidfile <%= RUBBER_ROOT %>/log/searchd.<%= RUBBER_ENV %>.pid
|
6
6
|
group sphinx-<%= RUBBER_ENV %>
|
7
|
-
start program = "/usr/bin/sudo -u rails sh -c 'cd <%= RUBBER_ROOT %> && PATH
|
8
|
-
stop program = "/usr/bin/sudo -u rails sh -c 'cd <%= RUBBER_ROOT %> && PATH
|
7
|
+
start program = "/usr/bin/sudo -u rails sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH RAILS_ENV=<%= RUBBER_ENV %> rake ts:start'"
|
8
|
+
stop program = "/usr/bin/sudo -u rails sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH RAILS_ENV=<%= RUBBER_ENV %> rake ts:stop'"
|
9
9
|
if failed host <%= rubber_env.host %> port 3312 with timeout 5 seconds for 5 cycles then restart
|
10
10
|
|
data/lib/rubber.rb
CHANGED
@@ -14,7 +14,7 @@ module Rubber
|
|
14
14
|
# We actually do NOT want the entire rails environment because it
|
15
15
|
# complicates bootstrap (i.e. can't run config to create db because full
|
16
16
|
# rails env needs db to exist as some plugin accesses model or something)
|
17
|
-
rails_boot_file = File.join(RUBBER_ROOT, 'config', 'boot')
|
17
|
+
rails_boot_file = File.join(RUBBER_ROOT, 'config', 'boot.rb')
|
18
18
|
require(rails_boot_file) if File.exists? rails_boot_file
|
19
19
|
|
20
20
|
if defined?(RAILS_DEFAULT_LOGGER) && RAILS_DEFAULT_LOGGER
|
data/lib/rubber/environment.rb
CHANGED
@@ -79,6 +79,10 @@ module Rubber
|
|
79
79
|
replace(receiver)
|
80
80
|
end
|
81
81
|
|
82
|
+
def rubber_instances
|
83
|
+
@rubber_instances ||= Rubber::Configuration::rubber_instances
|
84
|
+
end
|
85
|
+
|
82
86
|
def [](name)
|
83
87
|
value = super(name)
|
84
88
|
value = global[name] if global && !value
|
@@ -136,10 +140,6 @@ module Rubber
|
|
136
140
|
@full_host ||= "#{host}.#{domain}" rescue nil
|
137
141
|
end
|
138
142
|
|
139
|
-
def rubber_instances
|
140
|
-
@rubber_instances ||= Rubber::Configuration::rubber_instances
|
141
|
-
end
|
142
|
-
|
143
143
|
# Forces role/host overrides into config
|
144
144
|
def bind_config(global)
|
145
145
|
global = global.clone()
|
@@ -89,6 +89,8 @@ namespace :rubber do
|
|
89
89
|
rubber_instances.save()
|
90
90
|
logger.info "Roles for #{instance_alias} are now:"
|
91
91
|
logger.info instance.role_names.sort.join("\n")
|
92
|
+
logger.info ''
|
93
|
+
logger.info "Run 'cap rubber:bootstrap' if done adding roles"
|
92
94
|
end
|
93
95
|
|
94
96
|
desc <<-DESC
|
@@ -105,8 +105,8 @@ namespace :rubber do
|
|
105
105
|
slices = []
|
106
106
|
servers.each do |rolename, svrs|
|
107
107
|
next if svrs.size == 0
|
108
|
-
# figure out size of each slice by
|
109
|
-
slice_size = svrs.size / (options.delete(:groups) || 2)
|
108
|
+
# figure out size of each slice by dividing server count by # of groups
|
109
|
+
slice_size = (Float(svrs.size) / (options.delete(:groups) || 2)).round
|
110
110
|
slice_size = 1 if slice_size == 0
|
111
111
|
slice_idx = 0
|
112
112
|
svrs.each_slice(slice_size) do |srv_slice|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Conway
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-13 00:00:00 -05:00
|
13
13
|
default_executable: vulcanize
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -104,7 +104,7 @@ files:
|
|
104
104
|
- generators/vulcanize/templates/base/config/deploy.rb
|
105
105
|
- generators/vulcanize/templates/base/config/rubber/common/crontab
|
106
106
|
- generators/vulcanize/templates/base/config/rubber/common/monit-postfix.conf
|
107
|
-
- generators/vulcanize/templates/base/config/rubber/common/profile
|
107
|
+
- generators/vulcanize/templates/base/config/rubber/common/rubber.profile
|
108
108
|
- generators/vulcanize/templates/base/config/rubber/deploy-setup.rb
|
109
109
|
- generators/vulcanize/templates/base/config/rubber/rubber-dns.yml
|
110
110
|
- generators/vulcanize/templates/base/config/rubber/rubber.yml
|
@@ -137,6 +137,11 @@ files:
|
|
137
137
|
- generators/vulcanize/templates/haproxy/config/rubber/role/web_tools/haproxy-nginx.conf
|
138
138
|
- generators/vulcanize/templates/haproxy/config/rubber/rubber-haproxy.yml
|
139
139
|
- generators/vulcanize/templates/haproxy/templates.yml
|
140
|
+
- generators/vulcanize/templates/jetty/config/rubber/deploy-jetty.rb
|
141
|
+
- generators/vulcanize/templates/jetty/config/rubber/role/jetty/jetty.xml
|
142
|
+
- generators/vulcanize/templates/jetty/config/rubber/role/jetty/monit-jetty.conf
|
143
|
+
- generators/vulcanize/templates/jetty/config/rubber/rubber-jetty.yml
|
144
|
+
- generators/vulcanize/templates/jetty/templates.yml
|
140
145
|
- generators/vulcanize/templates/memcached/config/memcached.yml
|
141
146
|
- generators/vulcanize/templates/memcached/config/rubber/common/memcached.yml
|
142
147
|
- generators/vulcanize/templates/memcached/config/rubber/role/memcached/memcached.conf
|
@@ -158,6 +163,7 @@ files:
|
|
158
163
|
- generators/vulcanize/templates/monit/templates.yml
|
159
164
|
- generators/vulcanize/templates/munin/config/rubber/common/monit-munin.conf
|
160
165
|
- generators/vulcanize/templates/munin/config/rubber/common/munin-node.conf
|
166
|
+
- generators/vulcanize/templates/munin/config/rubber/common/munin-plugins.conf
|
161
167
|
- generators/vulcanize/templates/munin/config/rubber/deploy-munin.rb
|
162
168
|
- generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-nginx.conf
|
163
169
|
- generators/vulcanize/templates/munin/config/rubber/role/web_tools/munin-plugins.conf
|
@@ -200,6 +206,7 @@ files:
|
|
200
206
|
- generators/vulcanize/templates/nginx/config/rubber/rubber-nginx.yml
|
201
207
|
- generators/vulcanize/templates/nginx/templates.yml
|
202
208
|
- generators/vulcanize/templates/passenger/config/rubber/deploy-passenger.rb
|
209
|
+
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-memory.conf
|
203
210
|
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger-sudoers.conf
|
204
211
|
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/munin-passenger.conf
|
205
212
|
- generators/vulcanize/templates/passenger/config/rubber/role/passenger/passenger-apache-vhost.conf
|
@@ -1,9 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
@path = "/root/.profile"
|
3
|
-
@additive = ["# rubber-common-start", "# rubber-common-end"]
|
4
|
-
%>
|
5
|
-
|
6
|
-
# convenience to simply running rails console, etc with correct env
|
7
|
-
export RUBBER_ENV=<%= RUBBER_ENV %>
|
8
|
-
export RAILS_ENV=<%= RUBBER_ENV %>
|
9
|
-
alias current="cd <%= RUBBER_ROOT %>"
|