fpauser-vlad 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.autotest ADDED
@@ -0,0 +1,25 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/restart'
4
+ require 'autotest/rcov'
5
+
6
+ Autotest.add_hook :initialize do |at|
7
+ at.testlib = "minitest/autorun"
8
+ # at.extra_files << "../some/external/dependency.rb"
9
+ #
10
+ at.libs << ":../../rake-remote_task/dev/lib"
11
+ #
12
+ # at.add_exception 'vendor'
13
+ #
14
+ # at.add_mapping(/dependency.rb/) do |f, _|
15
+ # at.files_matching(/test_.*rb$/)
16
+ # end
17
+ #
18
+ # %w(TestA TestB).each do |klass|
19
+ # at.extra_class_map[klass] = "test/test_misc.rb"
20
+ # end
21
+ end
22
+
23
+ # Autotest.add_hook :run_command do |at|
24
+ # system "rake build"
25
+ # end
data/Gemfile ADDED
@@ -0,0 +1 @@
1
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,21 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fpauser-vlad (2.2.0)
5
+ fpauser-rake-remote_task (>= 2.0.3)
6
+ open4 (>= 0.9.0)
7
+ rake (>= 0.8.0)
8
+
9
+ GEM
10
+ specs:
11
+ fpauser-rake-remote_task (2.0.3)
12
+ open4 (>= 0.9.0)
13
+ rake (>= 0.8.0)
14
+ open4 (0.9.6)
15
+ rake (0.9.2)
16
+
17
+ PLATFORMS
18
+ ruby
19
+
20
+ DEPENDENCIES
21
+ fpauser-vlad!
data/History.txt ADDED
@@ -0,0 +1,206 @@
1
+ === 2.2.0 / 2011-02-18
2
+
3
+ * 5 minor enhancements:
4
+
5
+ * Added support for setting owner and group of deploy. (RichGuk)
6
+ * Allow shared_paths, mkdirs, and symlinks to be excluded (RichGuk/zaius)
7
+ * Cleaned up update task to correspond to rake-remote-task changes. (RichGuk)
8
+ * Do not run symlink commands if there are no operations to run. (jsmecham)
9
+ * Obey the umask across the board. (RichGuk)
10
+
11
+ * 2 bug fixes:
12
+
13
+ * Fixed migrate task shell cmd. (cheba)
14
+ * Fixed passenger touch file location. (richinsr)
15
+
16
+ === 2.1.0 / 2010-07-15
17
+
18
+ * 1 major enhancement:
19
+
20
+ * Split out rake_remote_task.rb and vlad_test_case.rb (in rake-remote_task gem).
21
+
22
+ * 4 minor enhancements:
23
+
24
+ * Added :type config option, defaulting to rails
25
+ * Moved VladTestCase to Rake::TestCase (in rake-remote_task gem).
26
+ * Moved all Vlad exceptions to Rake (in rake-remote_task gem).
27
+ * Refactored rails specific values out of core. (raggi)
28
+
29
+ * 2 bug fixes:
30
+
31
+ * Clarified Rake.clear_tasks in faq
32
+ * Fixed output from vlad:invoke (pnc)
33
+
34
+ === 2.0.0 / 2009-08-18
35
+
36
+ * 1 major enhancement:
37
+
38
+ * Removed all extra modules that we don't support in core anymore.
39
+
40
+ * 2 minor enhancements:
41
+
42
+ * Added test to show that false is a valid variable value.
43
+ * Moved vlad_test_case from test to lib to support 3rd party vlad modules.
44
+
45
+ === 1.4.0 / 2009-06-23
46
+
47
+ * 1 major enhancement:
48
+
49
+ * Switched to passenger as default app server.
50
+
51
+ * 11 minor enhancements:
52
+
53
+ * #rsync now takes ANY number of arguments and expects to you add "host:".
54
+ * Added Rake::RemoteTask#get.
55
+ * Added doco for why we don't ship a deploy task
56
+ * Added links to example maintenance recipes
57
+ * Added multi-env doco to getting_started.txt
58
+ * Added svn-over-ssh faq item. gah.
59
+ * Flipped tests to minitest
60
+ * Merged global #role and Rake::RemoteTask::role.
61
+ * Moved all global methods to Rake::RemoteTask and wrote #external to clean up.
62
+ * Moved rake extensions to hoe so everyone can enjoy the fun.
63
+ * put names the tempfile based on the remote path to ease debugging
64
+
65
+ * 2 bug fixes:
66
+
67
+ * passenger:start_app wasn't using the latest_release path
68
+ * set/fetch wasn't dealing with a default of false well. (Seth Falcon)
69
+
70
+ === 1.3.2 / 2009-03-16
71
+
72
+ * 3 minor enhancements:
73
+
74
+ * Added 'Deploying Merb with Vlad' by Graham Ashton.
75
+ * Added 'Deploying Sinatra with Vlad' by Graham Ashton.
76
+ * Core update task calls update with the actual revision once again
77
+
78
+ * 1 bug fix:
79
+
80
+ * Fix Git checkout/export methods. (Wilson)
81
+
82
+ === 1.3.1 / 2009-03-06
83
+
84
+ * 4 minor enhancements:
85
+
86
+ * Added faq on how to clear/replace tasks. (mikehale)
87
+ * Added sudo_prompt variable.
88
+ * Added top level sudo method to compliment run. (woahdae)
89
+ * Set sudo_flags to default to ['-p Password:']. (mly)
90
+
91
+ * 3 bug fixes:
92
+
93
+ * Fixed prompts during rollback. (goodieboy)
94
+ * deploy_via went AWOL in subversion module.
95
+ * vlad:migrate ignored migrate_target directory. (tomklaasen)
96
+
97
+ === 1.3.0 / 2009-03-04
98
+
99
+ * 9 major enhancements:
100
+
101
+ * Added darcs support. (Brian Palmer)
102
+ * Added git support. (Garry Dolley)
103
+ * Added lighttpd support.
104
+ * Added merb support. (Jamie Macey)
105
+ * Added passenger support. (Alan Harper)
106
+ * Added/merged god, nginx, thin, and maintenance tasks. (github clusterfuck)
107
+ * Allow set to specify that a proc value is :per_thread.
108
+ * Apply Mercurial SCM support patch. Closes ticket 13475
109
+ * remote_task now supports args and supplies task (by Daniel P. Kionka).
110
+
111
+ * 19 minor enhancements:
112
+
113
+ * Add role toplevel method similar to namespace.
114
+ * Added #put method that wraps up Tempfile/rsync pattern.
115
+ * Added #role toplevel method, similar to #namespace.
116
+ * Added FAQ for using vlad through a gateway.
117
+ * Added Phil Hagelburg's one-line multi-stage deployment patch
118
+ * Added rake tracing for rsync command.
119
+ * Added umask variable.
120
+ * Adds specific order to loading. Should fix a number of bugs.
121
+ * Extended vladdemo.sh to allow for N simulated hosts (mostly for testing)
122
+ * Fixed tempfile dependency in #put if you don't load lighttpd or perforce (yipstar)
123
+ * Mercurial now automatically initializes the repository. (Jamie Macey)
124
+ * Moved everything over to put.
125
+ * Now requires rake 0.8.1+.
126
+ * Parameterized 'head' into 'revision' variable (with head as default).
127
+ * Split shared symlink creation to a separate task. (Steve Purcell)
128
+ * Support rake 0.8.
129
+ * Switched to ThreadGroup for Action#execute
130
+ * Updated rakefile for new hoe abilities
131
+ * remote_task :role now allows an empty list of hosts.
132
+
133
+ * 11 bug fixes:
134
+
135
+ * Fixed vladdemo.rb, now uses my checkout for further stress testing.
136
+ * Moved core recipe to front. Was breaking mongrel setup.
137
+ * Added automatic client setup for perforce.
138
+ * Fix mercurial support.
139
+ * Fixed 'too many files' error.
140
+ * Fixed a lame warning in the tests.
141
+ * Fixed cleanup to actually properly clean up.
142
+ * Fixed rake var doco
143
+ * Moved generic app setup to core from mongrel.
144
+ * SSH flags are now an Array for proper inclusion in the command. (Guillaume Pierronnet)
145
+ * git archive now specifically specifies tar format. (knaveofdiamonds)
146
+
147
+ === 1.1.1 / 2008-01-14
148
+
149
+ * 5 major enhancements:
150
+
151
+ * Support for Rake 0.8. Should still work for Rake 0.7.
152
+ * Added git support (contributed by Garry Dolley).
153
+ * Reviewed for accuracy by Evan Phoenix.
154
+ * Added lighttpd.rb
155
+ * Added automatic client setup for perforce.
156
+ * Added mercurial SCM support patch. Closes ticket 13475.
157
+
158
+ * 6 minor enhancements:
159
+
160
+ * Added #put method that wraps up Tempfile/rsync pattern.
161
+ * Added automatic p4 client setup for perforce.
162
+ * Added vladdemo.sh
163
+ * Moved everything over to put.
164
+ * Moved generic app setup to core from mongrel.
165
+ * Parameterized 'head' into 'revision' variable (with head as default).
166
+
167
+ * 1 bug fix
168
+
169
+ * Fixed cleanup to actually properly clean up.
170
+
171
+ === 1.1.0 / 2007-09-12
172
+
173
+ * 3 major enhancements:
174
+
175
+ * Vlad.load now takes a hash of recipe overrides, eg: Vlad.load :web => :nginx.
176
+ See rdoc for defaults.
177
+ * Removed vlad_tasks.rb and split into vlad/apache.rb, vlad/mongrel.rb,
178
+ and vlad/core.rb.
179
+ * The flog ratio between capistrano+deps / vlad+deps is pi (or, damn close)!
180
+
181
+ * 12 minor enhancements:
182
+
183
+ * Added $TRACE to make it more available and cleaner to read.
184
+ * Added :svn_cmd variable.
185
+ * Added Rake.clear_tasks *str_or_regexp
186
+ * Added debug and mana_from_heaven tasks to Rakefile.
187
+ * Added more documentation.
188
+ * Added :rsync_cmd and :rsync_flags.
189
+ * Added :ssh_cmd and :ssh_flags.
190
+ * Added variable expansion to vlad:debug task.
191
+ * Removed :scm variable. Now a Vlad.load component/flavor/need-a-word-here.
192
+ * Removed :application var. Use it if you want it. We don't require it.
193
+ * Renamed :p4cmd to :p4_cmd.
194
+ * Renamed :rake var to :rake_cmd.
195
+
196
+ * 2 (important) bug fixes:
197
+
198
+ * HUGE: Fixed sudo hang bug #13072. Fix suggested by Chris Van Pelt.
199
+ * HUGE: Vlad.load calls user config last, allowing variable overrides.
200
+ ACK! Sorry!
201
+
202
+ === 1.0.0 / 2007-08-04
203
+
204
+ * 1 major enhancement
205
+
206
+ * Birthday!
data/Manifest.txt ADDED
@@ -0,0 +1,23 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ considerations.txt
7
+ doco/deploying-merb-with-vlad.txt
8
+ doco/deploying-sinatra-with-vlad.txt
9
+ doco/faq.txt
10
+ doco/getting_started.txt
11
+ doco/migration.txt
12
+ doco/perforce.txt
13
+ doco/variables.txt
14
+ lib/vlad.rb
15
+ lib/vlad/apache.rb
16
+ lib/vlad/core.rb
17
+ lib/vlad/maintenance.rb
18
+ lib/vlad/passenger.rb
19
+ lib/vlad/rails.rb
20
+ lib/vlad/subversion.rb
21
+ test/test_vlad.rb
22
+ test/test_vlad_subversion.rb
23
+ vladdemo.sh
data/README.txt ADDED
@@ -0,0 +1,78 @@
1
+ = Vlad the Deployer by the Ruby Hit Squad
2
+
3
+ * http://rubyhitsquad.com/
4
+ * http://rubyforge.org/projects/hitsquad/
5
+
6
+ == DESCRIPTION
7
+
8
+ Vlad the Deployer is pragmatic application deployment automation,
9
+ without mercy. Much like Capistrano, but with 1/10th the
10
+ complexity. Vlad integrates seamlessly with Rake, and uses familiar
11
+ and standard tools like ssh and rsync.
12
+
13
+ Impale your application on the heartless spike of the Deployer.
14
+
15
+ == FEATURES/PROBLEMS
16
+
17
+ * Full deployment automation stack.
18
+ * Turnkey deployment for mongrel+apache+svn.
19
+ * Supports single server deployment with just 3 variables defined.
20
+ * Built on rake. Easy. Engine is small.
21
+ * Very few dependencies. All simple.
22
+ * Uses ssh with your ssh settings already in place.
23
+ * Uses rsync for efficient transfers.
24
+ * Run remote commands on one or more servers.
25
+ * Mix and match local and remote tasks.
26
+ * Compatible with all of your tab completion shell script rake-tastic goodness.
27
+ * Ships with tests that actually pass in 0.028 seconds!
28
+ * Does NOT support Windows right now (we think). Coming soon in 1.2.
29
+
30
+ == SYNOPSIS
31
+
32
+ % rake vlad:setup # first time only
33
+ % rake vlad:update
34
+ % rake vlad:migrate # optional
35
+ % rake vlad:start
36
+
37
+ == REQUIREMENTS
38
+
39
+ * Rake
40
+ * Hoe
41
+ * Rubyforge
42
+ * open4
43
+
44
+ == INSTALL
45
+
46
+ * sudo gem install vlad
47
+
48
+ == SPECIAL THANKS
49
+
50
+ * First, of course, to Capistrano. For coming up with the idea and
51
+ providing a lot of meat for the recipes.
52
+ * Scott Baron for coming up with one of the best project names evar.
53
+ * Bradley Taylor for giving us permission to use RailsMachine recipes sans-LGPL.
54
+
55
+ == LICENSE
56
+
57
+ (The MIT License)
58
+
59
+ Copyright (c) 2007-2009 Ryan Davis and the rest of the Ruby Hit Squad
60
+
61
+ Permission is hereby granted, free of charge, to any person obtaining
62
+ a copy of this software and associated documentation files (the
63
+ 'Software'), to deal in the Software without restriction, including
64
+ without limitation the rights to use, copy, modify, merge, publish,
65
+ distribute, sublicense, and/or sell copies of the Software, and to
66
+ permit persons to whom the Software is furnished to do so, subject to
67
+ the following conditions:
68
+
69
+ The above copyright notice and this permission notice shall be
70
+ included in all copies or substantial portions of the Software.
71
+
72
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
73
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
74
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
75
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
76
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
77
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
78
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,37 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ Hoe.plugin :seattlerb
7
+
8
+ Hoe.add_include_dirs "../../rake-remote_task/dev/lib"
9
+
10
+ Hoe.spec 'vlad' do
11
+ self.rubyforge_name = 'hitsquad'
12
+
13
+ developer 'Ryan Davis', 'ryand-ruby@zenspider.com'
14
+ developer 'Eric Hodel', 'drbrain@segment7.net'
15
+ developer 'Wilson Bilkovich', 'wilson@supremetyrant.com'
16
+
17
+ extra_deps << ['rake', '~> 0.8.0']
18
+ extra_deps << ['rake-remote_task', '~> 2.0']
19
+ extra_deps << ['open4', '~> 0.9.0']
20
+
21
+ # TODO: remove 1.9
22
+ multiruby_skip << "1.9" << "rubinius"
23
+ end
24
+
25
+ desc "quick little hack to see what the state of the nation looks like"
26
+ task :debug do
27
+ $: << 'lib'
28
+ require 'vlad'
29
+ Vlad.load :config => "lib/vlad/subversion.rb"
30
+ set :repository, "repository path"
31
+ set :deploy_to, "deploy path"
32
+ set :domain, "server domain"
33
+
34
+ Rake::Task['vlad:debug'].invoke
35
+ end
36
+
37
+ # vim: syntax=ruby
@@ -0,0 +1,91 @@
1
+ * might we want per connection values?
2
+
3
+ * :except => {:no_release => true}
4
+
5
+ It is common to configure tasks to 'announce' deployments in IRC, Campfire,
6
+ etc. If you have 6 app servers, you don't want to see 6 announcements. In
7
+ Capistrano, this is handled via the :no_release => true flag. Various tasks
8
+ only execute on the 'release' servers.
9
+
10
+ An easier way to meet this would be to introduce a :release role in the
11
+ default setup
12
+
13
+ role :release, "app1.example.com"
14
+
15
+ remote_task :announce_in_irc, :roles => :release ...
16
+
17
+ Drawback: Yet another thing to change when you migrate a project from cap to
18
+ vlad
19
+
20
+ * 'dynamic deployments'
21
+
22
+ role :app, "app1.example.com"
23
+ role :app, "app2.example.com"
24
+
25
+ Let's say that app1 and app2 need slightly different monit configurations.
26
+
27
+ In Capistrano, you might approach this by making two additional roles, and
28
+ splitting your 'push a monit config' task into two. This sucks.
29
+
30
+ Vlad makes the 'execution context' of a task available. In Vlad, you would:
31
+
32
+ remote_task :update_monit, :roles => :app
33
+ rsync "templates/#{target_host}.monitrc", "/etc/monitrc"
34
+ end
35
+
36
+ * fine-grained tasks
37
+
38
+ remote_task :update
39
+ remote_task :symlink
40
+ remote_task :migrate
41
+ remote_task :deploy => [:update, :symlink, :migrate, :restart]
42
+
43
+ Let's assume that this is a multi-server config with shared deploy path.
44
+ The user wants to do only a single checkout. If we make "update" be one big
45
+ task body that includes the update, symlink, and migrate steps,
46
+ it is difficult for the user to override the roles for the particular steps
47
+ they need to change.
48
+
49
+ If we break these into separate tasks, they can say:
50
+
51
+ Rake::Task["migrate"].options[:roles] = :master_db
52
+
53
+ and the migrations will only run on the master db
54
+
55
+ * sudo / via how? and if we call it via I will stab ppl. "user" is sufficient.
56
+
57
+ * handling 'use_sudo'
58
+
59
+ 1. Check for this inside the 'run' command, and preface the command
60
+ with 'sudo' if necessary
61
+
62
+ 2. Default this to 'false' in the reset method, and check for it
63
+ in the default tasks that we provide:
64
+ if use_sudo then
65
+ sudo "blah"
66
+ else
67
+ run "blah"
68
+ end
69
+
70
+ Option 2 has fewer moving parts, but clutters up the tasks that care about
71
+ this.
72
+
73
+ * Dependencies
74
+
75
+ Task dependencies aren't settable when creating a Rake::RemoteTask.
76
+
77
+ * Apache configuration
78
+
79
+ Pull in railsmachine/rails/recipes/apache.rb's apache configuration. Needs
80
+ erb to work.
81
+
82
+ * I really like tasks with naming <cmd>_<role> (eg setup_app,
83
+ start_web). We could easily make the front end remote_task command
84
+ look for such a convention and apply the :role => x automatically.
85
+
86
+ * from bousquet: get a couple of server environment recipes that prepare your
87
+ machine that would be the golden ticket:
88
+
89
+ rake vlad:prepare TYPE=accelerator | ubuntu | osx | osxserver | site5 | ...
90
+
91
+ and have people maintaining those setups who depend on them