Merge branch 'net_ssh' into bug_fix
This commit is contained in:
		
						commit
						3942ac59bb
					
				| @ -2,6 +2,7 @@ require "lib/knife/knife_factory" | ||||
| require "workers/worker" | ||||
| require "workers/delete_server_worker" | ||||
| require "hooks" | ||||
| require 'net/ssh' | ||||
| 
 | ||||
| module Devops | ||||
|   module Executor | ||||
| @ -312,15 +313,26 @@ module Devops | ||||
|         res = delete_from_chef_server(@server.chef_node_name) | ||||
|         begin | ||||
|           new_name = "/etc/chef.backup_#{Time.now.strftime("%d-%m-%Y_%H.%M.%S")}" | ||||
| #          r = `ssh -i #{cert_path} -q #{@server.remote_user}@#{@server.private_ip} rm -Rf /etc/chef` | ||||
|           cmd = "ssh -i #{cert_path} -q #{@server.remote_user}@#{@server.private_ip} \"/bin/sh -c 'if [[ -d /etc/chef ]]; then mv /etc/chef #{new_name}; else echo not found; fi'\"" | ||||
|           DevopsLogger.logger.info("Trying to run command '#{cmd}'") | ||||
|           r = `#{cmd}`.strip | ||||
|           if r == 'not found' | ||||
|             res[:server] = "Directory '/etc/chef' does not exists" | ||||
|           else | ||||
|             raise(r) unless $?.success? | ||||
|             res[:server] = "'/etc/chef' renamed to '#{new_name}'" | ||||
|           cmd = (@server.remote_user == 'root' ? "" : "sudo ") | ||||
|           cmd = cmd + "/bin/sh -c 'if [[ -d /etc/chef ]]; then mv /etc/chef #{new_name} && echo ok; else echo not found; fi'" | ||||
|           DevopsLogger.logger.info("SSH: trying to run command '#{cmd}'") | ||||
|           Net::SSH.start(@server.private_ip, @server.remote_user, :keys => [cert_path]) do |session| | ||||
|             session.open_channel do |channel| | ||||
|               channel.request_pty(:modes => { Net::SSH::Connection::Term::ECHO => 0 }) do |c, success| | ||||
|                 raise "could not request pty" unless success | ||||
|                 channel.exec cmd | ||||
|                 channel.on_data do |c_, data| | ||||
|                   if data == 'not found' | ||||
|                     res[:server] = "Directory '/etc/chef' does not exists" | ||||
|                   elsif data == 'ok' | ||||
|                     res[:server] = "'/etc/chef' renamed to '#{new_name}'" | ||||
|                   else | ||||
|                     DevopsLogger.logger.error "Unexpected error: " + data | ||||
|                     raise(data) | ||||
|                   end | ||||
|                 end | ||||
|               end | ||||
|             end | ||||
|           end | ||||
|         rescue => e | ||||
|           DevopsLogger.logger.error "Unbootstrap error: " + e.message | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 amartynov
						amartynov