Module: Bootstrapsync
- Defined in:
- lib/chef/knife/bootstrapsync.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(klass) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/chef/knife/bootstrapsync.rb', line 35 def included(klass) klass.class_eval do alias_method :non_sync_bootstrap_run, :run alias_method :run, :sync_bootstrap_run option(:sync_directory, :long => '--sync-directory LOCAL_PATH:REMOTE_PATH', :description => 'Sync local directory to remote server', :proc => Proc.new{ |k| dirs = k.split(':') Chef::Config[:knife][:directory_sync] = {:local => dirs.first, :remote => dirs.last} } ) end end |
Instance Method Details
#sync_bootstrap_run ⇒ Object
4 5 6 7 |
# File 'lib/chef/knife/bootstrapsync.rb', line 4 def sync_bootstrap_run sync_directory non_sync_bootstrap_run end |
#sync_directory ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/chef/knife/bootstrapsync.rb', line 9 def sync_directory require 'net/sftp' host = name_args.first user = config[:ssh_user] args = {} args[:password] = config[:ssh_password] if config[:ssh_password] args[:keys] = [config[:identity_file]] if config[:identity_file] begin Net::SFTP.start(host, user, args) do |sftp| begin sftp.mkdir!(File.dirname(Chef::Config[:knife][:directory_sync][:remote])) rescue puts 'Cookbook dir already exists' end sftp.upload!( Chef::Config[:knife][:directory_sync][:local], Chef::Config[:knife][:directory_sync][:remote], :mkdir => true ) end rescue puts 'Upload Failed' end end |