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 |