class Aerosol::Deploy

Public Instance Methods

do_not_migrate!() click to toggle source
# File lib/aerosol/deploy.rb, line 50
def do_not_migrate!
  self.instance_variable_set(:@db_config_path, nil)
end
generate_ssh_command(instance) click to toggle source
# File lib/aerosol/deploy.rb, line 88
def generate_ssh_command(instance)
  ssh_command = "ssh -o 'UserKnownHostsFile=/dev/null' -o 'StrictHostKeyChecking=no' "
  unless local_ssh_ref.nil?
    unless local_ssh_ref.jump.nil? || local_ssh_ref.jump.empty?
      ssh_command << "-o 'ProxyCommand=ssh -W %h:%p "
      ssh_command << "#{local_ssh_ref.jump[:user]}@" if local_ssh_ref.jump[:user]
      ssh_command << "#{local_ssh_ref.jump[:host]}' "
    end
    ssh_command << "#{local_ssh_ref.user}@" unless local_ssh_ref.user.nil?
  end
  ssh_command << "#{instance.address}"
end
generate_ssh_commands() click to toggle source
# File lib/aerosol/deploy.rb, line 101
def generate_ssh_commands
  group = Aerosol::AutoScaling.latest_for_tag('Deploy', auto_scaling.namespaced_name)
  raise "Could not find any auto scaling groups for this deploy (#{name})." if group.nil?

  ssh_commands = []

  with_prefix("[#{name}]") do |logger|
    logger.info "found group: #{group.auto_scaling_group_name}"
    instances = group.all_instances
    raise "Could not find any instances for auto scaling group #{group.namespaced_name}" if instances.empty?
    instances.each do |instance|
      logger.info "printing ssh command for #{instance.address}"
      ssh_commands << generate_ssh_command(instance)
    end
  end

  return ssh_commands
end
is_alive?(command = nil, &block) click to toggle source
# File lib/aerosol/deploy.rb, line 39
def is_alive?(command = nil, &block)
  fail 'Command and block specified' if command && block
  @is_alive = block if block
  @is_alive = command if command
  @is_alive
end
live_check(arg = nil) click to toggle source
# File lib/aerosol/deploy.rb, line 27
def live_check(arg = nil)
  case
  when arg.nil?
    @live_check
  when arg.start_with?('/')
    @live_check = arg
  else
    @live_check = "/#{arg}"
  end
  @live_check
end
live_check_url() click to toggle source
# File lib/aerosol/deploy.rb, line 46
def live_check_url
  [ssl ? 'https' : 'http', '://localhost:', app_port, live_check].join
end
local_ssh_ref() click to toggle source
# File lib/aerosol/deploy.rb, line 62
def local_ssh_ref
  local_ssh || ssh
end
migrate?() click to toggle source
# File lib/aerosol/deploy.rb, line 58
def migrate?
  !!db_config_path
end
migration(opts = {}) click to toggle source
# File lib/aerosol/deploy.rb, line 54
def migration(opts = {})
  self.db_config_path(opts[:db_config_path])
end
perform_role_assumption() click to toggle source
# File lib/aerosol/deploy.rb, line 66
def perform_role_assumption
  return if assume_role.nil?
  Aws.config.update(
    credentials: Aws::AssumeRoleCredentials.new(
      role_arn: assume_role,
      role_session_name: "aerosol-#{name}",
      client: Aerosol::AWS.sts
    )
  )
end
run_post_deploy() click to toggle source
# File lib/aerosol/deploy.rb, line 77
def run_post_deploy
  return if post_deploy_command.nil?
  info "running post deploy: #{post_deploy_command}"
  if system(post_deploy_command)
    info "post deploy ran successfully"
    true
  else
    raise "post deploy failed"
  end
end