summaryrefslogtreecommitdiff
path: root/lib/leap_cli/commands/util.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/leap_cli/commands/util.rb')
-rw-r--r--lib/leap_cli/commands/util.rb100
1 files changed, 1 insertions, 99 deletions
diff --git a/lib/leap_cli/commands/util.rb b/lib/leap_cli/commands/util.rb
index 164ce0d..c1da570 100644
--- a/lib/leap_cli/commands/util.rb
+++ b/lib/leap_cli/commands/util.rb
@@ -2,6 +2,7 @@ module LeapCli; module Commands
extend self
extend LeapCli::Util
+ extend LeapCli::Util::RemoteCommand
def path(name)
Path.named_path(name)
@@ -33,105 +34,6 @@ module LeapCli; module Commands
end
end
- #
- #
- #
- # FYI
- # Capistrano::Logger::IMPORTANT = 0
- # Capistrano::Logger::INFO = 1
- # Capistrano::Logger::DEBUG = 2
- # Capistrano::Logger::TRACE = 3
- #
- def ssh_connect(nodes, options={}, &block)
- node_list = parse_node_list(nodes)
-
- cap = new_capistrano
- cap.logger.level = LeapCli.log_level
- user = options[:user] || 'root'
- cap.set :user, user
- cap.set :ssh_options, ssh_options
- cap.set :use_sudo, false # we may want to change this in the future
-
- # # supply drop options
- # cap.set :puppet_source, [Path.platform, 'puppet'].join('/')
- # cap.set :puppet_destination, '/root/leap'
- # #cap.set :puppet_command, 'puppet apply'
- # cap.set :puppet_lib, "puppet/modules"
- # cap.set :puppet_parameters, '--confdir=puppet puppet/manifests/site.pp'
- # #cap.set :puppet_stream_output, false
- # #puppet apply --confdir=puppet puppet/manifests/site.pp | grep -v 'warning:.*is deprecated'
- # #puppet_cmd = "cd #{puppet_destination} && #{sudo_cmd} #{puppet_command} --modulepath=#{puppet_lib} #{puppet_parameters}"
-
- #
- # allow password authentication when we are bootstraping a single node.
- #
- if options[:bootstrap] && node_list.size == 1
- hostname = node_list.values.first.name
-
- # the 'password' block is only called if key auth fails
- if options[:echo]
- cap.set(:password) { ask "Root SSH password for #{user}@#{hostname}> " }
- else
- cap.set(:password) { Capistrano::CLI.password_prompt " * Typed password will be hidden (use --echo to make it visible)\nRoot SSH password for #{user}@#{hostname}> " }
- end
- end
-
- node_list.each do |name, node|
- cap.server node.name, :dummy_arg, node_options(node)
- end
-
- yield cap
- end
-
-
- private
-
-
- #
- # For available options, see http://net-ssh.github.com/net-ssh/classes/Net/SSH.html#method-c-start
- #
- def ssh_options
- {
- :config => false,
- :global_known_hosts_file => path(:known_hosts),
- :paranoid => true
- }
- end
-
- #
- # For notes on advanced ways to set server-specific options, see
- # http://railsware.com/blog/2011/11/02/advanced-server-definitions-in-capistrano/
- #
- def node_options(node)
- #password_proc = Proc.new {Capistrano::CLI.password_prompt "Root SSH password for #{node.name}"} # only called if needed
- {
- #:password => password_proc,
- :ssh_options => {
- :host_key_alias => node.name,
- :host_name => node.ip_address,
- :port => node.ssh.port
- }
- }
- end
-
- def new_capistrano
- # load once the library files
- @capistrano_enabled ||= begin
- require 'capistrano'
- require 'capistrano/cli'
- require 'leap_cli/remote/plugin'
- Capistrano.plugin :leap, LeapCli::Remote::Plugin
- true
- end
-
- # create capistrano instance
- cap = Capistrano::Configuration.new
-
- # add tasks to capistrano instance
- cap.load File.dirname(__FILE__) + '/../remote/tasks.rb'
-
- return cap
- end
def parse_node_list(nodes)
if nodes.is_a? Config::Object