Class: OdaniaOps::Cli::Backup

Inherits:
Thor
  • Object
show all
Defined in:
lib/odania_ops/cli/backup.rb

Instance Method Summary collapse

Instance Method Details

#execute(opts = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/odania_ops/cli/backup.rb', line 14

def execute(opts=nil)
	@type = options[:type]
	$logger.info "Starting backup [#{@type}] #{options[:host]} -> [#{options[:target_type]}] #{options[:target_host]} (Jumpbox: #{options[:jumpbox]})"
	opts = opts.nil? ? {} : JSON.parse(opts)

	# Detect implementation
	backup_script_file = "/tmp/#{Time.now.to_i}_backup.rb"
	clazz = "OdaniaOps::Implementations::Backup::#{@type}".constantize.new options[:host], opts
	clazz.write backup_script_file

	set_jump_host(options[:jumpbox]) unless options[:jumpbox].nil?

	server_host = options[:host_user].nil? ? options[:host] : "#{options[:host_user]}@#{options[:host]}"
	on server_host, in: :sequence do |host|
		within '/tmp' do
			server_backup_file = "/tmp/#{@type}_backup.rb"
			upload! backup_script_file, server_backup_file
			result = capture "sudo #{server_backup_file}"
			$logger.info result
		end
	end

	$logger.info "Finished backup [#{@type}] #{options[:host]} -> [#{options[:target_type]}] #{options[:target_host]} (Jumpbox: #{options[:jumpbox]})"
end