From 0bf0c6d71348bff40a57ae91156f097833fe35ab Mon Sep 17 00:00:00 2001 From: Anton Martynov Date: Fri, 11 Dec 2015 13:15:36 +0300 Subject: [PATCH 1/2] without aws stack template validation --- devops-service/providers/ec2.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/devops-service/providers/ec2.rb b/devops-service/providers/ec2.rb index a51b423..dbb5d6b 100644 --- a/devops-service/providers/ec2.rb +++ b/devops-service/providers/ec2.rb @@ -261,8 +261,9 @@ module Provider end def validate_stack_template template - r = cloud_formation.validate_template({'TemplateBody' => template}) - pp r.body + #r = cloud_formation.validate_template({'TemplateBody' => template}) + #pp r.body + true end def delete_stack(stack) From 0c6d07b60641342d5e05ab8a6c8c046c9b68c10c Mon Sep 17 00:00:00 2001 From: amartynov Date: Mon, 21 Dec 2015 16:07:52 +0300 Subject: [PATCH 2/2] ssh command changed to net/ssh lib --- .../lib/executors/server_executor.rb | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/devops-service/lib/executors/server_executor.rb b/devops-service/lib/executors/server_executor.rb index 7ff7fdc..0518211 100644 --- a/devops-service/lib/executors/server_executor.rb +++ b/devops-service/lib/executors/server_executor.rb @@ -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