capitate 0.1.7
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/Capfile +24 -0
- data/History.txt +22 -0
- data/License.txt +20 -0
- data/Manifest.txt +100 -0
- data/README.txt +1 -0
- data/Rakefile +4 -0
- data/bin/capitate +46 -0
- data/config/hoe.rb +70 -0
- data/config/requirements.rb +17 -0
- data/lib/capitate/cap_ext/connections.rb +95 -0
- data/lib/capitate/cap_ext/extension_proxy.rb +15 -0
- data/lib/capitate/cap_ext/variables.rb +59 -0
- data/lib/capitate/config.rb +106 -0
- data/lib/capitate/plugins/base.rb +85 -0
- data/lib/capitate/plugins/gem.rb +25 -0
- data/lib/capitate/plugins/package.rb +30 -0
- data/lib/capitate/plugins/profiles.rb +33 -0
- data/lib/capitate/plugins/script.rb +118 -0
- data/lib/capitate/plugins/templates.rb +98 -0
- data/lib/capitate/plugins/wget.rb +23 -0
- data/lib/capitate/plugins/yum.rb +87 -0
- data/lib/capitate/recipes.rb +9 -0
- data/lib/capitate/version.rb +9 -0
- data/lib/capitate.rb +32 -0
- data/lib/doc/centos/memcached.yml +18 -0
- data/lib/doc/centos/mongrel_cluster.yml +11 -0
- data/lib/doc/centos/monit.yml +12 -0
- data/lib/doc/centos/mysql.yml +6 -0
- data/lib/doc/centos/nginx.yml +25 -0
- data/lib/doc/centos/sphinx.yml +14 -0
- data/lib/doc/gems.yml +7 -0
- data/lib/doc/install.yml +11 -0
- data/lib/doc/memcached.yml +13 -0
- data/lib/doc/mongrel_cluster.yml +12 -0
- data/lib/doc/mysql.yml +46 -0
- data/lib/doc/nginx.yml +23 -0
- data/lib/doc/packages.yml +17 -0
- data/lib/doc/rails.yml +15 -0
- data/lib/profiles/centos-sick.rb +114 -0
- data/lib/recipes/README +5 -0
- data/lib/recipes/centos/README +3 -0
- data/lib/recipes/centos/centos.rb +44 -0
- data/lib/recipes/centos/imagemagick.rb +19 -0
- data/lib/recipes/centos/memcached.rb +31 -0
- data/lib/recipes/centos/mongrel_cluster.rb +34 -0
- data/lib/recipes/centos/monit.rb +42 -0
- data/lib/recipes/centos/mysql.rb +25 -0
- data/lib/recipes/centos/nginx.rb +45 -0
- data/lib/recipes/centos/ruby.rb +37 -0
- data/lib/recipes/centos/sphinx.rb +49 -0
- data/lib/recipes/deploy.rb +18 -0
- data/lib/recipes/gems.rb +11 -0
- data/lib/recipes/install.rb +18 -0
- data/lib/recipes/memcached.rb +14 -0
- data/lib/recipes/mongrel_cluster.rb +33 -0
- data/lib/recipes/mysql.rb +33 -0
- data/lib/recipes/nginx.rb +40 -0
- data/lib/recipes/packages.rb +24 -0
- data/lib/recipes/rails.rb +20 -0
- data/lib/recipes/sphinx.rb +38 -0
- data/lib/templates/capistrano/Capfile +26 -0
- data/lib/templates/centos/setup_for_web.sh +17 -0
- data/lib/templates/centos/sudoers +95 -0
- data/lib/templates/memcached/memcached.initd.centos.erb +70 -0
- data/lib/templates/memcached/memcached.monitrc.erb +4 -0
- data/lib/templates/mongrel/mongrel_cluster.initd.erb +61 -0
- data/lib/templates/mongrel/mongrel_cluster.monitrc.erb +15 -0
- data/lib/templates/mongrel/mongrel_cluster.yml.erb +10 -0
- data/lib/templates/monit/cert.sh +14 -0
- data/lib/templates/monit/monit.cnf +34 -0
- data/lib/templates/monit/monit.initd.centos.erb +68 -0
- data/lib/templates/monit/monitrc.erb +28 -0
- data/lib/templates/monit/patch_inittab.sh +15 -0
- data/lib/templates/mysql/install_db.sql.erb +7 -0
- data/lib/templates/mysql/mysql.monitrc.erb +6 -0
- data/lib/templates/nginx/nginx.conf.erb +88 -0
- data/lib/templates/nginx/nginx.initd.erb +62 -0
- data/lib/templates/nginx/nginx.monitrc.erb +4 -0
- data/lib/templates/nginx/nginx_vhost.conf.erb +95 -0
- data/lib/templates/rails/database.yml.erb +42 -0
- data/lib/templates/ruby/fix_openssl.sh +12 -0
- data/lib/templates/sphinx/sphinx.conf.erb +498 -0
- data/lib/templates/sphinx/sphinx.monitrc.erb +4 -0
- data/lib/templates/sphinx/sphinx_app.initd.centos.erb +67 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +74 -0
- data/setup.rb +1585 -0
- data/tasks/capitate.rake +10 -0
- data/tasks/deployment.rake +34 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +17 -0
- data/test/test_helper.rb +2 -0
- data/test/test_recipes.rb +11 -0
- data/test/test_templates.rb +29 -0
- data/website/index.html +161 -0
- data/website/index.txt +86 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +138 -0
- data/website/template.rhtml +48 -0
- metadata +160 -0
data/tasks/capitate.rake
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
desc 'Release the website and new gem version'
|
|
2
|
+
task :deploy => [:check_version, :website, :release] do
|
|
3
|
+
puts "Remember to create SVN tag:"
|
|
4
|
+
puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
|
|
5
|
+
"svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
|
|
6
|
+
puts "Suggested comment:"
|
|
7
|
+
puts "Tagging release #{CHANGES}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
|
|
11
|
+
task :local_deploy => [:website_generate, :install_gem]
|
|
12
|
+
|
|
13
|
+
task :check_version do
|
|
14
|
+
unless ENV['VERSION']
|
|
15
|
+
puts 'Must pass a VERSION=x.y.z release version'
|
|
16
|
+
exit
|
|
17
|
+
end
|
|
18
|
+
unless ENV['VERSION'] == VERS
|
|
19
|
+
puts "Please update your version.rb to match the release version, currently #{VERS}"
|
|
20
|
+
exit
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
|
25
|
+
task :install_gem_no_doc => [:clean, :package] do
|
|
26
|
+
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
namespace :manifest do
|
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
|
31
|
+
task :refresh do
|
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
|
33
|
+
end
|
|
34
|
+
end
|
data/tasks/website.rake
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
desc 'Generate website files'
|
|
2
|
+
task :website_generate => :ruby_env do
|
|
3
|
+
(Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
|
|
4
|
+
sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
|
|
5
|
+
end
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
desc 'Upload website files to rubyforge'
|
|
9
|
+
task :website_upload do
|
|
10
|
+
host = "#{rubyforge_username}@rubyforge.org"
|
|
11
|
+
remote_dir = "/var/www/gforge-projects/#{PATH}/"
|
|
12
|
+
local_dir = 'website'
|
|
13
|
+
sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
desc 'Generate and upload website files'
|
|
17
|
+
task :website => [:website_generate, :website_upload, :publish_docs]
|
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestTemplates < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
TmpDir = File.dirname(__FILE__) + "/tmp"
|
|
6
|
+
|
|
7
|
+
def setup
|
|
8
|
+
FileUtils.mkdir(TmpDir)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def teardown
|
|
12
|
+
FileUtils.rm_rf(TmpDir)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_write
|
|
16
|
+
TemplatesPlugin.write("capistrano/Capfile", "#{TmpDir}/Capfile")
|
|
17
|
+
|
|
18
|
+
lines = ""
|
|
19
|
+
File.open("#{TmpDir}/Capfile") { |f| lines = f.readlines }
|
|
20
|
+
assert lines.length > 0
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class TemplatesPlugin
|
|
26
|
+
class << self
|
|
27
|
+
include Capitate::Plugins::Templates
|
|
28
|
+
end
|
|
29
|
+
end
|
data/website/index.html
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<link rel="stylesheet" href="stylesheets/screen.css" type="text/css" media="screen" />
|
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
7
|
+
<title>
|
|
8
|
+
Capistrano plugins, recipes and templates
|
|
9
|
+
</title>
|
|
10
|
+
<script src="javascripts/rounded_corners_lite.inc.js" type="text/javascript"></script>
|
|
11
|
+
<style>
|
|
12
|
+
|
|
13
|
+
</style>
|
|
14
|
+
<script type="text/javascript">
|
|
15
|
+
window.onload = function() {
|
|
16
|
+
settings = {
|
|
17
|
+
tl: { radius: 10 },
|
|
18
|
+
tr: { radius: 10 },
|
|
19
|
+
bl: { radius: 10 },
|
|
20
|
+
br: { radius: 10 },
|
|
21
|
+
antiAlias: true,
|
|
22
|
+
autoPad: true,
|
|
23
|
+
validTags: ["div"]
|
|
24
|
+
}
|
|
25
|
+
var versionBox = new curvyCorners(settings, document.getElementById("version"));
|
|
26
|
+
versionBox.applyCornersToAll();
|
|
27
|
+
}
|
|
28
|
+
</script>
|
|
29
|
+
</head>
|
|
30
|
+
<body>
|
|
31
|
+
<div id="main">
|
|
32
|
+
|
|
33
|
+
<h1>Capistrano plugins, recipes and templates</h1>
|
|
34
|
+
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/capitate"; return false'>
|
|
35
|
+
<p>Get Version</p>
|
|
36
|
+
<a href="http://rubyforge.org/projects/capitate" class="numbers">0.1.7</a>
|
|
37
|
+
</div>
|
|
38
|
+
<h1>→ ‘capitate’</h1>
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
<h2>What</h2>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
<p>Capistrano plugins, recipes and templates.</p>
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
<h2>Installing</h2>
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
<p><pre class='syntax'><span class="ident">sudo</span> <span class="ident">gem</span> <span class="ident">install</span> <span class="ident">capitate</span></pre></p>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
<p>Create a Capfile (in your project):</p>
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
<p><pre class='syntax'><span class="ident">capitate</span></pre></p>
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
<p>Create and set a profile in you Capfile:</p>
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
<p><pre class='syntax'><span class="comment"># load "config/deployment/centos-sick.rb"</span></pre></p>
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
<p><em>See profiles section below for more info</em></p>
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
<h2>The basics</h2>
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
<p>Capitate has recipes for:</p>
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
<ul>
|
|
75
|
+
<li>Installing applications, via package manager or manually building with make.</li>
|
|
76
|
+
<li>Common deployment setup and update_code tasks, such as symlinking in database.yml and more advanced recipes such as sphinx configuration.</li>
|
|
77
|
+
<li><span class="caps">ERB</span> templates for application configuration files, init scripts, monit configuration, etc.</li>
|
|
78
|
+
<li>And more…</li>
|
|
79
|
+
</ul>
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
<h3>Profiles</h3>
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
<p>Profiles are capfiles which store lists of recipes to run for cap install and deploy and settings for those recipes.</p>
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
<p>For an example profile, see <a href="http://svn.ducktyper.com/capitate/trunk/lib/profiles/centos-sick.rb">centos-sick.rb</a></p>
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
<p><span class="caps">TODO</span>: More on profiles…</p>
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
<h3>Install recipes</h3>
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
<p>To install a group of applications based on a profile (see Profiles section below):</p>
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
<pre><code>cap install</code></pre>
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
<p><em>You may need to comment out “Defaults requiretty” in /etc/sudoders on the image before capistrano recipes will work.</em></p>
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
<h3>Deploying (application)</h3>
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
<p>If this is the first time you’ve deployed you’ll need to run:</p>
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
<pre><code>cap deploy:setup</code></pre>
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
<p>Otherwise, your standard deploy options:</p>
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
<pre><code>cap deploy</code></pre>
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
<pre><code>cap deploy:migrations (deploys and does migration)</code></pre>
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
<pre><code>cap deploy:migrate (only does migration on existing deployment)</code></pre>
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
<h2>Forum</h2>
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
<p><a href="http://groups.google.com/group/capitate">http://groups.google.com/group/capitate</a></p>
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
<h2>How to submit patches</h2>
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
<p>Read the <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/">8 steps for fixing other people’s code</a> and for section <a href="http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups">8b: Submit patch to Google Groups</a>, use the Google Group above.</p>
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
<p>The trunk repository is <code>http://svn.ducktyper.com/var/svn/capitate/trunk</code> for anonymous access.</p>
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
<h2>License</h2>
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
<p>This code is free to use under the terms of the <span class="caps">MIT</span> license.</p>
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
<h2>Contact</h2>
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
<p>Comments are welcome. Send an email to <a href="mailto:gabrielh@gmail.com">Gabriel Handford</a> via the <a href="http://groups.google.com/group/capitate">forum</a></p>
|
|
152
|
+
<p class="coda">
|
|
153
|
+
<a href="FIXME email">Gabriel Handford</a>, 21st February 2008<br>
|
|
154
|
+
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
|
155
|
+
</p>
|
|
156
|
+
</div>
|
|
157
|
+
|
|
158
|
+
<!-- insert site tracking codes here, like Google Urchin -->
|
|
159
|
+
|
|
160
|
+
</body>
|
|
161
|
+
</html>
|
data/website/index.txt
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
h1. Capistrano plugins, recipes and templates
|
|
2
|
+
|
|
3
|
+
h1. → 'capitate'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
h2. What
|
|
7
|
+
|
|
8
|
+
Capistrano plugins, recipes and templates.
|
|
9
|
+
|
|
10
|
+
h2. Installing
|
|
11
|
+
|
|
12
|
+
<pre syntax="ruby">sudo gem install capitate</pre>
|
|
13
|
+
|
|
14
|
+
Create a Capfile (in your project):
|
|
15
|
+
|
|
16
|
+
<pre syntax="ruby">capitate</pre>
|
|
17
|
+
|
|
18
|
+
Create and set a profile in you Capfile:
|
|
19
|
+
|
|
20
|
+
<pre syntax="ruby"># load "config/deployment/centos-sick.rb"</pre>
|
|
21
|
+
|
|
22
|
+
<em>See profiles section below for more info</em>
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
h2. The basics
|
|
26
|
+
|
|
27
|
+
Capitate has recipes for:
|
|
28
|
+
|
|
29
|
+
* Installing applications, via package manager or manually building with make.
|
|
30
|
+
* Common deployment setup and update_code tasks, such as symlinking in database.yml and more advanced recipes such as sphinx configuration.
|
|
31
|
+
* ERB templates for application configuration files, init scripts, monit configuration, etc.
|
|
32
|
+
* And more...
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
h3. Profiles
|
|
36
|
+
|
|
37
|
+
Profiles are capfiles which store lists of recipes to run for cap install and deploy and settings for those recipes.
|
|
38
|
+
|
|
39
|
+
For an example profile, see "centos-sick.rb":http://svn.ducktyper.com/capitate/trunk/lib/profiles/centos-sick.rb
|
|
40
|
+
|
|
41
|
+
TODO: More on profiles...
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
h3. Install recipes
|
|
45
|
+
|
|
46
|
+
To install a group of applications based on a profile (see Profiles section below):
|
|
47
|
+
|
|
48
|
+
cap install
|
|
49
|
+
|
|
50
|
+
<em>You may need to comment out "Defaults requiretty" in /etc/sudoders on the image before capistrano recipes will work.</em>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
h3. Deploying (application)
|
|
54
|
+
|
|
55
|
+
If this is the first time you've deployed you'll need to run:
|
|
56
|
+
|
|
57
|
+
cap deploy:setup
|
|
58
|
+
|
|
59
|
+
Otherwise, your standard deploy options:
|
|
60
|
+
|
|
61
|
+
cap deploy
|
|
62
|
+
|
|
63
|
+
cap deploy:migrations (deploys and does migration)
|
|
64
|
+
|
|
65
|
+
cap deploy:migrate (only does migration on existing deployment)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
h2. Forum
|
|
70
|
+
|
|
71
|
+
"http://groups.google.com/group/capitate":http://groups.google.com/group/capitate
|
|
72
|
+
|
|
73
|
+
h2. How to submit patches
|
|
74
|
+
|
|
75
|
+
Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/ and for section "8b: Submit patch to Google Groups":http://drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/#8b-google-groups, use the Google Group above.
|
|
76
|
+
|
|
77
|
+
The trunk repository is <code>http://svn.ducktyper.com/var/svn/capitate/trunk</code> for anonymous access.
|
|
78
|
+
|
|
79
|
+
h2. License
|
|
80
|
+
|
|
81
|
+
This code is free to use under the terms of the MIT license.
|
|
82
|
+
|
|
83
|
+
h2. Contact
|
|
84
|
+
|
|
85
|
+
Comments are welcome. Send an email to "Gabriel Handford":mailto:gabrielh@gmail.com via the "forum":http://groups.google.com/group/capitate
|
|
86
|
+
|