diff options
author | elijah <elijah@riseup.net> | 2012-10-23 03:53:06 -0700 |
---|---|---|
committer | elijah <elijah@riseup.net> | 2012-10-23 03:53:06 -0700 |
commit | 628165fd0a4e03bb7bbef3a464447924195e10b8 (patch) | |
tree | 746280b6f4d6d488fcece4fff41b4addfb77d0c1 /lib/leap_cli/remote/plugin.rb | |
parent | 4f38e99c629f60d9524d1cf23efa7ab927ac9cf4 (diff) |
added a bunch of new commands, including init-node and deploy
Diffstat (limited to 'lib/leap_cli/remote/plugin.rb')
-rw-r--r-- | lib/leap_cli/remote/plugin.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/leap_cli/remote/plugin.rb b/lib/leap_cli/remote/plugin.rb new file mode 100644 index 0000000..22ffe34 --- /dev/null +++ b/lib/leap_cli/remote/plugin.rb @@ -0,0 +1,35 @@ +# +# these methods are made available in capistrano tasks as 'leap.method_name' +# + +module LeapCli; module Remote; module Plugin + + def mkdir_leap(base_dir) + run "mkdir -p #{base_dir}/config && chown -R root #{base_dir} && chmod -R ag-rwx,u+rwX #{base_dir}" + end + + # + # takes a block, yielded a server, that should return {:source => '', :dest => ''} + # + def rsync_update + SupplyDrop::Util.thread_pool_size = puppet_parallel_rsync_pool_size + servers = SupplyDrop::Util.optionally_async(find_servers, puppet_parallel_rsync) + 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) + + # 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 + +end; end; end
\ No newline at end of file |