supply_drop 0.4.0 → 0.5.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/README.md +18 -1
- data/lib/supply_drop.rb +8 -4
- data/lib/supply_drop/async_enumerable.rb +9 -0
- data/lib/supply_drop/rsync.rb +27 -25
- data/lib/supply_drop/util.rb +11 -0
- metadata +8 -8
data/README.md
CHANGED
@@ -46,7 +46,7 @@ defines the base directory containing your puppet configs that will be rsynced t
|
|
46
46
|
|
47
47
|
defines where on the server the puppet configuration files are synced to.
|
48
48
|
|
49
|
-
set :puppet_command, 'puppet'
|
49
|
+
set :puppet_command, 'puppet apply'
|
50
50
|
|
51
51
|
allows you to override the puppet command that is run if puppet is not on the path.
|
52
52
|
|
@@ -62,11 +62,28 @@ the parameters that are passed to the puppet call.
|
|
62
62
|
|
63
63
|
these are patterns that are passed as rsync --exclude flags when pushing your puppet configs to the box.
|
64
64
|
|
65
|
+
set :puppet_parallel_rsync, true
|
66
|
+
|
67
|
+
determines whether the rsync commands for multiple servers are run in parallel threads or serially
|
68
|
+
|
69
|
+
|
70
|
+
### Handling Legacy Puppet
|
71
|
+
|
72
|
+
Puppet deprecated the implicit invocation of apply [in the 2.6.x series](https://github.com/puppetlabs/puppet/commit/a23cfd869f90ae4456dded6e5a1c82719b128f01).
|
73
|
+
|
74
|
+
The default behavior of supply_drop includes `apply` keyword in its commands, but if you need compatibility with older versions of puppet, set the `puppet_command` variable to omit it.
|
75
|
+
|
76
|
+
You'll need to do this if you see errors like this:
|
77
|
+
|
78
|
+
Could not parse for environment production: Could not find file /home/.../supply_drop/apply.pp
|
79
|
+
|
65
80
|
### How to contribute
|
66
81
|
|
67
82
|
If you write anything complicated, write a test for it. Test that your changes work using vagrant. Send a pull request. Easy peezy.
|
68
83
|
|
69
84
|
### Contributors
|
70
85
|
|
86
|
+
* Paul Hinze [phinze](https://github.com/phinze "github")
|
71
87
|
* Paul Gross [pgr0ss](https://github.com/pgr0ss "github")
|
72
88
|
* Drew Olson [drewolson](https://github.com/drewolson "github")
|
89
|
+
* Dave Pirotte [dpirotte](https://github.com/dpirotte "github")
|
data/lib/supply_drop.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
1
|
require 'supply_drop/rsync'
|
2
|
+
require 'supply_drop/async_enumerable'
|
3
|
+
require 'supply_drop/util'
|
2
4
|
|
3
5
|
Capistrano::Configuration.instance.load do
|
4
6
|
namespace :puppet do
|
5
7
|
set :puppet_source, '.'
|
6
8
|
set :puppet_destination, '/tmp/supply_drop'
|
7
|
-
set :puppet_command, 'puppet'
|
9
|
+
set :puppet_command, 'puppet apply'
|
8
10
|
set :puppet_lib, "#{puppet_destination}/modules"
|
9
11
|
set :puppet_parameters, lambda { puppet_verbose ? '--debug --trace puppet.pp' : 'puppet.pp' }
|
10
12
|
set :puppet_verbose, false
|
11
13
|
set :puppet_excludes, %w(.git .svn)
|
12
14
|
set :puppet_stream_output, false
|
15
|
+
set :puppet_parallel_rsync, true
|
13
16
|
|
14
17
|
namespace :bootstrap do
|
15
18
|
desc "installs puppet via rubygems on an osx host"
|
@@ -31,10 +34,11 @@ Capistrano::Configuration.instance.load do
|
|
31
34
|
|
32
35
|
desc "pushes the current puppet configuration to the server"
|
33
36
|
task :update_code, :except => { :nopuppet => true } do
|
34
|
-
find_servers_for_task(current_task)
|
35
|
-
|
37
|
+
servers = SupplyDrop::Util.optionally_async(find_servers_for_task(current_task), puppet_parallel_rsync)
|
38
|
+
servers.each do |server|
|
39
|
+
rsync_cmd = SupplyDrop::Rsync.command(
|
36
40
|
puppet_source,
|
37
|
-
Rsync.remote_address(server.user || fetch(:user, ENV['USER']), server.host, puppet_destination),
|
41
|
+
SupplyDrop::Rsync.remote_address(server.user || fetch(:user, ENV['USER']), server.host, puppet_destination),
|
38
42
|
:delete => true,
|
39
43
|
:excludes => puppet_excludes,
|
40
44
|
:ssh => { :keys => ssh_options[:keys], :config => ssh_options[:config] }
|
data/lib/supply_drop/rsync.rb
CHANGED
@@ -1,34 +1,36 @@
|
|
1
|
-
|
2
|
-
class
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
module SupplyDrop
|
2
|
+
class Rsync
|
3
|
+
class << self
|
4
|
+
def command(from, to, options={})
|
5
|
+
flags = ['-az']
|
6
|
+
flags << '--delete' if options[:delete]
|
7
|
+
flags << excludes(options[:excludes]) if options.has_key?(:excludes)
|
8
|
+
flags << ssh_options(options[:ssh]) if options.has_key?(:ssh)
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
"rsync #{flags.compact.join(' ')} #{from} #{to}"
|
11
|
+
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
def remote_address(user, host, path)
|
14
|
+
user_with_host = [user, host].compact.join('@')
|
15
|
+
[user_with_host, path].join(':')
|
16
|
+
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
18
|
+
def excludes(patterns)
|
19
|
+
[patterns].flatten.map { |p| "--exclude=#{p}" }
|
20
|
+
end
|
20
21
|
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
def ssh_options(options)
|
23
|
+
mapped_options = options.map do |key, value|
|
24
|
+
next unless value
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
case key
|
27
|
+
when :keys then [value].flatten.select { |k| File.exist?(k) }.map { |k| "-i #{k}" }
|
28
|
+
when :config then "-F #{value}"
|
29
|
+
end
|
30
|
+
end.compact
|
30
31
|
|
31
|
-
|
32
|
+
%[-e "ssh #{mapped_options.join(' ')}"] unless mapped_options.empty?
|
33
|
+
end
|
32
34
|
end
|
33
35
|
end
|
34
36
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: supply_drop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 11
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 5
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.5.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tony Pitluga
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-12-05 00:00:00 Z
|
20
19
|
dependencies: []
|
21
20
|
|
22
21
|
description: See http://github.com/pitluga/supply_drop
|
@@ -30,14 +29,15 @@ extra_rdoc_files: []
|
|
30
29
|
files:
|
31
30
|
- README.md
|
32
31
|
- Rakefile
|
32
|
+
- lib/supply_drop/async_enumerable.rb
|
33
33
|
- lib/supply_drop/rsync.rb
|
34
|
+
- lib/supply_drop/util.rb
|
34
35
|
- lib/supply_drop.rb
|
35
36
|
- examples/ec2/Capfile
|
36
37
|
- examples/ec2/puppet.pp
|
37
38
|
- examples/vagrant/Capfile
|
38
39
|
- examples/vagrant/puppet.pp
|
39
40
|
- examples/vagrant/Vagrantfile
|
40
|
-
has_rdoc: true
|
41
41
|
homepage: http://github.com/pitluga/supply_drop
|
42
42
|
licenses: []
|
43
43
|
|
@@ -67,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
67
67
|
requirements: []
|
68
68
|
|
69
69
|
rubyforge_project:
|
70
|
-
rubygems_version: 1.
|
70
|
+
rubygems_version: 1.8.10
|
71
71
|
signing_key:
|
72
72
|
specification_version: 3
|
73
73
|
summary: Serverless puppet with capistrano
|