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