Class: DanarchyDeploy::RemoteDeploy
- Inherits:
-
Object
- Object
- DanarchyDeploy::RemoteDeploy
- Defined in:
- lib/danarchy_deploy.rb
Class Method Summary collapse
- .install_gem(connector, options) ⇒ Object
- .new(deployment, options) ⇒ Object
- .pull_deployment(connector, options) ⇒ Object
-
.push_deployment(connector, options) ⇒ Object
Add ssh-keygen function, then update.
- .remote_Cleanup(connector, options) ⇒ Object
- .remote_LocalDeploy(connector, options) ⇒ Object
Class Method Details
.install_gem(connector, options) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/danarchy_deploy.rb', line 67 def self.install_gem(connector, ) puts "\n > Installing danarchy_deploy on #{connector[:hostname]}" install_result = DanarchyDeploy::Helpers.run_command("ssh -i #{connector[:ssh_key]} #{connector[:ssh_user]}@#{connector[:ipv4]} -o ConnectTimeout=30 'sudo gem install -f danarchy_deploy && test -d #{options[:working_dir]} || sudo mkdir -vp #{options[:working_dir]} && sudo chown -Rc #{connector[:ssh_user]}:#{connector[:ssh_user]} #{options[:working_dir]}'", ) if install_result[:stderr] puts ' ! Gem install failed!' abort("STDERR:\n#{install_result[:stderr]}") else puts " |+ Gem installed!" end end |
.new(deployment, options) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/danarchy_deploy.rb', line 38 def self.new(deployment, ) puts "\n" + self.name [:working_dir] = [:deploy_dir] + '/' + deployment[:hostname] connector = { hostname: deployment[:hostname], ipv4: deployment[:ipv4], ssh_user: deployment[:ssh_user], ssh_key: deployment[:ssh_key] } install_gem(connector, ) push_deployment(connector, ) deploy_result = remote_LocalDeploy(connector, ) if deploy_result[:stderr] puts ' ! Deployment failed!' abort("STDERR:\n#{deploy_result[:stderr]}") else puts deploy_result[:stdout] end pull_deployment(connector, ) remote_Cleanup(connector, ) puts "\nRemote deployment complete!" deployment = JSON.parse(File.read([:deploy_file]), symbolize_names: true) if [:deploy_file].end_with?('.json') deployment = YAML.load_file([:deploy_file]) if [:deploy_file].end_with?('.yaml') deployment end |
.pull_deployment(connector, options) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/danarchy_deploy.rb', line 107 def self.pull_deployment(connector, ) puts "\n > Pulling deployment: #{options[:deploy_file]}" pull_result = DanarchyDeploy::Helpers.run_command("scp -i #{connector[:ssh_key]} #{connector[:ssh_user]}@#{connector[:ipv4]}:#{options[:deploy_file]} #{options[:deploy_file]}", ) if pull_result[:stderr] puts ' ! Deployment pull failed!' abort("STDERR:\n#{pull_result[:stderr]}") else puts " |+ Deployment pulled!" end end |
.push_deployment(connector, options) ⇒ Object
Add ssh-keygen function, then update
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/danarchy_deploy.rb', line 80 def self.push_deployment(connector, ) puts "\n > Pushing deployment: #{options[:deploy_file]}" push_result = DanarchyDeploy::Helpers.run_command("rsync --rsh 'ssh -i #{connector[:ssh_key]}' -Havzu --delete #{options[:working_dir]}/ #{connector[:ssh_user]}@#{connector[:ipv4]}:#{options[:working_dir]}/", ) # push_result = DanarchyDeploy::Helpers.run_command("scp -i #{connector[:ssh_key]} #{options[:deploy_file]} #{connector[:ssh_user]}@#{connector[:ipv4]}:#{options[:deploy_dir]}/#{connector[:hostname]}/", options) if push_result[:stderr] puts ' ! Deployment push failed!' abort("STDERR:\n#{push_result[:stderr]}") else puts " |+ Deployment pushed!" end end |
.remote_Cleanup(connector, options) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/danarchy_deploy.rb', line 119 def self.remote_Cleanup(connector, ) puts "\n > Cleaning up: #{options[:deploy_dir]}" cleanup_result = DanarchyDeploy::Helpers.run_command("ssh -i #{connector[:ssh_key]} #{connector[:ssh_user]}@#{connector[:ipv4]} 'sudo rm -rfv #{options[:working_dir]}'", ) if cleanup_result[:stderr] puts ' ! Deployment cleanup failed!' abort("STDERR:\n#{cleanup_result[:stderr]}") else puts " |+ Deployment cleaned up!" end end |
.remote_LocalDeploy(connector, options) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/danarchy_deploy.rb', line 93 def self.remote_LocalDeploy(connector, ) puts "\n > Running LocalDeploy on #{connector[:hostname]}\n\tOutput will return at the end of deployment." deployment = "ssh -i #{connector[:ssh_key]} #{connector[:ssh_user]}@#{connector[:ipv4]} 'sudo danarchy_deploy local " deployment += '--first-run ' if [:first_run] deployment += '--ssh-verbose ' if [:ssh_verbose] deployment += '--pretend ' if [:pretend] deployment += '--json ' if [:deploy_file].end_with?('.json') deployment += '--yaml ' if [:deploy_file].end_with?('.yaml') deployment += [:deploy_file] + '\'' DanarchyDeploy::Helpers.run_command(deployment, ) end |