7
8
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
|
# File 'lib/lanes/file.rb', line 7
def push(target, dest, lane=nil)
pwd = Dir.pwd
puts "#{pwd} #{target} #{dest} #{lane}"
file = "#{pwd}/#{target}"
servers = AWS.instance.fetchServers(lane)
servers.sort_by{ |s| s[:lane] }
puts 'Servers that will receive the file:'
servers.each{|server|
puts "\t%{name} (%{lane}) \t %{ip} \t %{id} " % server
}
mods = Props.instance.sshMod(lane)
identity = if mods['identity'] then mods['identity'] else '' end
puts "Identity file #{mods['identity']} will be used" if identity
if options[:confirm] then
puts 'Confirmed via command line. Moving forward with execution..'
confirm = 'CONFIRM'
else
confirm = ask 'Type CONFIRM to begin pushing files:'
end
if confirm == 'CONFIRM' then
servers.each{|server|
id = if identity then "-i #{identity}" else '' end
user = if mods['user'] then mods['user'] else 'ec2-user' end
cmd = "scp #{id} #{file} #{user}@%{ip}:#{dest}" % server
puts " => Executing: #{cmd}"
result = system cmd
if !result then
puts 'WARNING: Failed on %{ip}' % server
end
}
end
end
|