lib/supply_drop.rb in supply_drop-0.5.0 vs lib/supply_drop.rb in supply_drop-0.6.0

- old
+ new

@@ -5,11 +5,11 @@ Capistrano::Configuration.instance.load do namespace :puppet do set :puppet_source, '.' set :puppet_destination, '/tmp/supply_drop' set :puppet_command, 'puppet apply' - set :puppet_lib, "#{puppet_destination}/modules" + set :puppet_lib, lambda { "#{puppet_destination}/modules" } set :puppet_parameters, lambda { puppet_verbose ? '--debug --trace puppet.pp' : 'puppet.pp' } set :puppet_verbose, false set :puppet_excludes, %w(.git .svn) set :puppet_stream_output, false set :puppet_parallel_rsync, true @@ -33,20 +33,22 @@ end desc "pushes the current puppet configuration to the server" task :update_code, :except => { :nopuppet => true } do servers = SupplyDrop::Util.optionally_async(find_servers_for_task(current_task), puppet_parallel_rsync) - servers.each do |server| + failed_servers = servers.map do |server| rsync_cmd = SupplyDrop::Rsync.command( puppet_source, SupplyDrop::Rsync.remote_address(server.user || fetch(:user, ENV['USER']), server.host, puppet_destination), :delete => true, :excludes => puppet_excludes, - :ssh => { :keys => ssh_options[:keys], :config => ssh_options[:config] } + :ssh => { :keys => ssh_options[:keys], :config => ssh_options[:config], :port => fetch(:port, nil) } ) logger.debug rsync_cmd - system rsync_cmd - end + server.host unless system rsync_cmd + end.compact + + raise "rsync failed on #{failed_servers.join(',')}" if failed_servers.any? end desc "runs puppet with --noop flag to show changes" task :noop, :except => { :nopuppet => true } do update_code