Class: Hako::Scripts::NginxFront
Defined Under Namespace
Classes: Generator, S3Config
Instance Method Summary
collapse
#after_remove, #deploy_failed, #deploy_finished, #initialize, #oneshot_finished, #oneshot_started, #oneshot_starting, #remove_starting, #rollback_finished, #rollback_started, #rollback_starting
Constructor Details
This class inherits a constructor from Hako::Script
Instance Method Details
58
59
60
61
62
63
64
|
# File 'lib/hako/scripts/nginx_front.rb', line 58
def configure(options)
super
@options = options
@options['locations'] ||= { '/' => {} }
@backend = options.fetch('backend', 'app')
@s3 = S3Config.new(options.fetch('s3'))
end
|
#deploy_started(containers, front_port) ⇒ nil
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/hako/scripts/nginx_front.rb', line 42
def deploy_started(containers, front_port)
front = containers.fetch('front')
if front_port.nil?
else
front.links << link_app
end
front.definition['port_mappings'] << port_mapping(front_port)
upload_config(generate_config(backend_host: front_port.nil? ? 'localhost' : 'backend'))
Hako.logger.info "Uploaded front configuration to s3://#{@s3.bucket}/#{@s3.key(@app.id)}"
end
|
#deploy_starting(containers) ⇒ nil
30
31
32
33
34
35
36
37
|
# File 'lib/hako/scripts/nginx_front.rb', line 30
def deploy_starting(containers)
front = containers.fetch('front')
front.definition['env'].merge!(
'AWS_DEFAULT_REGION' => @s3.region,
'S3_CONFIG_BUCKET' => @s3.bucket,
'S3_CONFIG_KEY' => @s3.key(@app.id),
)
end
|
#generate_config(backend_host:) ⇒ String
78
79
80
|
# File 'lib/hako/scripts/nginx_front.rb', line 78
def generate_config(backend_host:)
Generator.new(@options, backend_host: backend_host).render
end
|
#link_app ⇒ String
67
68
69
|
# File 'lib/hako/scripts/nginx_front.rb', line 67
def link_app
"#{@backend}:backend"
end
|
#port_mapping(front_port) ⇒ Hash
73
74
75
|
# File 'lib/hako/scripts/nginx_front.rb', line 73
def port_mapping(front_port)
{ 'container_port' => 80, 'host_port' => front_port || 80, 'protocol' => 'tcp' }
end
|
#s3_client ⇒ Aws::S3::Client
96
97
98
|
# File 'lib/hako/scripts/nginx_front.rb', line 96
def s3_client
@s3_client ||= Aws::S3::Client.new(region: @s3.region)
end
|
#upload_config(front_conf) ⇒ Hash
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/hako/scripts/nginx_front.rb', line 83
def upload_config(front_conf)
if @dry_run
puts "#{self.class} will upload this configuration:\n#{front_conf}"
else
s3_client.put_object(
body: front_conf,
bucket: @s3.bucket,
key: @s3.key(@app.id),
)
end
end
|