9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/simple_deploy/cli/execute.rb', line 9
def execute
@opts = Trollop::options do
version SimpleDeploy::VERSION
banner <<-EOS
Execute command on given stack(s).
simple_deploy execute -n STACK_NAME -n STACK_NAME -e ENVIRONMENT -c "COMMAND"
Using Internal IP for SSH:
Simple deploy defaults to using the public IP when ssh'ng to stacks. This option instructs it
to use the private IP, which is needed when ssh'ng from one stack to another.
simple_deploy deploy -n STACK_NAME -n STACK_NAME -e ENVIRONMENT -i
EOS
opt :help, "Display Help"
opt :attributes, "= seperated attribute and it's value", :type => :string,
:multi => true
opt :command, "Command to execute.", :type => :string
opt :environment, "Set the target environment", :type => :string
opt :internal, "Use internal IP for ssh commands"
opt :log_level, "Log level: debug, info, warn, error", :type => :string,
:default => 'info'
opt :name, "Stack name(s) of stack to deploy", :type => :string,
:multi => true
opt :sudo, "Execute command with sudo"
end
valid_options? :provided => @opts,
:required => [:environment, :name]
@opts[:name].each do |name|
notifier = Notifier.new :stack_name => name,
:environment => @opts[:environment],
:logger => logger
stack = Stack.new :environment => @opts[:environment],
:name => name,
:logger => logger,
:internal => @opts[:internal]
begin
stack.execute :command => @opts[:command],
:sudo => @opts[:sudo]
rescue SimpleDeploy::Exceptions::NoInstances
logger.error "Stack has no running instances."
exit 1
end
end
end
|