deploy-agent 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/deploy_agent.rb +1 -1
- data/lib/deploy_agent/cli.rb +1 -1
- data/lib/deploy_agent/configuration_generator.rb +119 -0
- metadata +18 -4
- data/lib/deploy_agent/certificate_manager.rb +0 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e1c889d6e8699972cf1452a86c42d9be633cc65
|
4
|
+
data.tar.gz: dd2f460d6e6d8fbaeac3da023719f7a5c04b62fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6eb91a06b4226c38fbd7e5ca0f8f28897a36e3c19e4079e52a2f6b1702e3d67883fa2561840977d024ecf3f28815e5f29b39793b8f39a30fb8d1a7f175c00259
|
7
|
+
data.tar.gz: 9e3bca578a01b6b578c48a353f447db801f70d661b1b395a120467613f0990b3e3df516c99f315f550115f5b76964184c12b154eb3e312bf185c339def5af10d
|
data/lib/deploy_agent.rb
CHANGED
data/lib/deploy_agent/cli.rb
CHANGED
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'readline'
|
2
|
+
require 'net/https'
|
3
|
+
require 'json'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
module DeployAgent
|
7
|
+
class ConfigurationGenerator
|
8
|
+
attr_accessor :claim_code
|
9
|
+
|
10
|
+
def configure
|
11
|
+
if File.file?(CERTIFICATE_PATH) || File.file?(ACCESS_PATH)
|
12
|
+
puts "***************************** WARNING *****************************"
|
13
|
+
puts "The Deploy agent has already been configured. Are you sure you wish"
|
14
|
+
puts "to remove the existing configuration and generate a new one?"
|
15
|
+
puts
|
16
|
+
|
17
|
+
response = ask("Remove existing configuration? [no]: ")
|
18
|
+
Process.exit(1) unless response == 'yes'
|
19
|
+
puts
|
20
|
+
end
|
21
|
+
|
22
|
+
generate_certificate
|
23
|
+
generate_access_list
|
24
|
+
|
25
|
+
puts
|
26
|
+
puts "You can now associate this Agent with your Deploy account."
|
27
|
+
puts "Browse to Settings -> Agents in your account and enter the code below:"
|
28
|
+
puts
|
29
|
+
puts " >> #{claim_code} <<"
|
30
|
+
puts
|
31
|
+
puts "You can start the agent using the following command:"
|
32
|
+
puts
|
33
|
+
puts " # deploy-agent start"
|
34
|
+
puts
|
35
|
+
end
|
36
|
+
|
37
|
+
def generate_certificate
|
38
|
+
puts 'This tool will assist you in generating a certificate for your Deploy agent.'
|
39
|
+
puts 'Please enter a name for this agent.'
|
40
|
+
|
41
|
+
name = ask("Agent Name: ")
|
42
|
+
if name.length < 2
|
43
|
+
puts "Name must be at least 2 characters."
|
44
|
+
Process.exit(1)
|
45
|
+
else
|
46
|
+
uri = certificate_uri
|
47
|
+
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
|
48
|
+
request = Net::HTTP::Post.new(uri)
|
49
|
+
request.body = {:name => name}.to_json
|
50
|
+
request['Content-Type'] = 'application/json'
|
51
|
+
response = http.request request
|
52
|
+
response_hash = JSON.parse(response.body)
|
53
|
+
if response_hash['status'] == 'success'
|
54
|
+
self.claim_code = response_hash['data']['claim_code']
|
55
|
+
|
56
|
+
File.write(CERTIFICATE_PATH, response_hash['data']['certificate'])
|
57
|
+
File.write(KEY_PATH, response_hash['data']['private_key'])
|
58
|
+
puts
|
59
|
+
puts "Certificate has been successfully generated and installed."
|
60
|
+
puts
|
61
|
+
else
|
62
|
+
puts
|
63
|
+
puts "An error occurred obtaining a certificate."
|
64
|
+
puts "Please contact support, quoting the debug information below:"
|
65
|
+
puts
|
66
|
+
puts response.inspect
|
67
|
+
puts response.body
|
68
|
+
puts
|
69
|
+
Process.exit(1)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def generate_access_list
|
76
|
+
puts "By default this utility only allows connections from DeployHQ to localhost."
|
77
|
+
puts "To to deploy to other hosts or networks enter their addresses below:\n"
|
78
|
+
|
79
|
+
user_hosts = []
|
80
|
+
loop do
|
81
|
+
host = ask("IP Address [leave blank to finish]: ")
|
82
|
+
if host.empty?
|
83
|
+
break
|
84
|
+
else
|
85
|
+
user_hosts << host
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
begin
|
90
|
+
access_list = File.open(ACCESS_PATH, 'w')
|
91
|
+
|
92
|
+
# Add header and localhost entries
|
93
|
+
access_list.write("# This file contains a list of host and network addresses the Deploy agent\n# will allow connections to. Add IPs or networks (CIDR format) as needed.\n\n# Allow deployments to localhost\n127.0.0.1\n::1\n")
|
94
|
+
|
95
|
+
# Add user entries (if any)
|
96
|
+
access_list.write("\n# User defined destinations\n")
|
97
|
+
user_hosts.each do |host|
|
98
|
+
access_list.write("#{host}\n")
|
99
|
+
end
|
100
|
+
ensure
|
101
|
+
access_list.close if access_list
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
def ask(question)
|
108
|
+
Readline.completion_proc = Proc.new {}
|
109
|
+
Readline.readline(question, true)
|
110
|
+
rescue Interrupt => e
|
111
|
+
puts
|
112
|
+
Process.exit(1)
|
113
|
+
end
|
114
|
+
|
115
|
+
def certificate_uri
|
116
|
+
URI(ENV['DEPLOY_AGENT_CERTIFICATE_URL'] || 'https://api.deployhq.com/api/v1/agents/create')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deploy-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- aTech Media
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nio4r
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.5.4
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.16'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.16'
|
55
69
|
description: This gem allows you to configure a secure proxy through which Deploy
|
56
70
|
can forward connections
|
57
71
|
email:
|
@@ -65,8 +79,8 @@ files:
|
|
65
79
|
- ca.crt
|
66
80
|
- lib/deploy_agent.rb
|
67
81
|
- lib/deploy_agent/agent.rb
|
68
|
-
- lib/deploy_agent/certificate_manager.rb
|
69
82
|
- lib/deploy_agent/cli.rb
|
83
|
+
- lib/deploy_agent/configuration_generator.rb
|
70
84
|
- lib/deploy_agent/destination_connection.rb
|
71
85
|
- lib/deploy_agent/server_connection.rb
|
72
86
|
homepage: https://www.deployhq.com/
|
@@ -88,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
102
|
version: '0'
|
89
103
|
requirements: []
|
90
104
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.6.
|
105
|
+
rubygems_version: 2.6.14
|
92
106
|
signing_key:
|
93
107
|
specification_version: 4
|
94
108
|
summary: The Deploy agent
|
@@ -1,88 +0,0 @@
|
|
1
|
-
gem 'rb-readline', '0.5.4'
|
2
|
-
require 'readline'
|
3
|
-
require 'net/https'
|
4
|
-
require 'json'
|
5
|
-
require 'fileutils'
|
6
|
-
|
7
|
-
module DeployAgent
|
8
|
-
class CertificateManager
|
9
|
-
|
10
|
-
def certificate_uri
|
11
|
-
URI(ENV['DEPLOY_AGENT_CERTIFICATE_URL'] || 'https://api.deployhq.com/api/v1/agents/create')
|
12
|
-
end
|
13
|
-
|
14
|
-
def generate_certificate
|
15
|
-
FileUtils.mkdir_p(CONFIG_PATH)
|
16
|
-
unless File.file?(ACCESS_PATH)
|
17
|
-
File.write(ACCESS_PATH, "# This file contains a list of host and network addresses the Deploy agent\n # will allow connections to. Add IPs or networks (CIDR format) as needed.\n\n# Allow deployments to localhost\n127.0.0.1\n::1\n")
|
18
|
-
end
|
19
|
-
|
20
|
-
puts 'This tool will assist you in generating a certificate for your Deploy agent.'
|
21
|
-
puts
|
22
|
-
if File.file?(CERTIFICATE_PATH)
|
23
|
-
puts "***************************** WARNING *****************************"
|
24
|
-
puts "The Deploy agent has already been configured. Are you sure you wish"
|
25
|
-
puts "to remove the existing certificate and generate a new one?"
|
26
|
-
puts
|
27
|
-
Readline.completion_proc = Proc.new {}
|
28
|
-
begin
|
29
|
-
response = Readline.readline("Remove existing certificate? [no]: ", true)
|
30
|
-
rescue Interrupt => e
|
31
|
-
puts
|
32
|
-
Process.exit(1)
|
33
|
-
end
|
34
|
-
unless response == 'yes'
|
35
|
-
Process.exit(1)
|
36
|
-
end
|
37
|
-
puts
|
38
|
-
end
|
39
|
-
puts 'Please enter a name for this agent.'
|
40
|
-
Readline.completion_proc = Proc.new {}
|
41
|
-
begin
|
42
|
-
name = Readline.readline("Agent Name: ", true)
|
43
|
-
rescue Interrupt => e
|
44
|
-
puts
|
45
|
-
Process.exit(1)
|
46
|
-
end
|
47
|
-
if name.length < 2
|
48
|
-
puts "Name must be at least 2 characters."
|
49
|
-
Process.exit(1)
|
50
|
-
else
|
51
|
-
uri = certificate_uri
|
52
|
-
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
|
53
|
-
request = Net::HTTP::Post.new(uri)
|
54
|
-
request.body = {:name => name}.to_json
|
55
|
-
request['Content-Type'] = 'application/json'
|
56
|
-
response = http.request request
|
57
|
-
response_hash = JSON.parse(response.body)
|
58
|
-
if response_hash['status'] == 'success'
|
59
|
-
File.write(CERTIFICATE_PATH, response_hash['data']['certificate'])
|
60
|
-
File.write(KEY_PATH, response_hash['data']['private_key'])
|
61
|
-
puts
|
62
|
-
puts "Certificate has been successfully generated and installed."
|
63
|
-
puts
|
64
|
-
puts "You can now associate this Agent with your Deploy account."
|
65
|
-
puts "Browse to Settings -> Agents in your account and enter the code below:"
|
66
|
-
puts
|
67
|
-
puts " >> #{response_hash['data']['claim_code']} <<"
|
68
|
-
puts
|
69
|
-
puts "You can start the agent using the following command:"
|
70
|
-
puts
|
71
|
-
puts " # deploy-agent start"
|
72
|
-
puts
|
73
|
-
else
|
74
|
-
puts
|
75
|
-
puts "An error occurred obtaining a certificate."
|
76
|
-
puts "Please contact support, quoting the debug information below:"
|
77
|
-
puts
|
78
|
-
puts response.inspect
|
79
|
-
puts response.body
|
80
|
-
puts
|
81
|
-
Process.exit(1)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
end
|