32 lines
774 B
Ruby
32 lines
774 B
Ruby
module DeployCommands
|
|
|
|
def deploy_server out, server, cert_path
|
|
out << "\nRun chef-client on '#{server.chef_node_name}'"
|
|
cmd = (server.remote_user == "root" ? "chef-client" : "sudo chef-client")
|
|
ip = if server.public_ip.nil?
|
|
server.private_ip
|
|
else
|
|
out << "Public IP detected\n"
|
|
server.public_ip
|
|
end
|
|
cmd = "ssh -t -i #{cert_path} #{server.remote_user}@#{ip} \"#{cmd}\""
|
|
out << "\nCommand: '#{cmd}'\n"
|
|
status = nil
|
|
IO.popen(cmd + " 2>&1") do |c|
|
|
buf = ""
|
|
while line = c.gets do
|
|
out << line
|
|
buf = line
|
|
end
|
|
c.close
|
|
status = $?.to_i
|
|
r = buf.scan(/exit\scode\s([0-9]{1,3})/)[0]
|
|
unless r.nil?
|
|
status = r[0].to_i
|
|
end
|
|
end
|
|
return status
|
|
end
|
|
|
|
end
|