class Shiplane::Host

Constants

SSHKIT_PROPERTIES

Attributes

env[RW]
host[RW]
role[RW]

Public Class Methods

new(role, env) click to toggle source
# File lib/shiplane/host.rb, line 15
def initialize(role, env)
  @role = role
  @env = env
end

Private Class Methods

bootstrap!(host, env) click to toggle source
# File lib/shiplane/host.rb, line 92
def self.bootstrap!(host, env)
  new(host, env).bootstrap!
end
config() click to toggle source
# File lib/shiplane/host.rb, line 84
def self.config
  @config ||= YAML.load(File.read(config_filepath))
end
config_filepath() click to toggle source
# File lib/shiplane/host.rb, line 88
def self.config_filepath
  File.join("shiplane.yml")
end
env_file() click to toggle source
# File lib/shiplane/host.rb, line 80
def self.env_file
  config.fetch("bootstrap", {}).fetch('env_file', '.env')
end

Public Instance Methods

capistrano_role() click to toggle source
# File lib/shiplane/host.rb, line 24
def capistrano_role
  @capistrano_role ||= role.dup.tap do |r|
    r.properties.set(:ssh_options, ssh_options)
  end
end
requires_sudo?() click to toggle source
# File lib/shiplane/host.rb, line 36
def requires_sudo?
  @requires_sudo ||= config.fetch('requires_sudo', false)
end
sshkit_values() click to toggle source
# File lib/shiplane/host.rb, line 30
def sshkit_values
  {
    interaction_handler: { "[sudo] password for #{user}: " => "#{password}\n" }
  }
end

Private Instance Methods

config() click to toggle source
# File lib/shiplane/host.rb, line 62
def config
  self.class.config.fetch('deploy', {}).fetch('servers', {}).fetch(hostname, {})
end
options() click to toggle source
# File lib/shiplane/host.rb, line 54
def options
  @options ||= role.properties.to_h.symbolize_keys.merge(ssh_options: ssh_options)
end
password() click to toggle source
# File lib/shiplane/host.rb, line 46
def password
  ssh_options.fetch("password", "")
end
ssh_options() click to toggle source
# File lib/shiplane/host.rb, line 58
def ssh_options
  @ssh_options ||= config.fetch('ssh_options', {}).symbolize_keys
end
sshkit_options() click to toggle source
# File lib/shiplane/host.rb, line 50
def sshkit_options
  @sshkit_options ||= options.merge(hostname: hostname).slice(*SSHKIT_PROPERTIES)
end
sshkit_output() click to toggle source
# File lib/shiplane/host.rb, line 72
def sshkit_output
  @sshkit_output ||= SSHKit.config.output
end
user() click to toggle source
# File lib/shiplane/host.rb, line 42
def user
  ssh_options.fetch("user", "")
end
with_context() { || ... } click to toggle source
# File lib/shiplane/host.rb, line 66
def with_context(&block)
  set(:shiplane_sshkit_values, sshkit_values)
  yield
  set(:shiplane_sshkit_values, nil)
end
write_message(verbosity, message) click to toggle source
# File lib/shiplane/host.rb, line 76
def write_message(verbosity, message)
  sshkit_output.write(SSHKit::LogMessage.new(verbosity, message))
end