diff -r 7013280e62fa -r ffa70066522c lib/symphony/tasks/ssh.rb --- a/lib/symphony/tasks/ssh.rb Wed May 28 11:45:41 2014 -0700 +++ b/lib/symphony/tasks/ssh.rb Thu Jul 12 15:25:35 2018 -0700 @@ -23,7 +23,7 @@ ### key: (optional) The path to an SSH private key ### ### -### Additionally, this class responds to the 'symphony_ssh' configurability +### Additionally, this class responds to the 'symphony.ssh' configurability ### key. Currently, you can set the 'path' argument, which is the ### full path to the local ssh binary (defaults to '/usr/bin/ssh') and ### override the default ssh user, key, and client opts. @@ -47,53 +47,42 @@ ### class Symphony::Task::SSH < Symphony::Task extend Configurability - config_key :symphony_ssh - # SSH default options. + # The default set of ssh command line flags. # - CONFIG_DEFAULTS = { - :path => '/usr/bin/ssh', - :opts => [ - '-e', 'none', - '-T', - '-x', - '-q', - '-o', 'CheckHostIP=no', - '-o', 'BatchMode=yes', - '-o', 'StrictHostKeyChecking=no' - ], - :user => 'root', - :key => nil - } + DEFAULT_SSH_OPTS = %w[ + -e none + -T + -x + -q + -o CheckHostIP=no + -o BatchMode=yes + -o StrictHostKeyChecking=no + ] # SSH "informative" stdout output that should be cleaned from the # command output. SSH_CLEANUP = %r/Warning: no access to tty|Thus no job control in this shell/ - class << self + + # Configurability API + # + configurability( :symphony__ssh ) do + # The full path to the ssh binary. - attr_reader :path + setting :path, default: '/usr/bin/ssh' - # A default set of ssh client options when connecting + # The default user to use when connecting. + setting :user, default: 'root' + + # A default Array of ssh client options when connecting # to remote hosts. - attr_reader :opts - - # The default user to use when connecting. If unset, 'root' is used. - attr_reader :user + setting :opts, default: DEFAULT_SSH_OPTS do |val| + Array( val ) + end # An absolute path to a password-free ssh private key. - attr_reader :key - end - - ### Configurability API. - ### - def self::configure( config=nil ) - config = Symphony::Task::SSH.defaults.merge( config || {} ) - @path = config.delete( :path ) - @opts = config.delete( :opts ) - @user = config.delete( :user ) - @key = config.delete( :key ) - super + setting :key end