Skip to content

Commit dc28896

Browse files
committed
Merge pull request #21 from kylemcmullen/master
support for proxy_uri configuration option
2 parents 2731b00 + 04b288e commit dc28896

File tree

5 files changed

+28
-4
lines changed

5 files changed

+28
-4
lines changed

conf/codedeployagent.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
:root_dir: '/opt/codedeploy-agent/deployment-root'
77
:verbose: false
88
:wait_between_runs: 1
9+
:proxy_uri:

lib/instance_agent/config.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ def initialize
3131
:wait_between_runs => 30,
3232
:wait_after_error => 30,
3333
:codedeploy_test_profile => 'prod',
34-
:on_premises_config_file => '/etc/codedeploy-agent/conf/codedeploy.onpremises.yml'
34+
:on_premises_config_file => '/etc/codedeploy-agent/conf/codedeploy.onpremises.yml',
35+
:proxy_uri => nil
3536
})
3637
end
3738

lib/instance_agent/plugins/codedeploy/codedeploy_control.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ def initialize(options = {})
2222
64 * 1024 * 1024),
2323
:http_wire_trace => true})
2424
end
25+
26+
if InstanceAgent::Config.config[:proxy_uri]
27+
@options = options.update({
28+
:http_proxy => URI(InstanceAgent::Config.config[:proxy_uri]) })
29+
end
2530
end
2631

2732
def validate_ssl_config
@@ -66,6 +71,15 @@ def verify_cert
6671
client.verify_mode = OpenSSL::SSL::VERIFY_PEER
6772
client.ca_file = ENV['SSL_CERT_FILE']
6873

74+
if InstanceAgent::Config.config[:proxy_uri]
75+
proxy_uri = URI(InstanceAgent::Config.config[:proxy_uri])
76+
client.proxy_from_env = false # make sure proxy settings can be overridden
77+
client.proxy_address = proxy_uri.host
78+
client.proxy_port = proxy_uri.port
79+
client.proxy_user = proxy_uri.user if proxy_uri.user
80+
client.proxy_pass = proxy_uri.password if proxy_uri.password
81+
end
82+
6983
client.verify_callback = lambda do |preverify_ok, cert_store|
7084
return false unless preverify_ok
7185
@cert = cert_store.chain[0]

lib/instance_agent/plugins/codedeploy/command_executor.rb

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ def last_install_file_path(deployment_group)
165165
def download_from_s3(deployment_spec, bucket, key, version, etag)
166166
log(:debug, "Downloading artifact bundle from bucket '#{bucket}' and key '#{key}', version '#{version}', etag '#{etag}'")
167167
region = ENV['AWS_REGION'] || InstanceMetadata.region
168+
169+
proxy_uri = nil
170+
if InstanceAgent::Config.config[:proxy_uri]
171+
proxy_uri = URI(InstanceAgent::Config.config[:proxy_uri])
172+
end
168173

169174
if InstanceAgent::Config.config[:log_aws_wire]
170175
s3 = Aws::S3::Client.new(
@@ -177,12 +182,14 @@ def download_from_s3(deployment_spec, bucket, key, version, etag)
177182
16,
178183
64 * 1024 * 1024),
179184
:http_wire_trace => true,
180-
:signature_version => 'v4')
185+
:signature_version => 'v4',
186+
:http_proxy => proxy_uri)
181187
else
182188
s3 = Aws::S3::Client.new(
183189
:region => region,
184190
:ssl_ca_directory => ENV['AWS_SSL_CA_DIRECTORY'],
185-
:signature_version => 'v4')
191+
:signature_version => 'v4',
192+
:http_proxy => proxy_uri)
186193
end
187194

188195
File.open(artifact_bundle(deployment_spec), 'wb') do |file|

test/instance_agent/config_test.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ class InstanceAgentConfigTest < InstanceAgentTestCase
2727
:wait_between_runs => 30,
2828
:wait_after_error => 30,
2929
:codedeploy_test_profile => 'prod',
30-
:on_premises_config_file => '/etc/codedeploy-agent/conf/codedeploy.onpremises.yml'
30+
:on_premises_config_file => '/etc/codedeploy-agent/conf/codedeploy.onpremises.yml',
31+
:proxy_uri => nil
3132
}, InstanceAgent::Config.config)
3233
end
3334

0 commit comments

Comments
 (0)