Class: SimpleDeploy::Stack::Deployment

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_deploy/stack/deployment.rb,
lib/simple_deploy/stack/deployment/status.rb

Defined Under Namespace

Classes: Status

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Deployment

Returns a new instance of Deployment.



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/simple_deploy/stack/deployment.rb', line 9

def initialize(args)
  @config = args[:config]
  @instances = args[:instances]
  @environment = args[:environment]
  @ssh_user = args[:ssh_user]
  @ssh_key = args[:ssh_key]
  @stack = args[:stack]
  @name = args[:name]
  @attributes = @stack.attributes
  @logger = @config.logger
  @region = @config.region @environment
end

Instance Method Details

#clear_deployment_lock(force = false) ⇒ Object



60
61
62
# File 'lib/simple_deploy/stack/deployment.rb', line 60

def clear_deployment_lock(force = false)
  status.clear_deployment_lock force
end

#clear_for_deployment?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/simple_deploy/stack/deployment.rb', line 56

def clear_for_deployment?
  status.clear_for_deployment?
end

#create_deploymentObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/simple_deploy/stack/deployment.rb', line 22

def create_deployment 
  if @instances.nil? || @instances.empty?
    raise "There are no running instances to deploy to"
  end

  @deployment = Capistrano::Configuration.new :output => @logger
  @deployment.logger.level = 3
  @logger.info "Creating deployment to #{@name}."

  set_ssh_gateway
  set_ssh_user
  set_ssh_options
  set_instances
  set_deploy_command
end

#execute(force = false) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/simple_deploy/stack/deployment.rb', line 38

def execute(force = false)
  if !clear_for_deployment? && force
    clear_deployment_lock true
  end

  if clear_for_deployment?
    status.set_deployment_in_progress
    @logger.info 'Starting deployment.'
    @deployment.simpledeploy
    @logger.info 'Deployment complete.'
    status.unset_deployment_in_progress
    true
  else
    @logger.error "Not clear to deploy."
    false
  end
end

#sshObject



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/simple_deploy/stack/deployment.rb', line 64

def ssh
  @stack.instances.map do |instance|
    info = instance['instancesSet'].first
    if info['vpcId']
      gw = @attributes['ssh_gateway']
      "\nssh -i #{@ssh_key} -l #{@ssh_user} -L 9998:#{info['privateIpAddress']}:22 -N #{gw} &\nssh -p 9998 localhost"
    else
      "\nssh -i #{@ssh_key} -l #{@ssh_user} #{info['ipAddress']}"
    end
  end
end