Method: Beaker::HostPrebuiltSteps#copy_ssh_to_root

Defined in:
lib/beaker/host_prebuilt_steps.rb

#copy_ssh_to_root(host, opts) ⇒ Object

Make it possible to log in as root by copying the current users ssh keys to the root account

Parameters:

  • host (Host, Array<Host>)

    One or more hosts to act upon

  • opts (Hash{Symbol=>String})

    Options to alter execution.

Options Hash (opts):



334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
# File 'lib/beaker/host_prebuilt_steps.rb', line 334

def copy_ssh_to_root host, opts
  logger = opts[:logger]
  block_on host do |host|
    logger.debug "Give root a copy of current user's keys, on #{host.name}"
    if host['platform'] =~ /windows/ and host.is_cygwin?
      host.exec(Command.new('cp -r .ssh /cygdrive/c/Users/Administrator/.'))
      host.exec(Command.new('chown -R Administrator /cygdrive/c/Users/Administrator/.ssh'))
    elsif host['platform'] =~ /windows/ and not host.is_cygwin?
      host.exec(Command.new("if exist .ssh (xcopy .ssh C:\\Users\\Administrator\\.ssh /s /e)"))
    elsif host['platform'] =~ /osx/
      host.exec(Command.new('sudo cp -r .ssh /var/root/.'), {:pty => true})
    elsif host['platform'] =~ /freebsd/
      host.exec(Command.new('sudo cp -r .ssh /root/.'), {:pty => true})
    elsif host['platform'] =~ /openbsd/
      host.exec(Command.new('sudo cp -r .ssh /root/.'), {:pty => true})
    elsif host['platform'] =~ /solaris-10/
      host.exec(Command.new('sudo cp -r .ssh /.'), {:pty => true})
    elsif host['platform'] =~ /solaris-11/
      host.exec(Command.new('sudo cp -r .ssh /root/.'), {:pty => true})
    else
      host.exec(Command.new('sudo su -c "cp -r .ssh /root/."'), {:pty => true})
    end
  end
end