lib/ztk/ssh/bootstrap.rb
# SSH Bootstrap
#
# Renders the *content* string into a file on the remote host and proceeds
# to execute it via */bin/bash*.  Sudo is prefixed by default, but can be
# disabled.
#
# @example Sample Bootstrap, assuming the @ssh variable is an instance of ZTK::SSH connected to a host.
#   @ssh.bootstrap(IO.read("bootstrap.sh"))
#
# @example
#   @ssh.bootstrap("apt-get -y upgrade")
#
# @param [String] content What to render out to the bootstrap file we will
#   execute.
# @param [Hash] options The options hash.  This will also accept options
#   for #exec in order to better control the bootstrapping execution.
# @option options [String] :use_sudo True if we should execute the
#   bootstrap via sudo; False to execute it as the defined user.
SSH Bootstrap
Renders the *content* string into a file on the remote host and proceeds
to execute it via */bin/bash*.  Sudo is prefixed by default, but can be
disabled.
SSH Bootstrap Renders the * content * string into a file on the remote host and proceeds to execute it via * / bin / bash * . Sudo is prefixed by default but can be disabled .
def bootstrap(content, options={})
        options = {
          :silence => true,
          :use_sudo => true,
          :set_x => true,
          :set_e => false
        }.merge(options)
        bootstrap_tempfile = Tempfile.new("bootstrap")
        remote_tempfile = ::File.join("", "tmp", ::File.basename(bootstrap_tempfile.path.dup))
        bootstrap_tempfile.close!
        local_tempfile  = Tempfile.new("tempfile-local")
        local_tempfile.puts(content)
        local_tempfile.respond_to?(:flush) and local_tempfile.flush
        command = Array.new
        command << %(sudo) if (options[:use_sudo] == true)
        command << %(/bin/bash)
        command << %(-x) if (options[:set_x] == true)
        command << %(-e) if (options[:set_e] == true)
        command << remote_tempfile
        command = command.join(' ')
        self.upload(local_tempfile.path, remote_tempfile)
        result = self.exec(command, options)
        local_tempfile.close!
        result
      end
def bootstrap ( content , options = { } ) options = { :silence => true , :use_sudo => true , :set_x => true , :set_e => false } . merge ( options ) bootstrap_tempfile = Tempfile . new ( "bootstrap" ) remote_tempfile = :: File . join ( "" , "tmp" , :: File . basename ( bootstrap_tempfile . path . dup ) ) bootstrap_tempfile . close! local_tempfile = Tempfile . new ( "tempfile-local" ) local_tempfile . puts ( content ) local_tempfile . respond_to? ( :flush ) and local_tempfile . flush command = Array . new command << %(sudo) if ( options [ :use_sudo ] == true ) command << %(/bin/bash) command << %(-x) if ( options [ :set_x ] == true ) command << %(-e) if ( options [ :set_e ] == true ) command << remote_tempfile command = command . join ( ' ' ) self . upload ( local_tempfile . path , remote_tempfile ) result = self . exec ( command , options ) local_tempfile . close! result end
SSH Bootstrap
Renders the *content* string into a file on the remote host and proceeds
to execute it via */bin/bash*.
SSH Bootstrap Renders the * content * string into a file on the remote host and proceeds to execute it via * / bin / bash * .
content
<not_specific>
options
:use_sudo True if we should execute the bootstrap via sudo; False to execute it as the defined user.
: use_sudo True if we should execute the bootstrap via sudo ; False to execute it as the defined user .
<not_specific>
options The options hash. This will also accept options for #exec in order to better control the bootstrapping execution.
options The options hash . This will also accept options for #exec in order to better control the bootstrapping execution .
example
Sample Bootstrap, assuming the @ssh variable is an instance of ZTK::SSH connected to a host. @ssh.bootstrap(IO.read("bootstrap.sh"))
Sample Bootstrap assuming the @ssh variable is an instance of ZTK :: SSH connected to a host . @ssh . bootstrap ( IO . read ( " bootstrap . sh " ))
example
@ssh.bootstrap("apt-get -y upgrade")
@ssh . bootstrap ( " apt - get - y upgrade " )