diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/leap_cli/remote/plugin.rb | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/leap_cli/remote/plugin.rb b/lib/leap_cli/remote/plugin.rb index 3fb5160..6b59727 100644 --- a/lib/leap_cli/remote/plugin.rb +++ b/lib/leap_cli/remote/plugin.rb @@ -18,21 +18,25 @@ module LeapCli; module Remote; module Plugin def rsync_update SupplyDrop::Util.thread_pool_size = puppet_parallel_rsync_pool_size servers = SupplyDrop::Util.optionally_async(find_servers, puppet_parallel_rsync) + + # rsync to each server failed_servers = servers.map do |server| - #p server - #p server.options + # build rsync command - _paths = yield server - _source = _paths[:source] - _user = server.user || fetch(:user, ENV['USER']) - _dest = SupplyDrop::Rsync.remote_address(_user, server.host, _paths[:dest]) - _opts = {:ssh => ssh_options.merge(server.options[:ssh_options]||{})} - rsync_cmd = SupplyDrop::Rsync.command(_source, _dest, _opts) + paths = yield server + remote_user = server.user || fetch(:user, ENV['USER']) + rsync_cmd = SupplyDrop::Rsync.command( + paths[:source], + SupplyDrop::Rsync.remote_address(remote_user, server.host, paths[:dest]), + {:ssh => ssh_options.merge(server.options[:ssh_options]||{})} + ) # run command logger.debug rsync_cmd server.host unless system rsync_cmd + end.compact + raise "rsync failed on #{failed_servers.join(',')}" if failed_servers.any? end |