This repository has been archived by the owner on Dec 31, 2022. It is now read-only.
/
drivers_webserver_nginx.rb
62 lines (54 loc) · 1.89 KB
/
drivers_webserver_nginx.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
# frozen_string_literal: true
module Drivers
module Webserver
class Nginx < Drivers::Webserver::Base
adapter :nginx
allowed_engines :nginx
output filter: %i[
build_type client_body_timeout client_header_timeout client_max_body_size dhparams keepalive_timeout
log_dir log_level proxy_read_timeout proxy_send_timeout send_timeout ssl_for_legacy_browsers
extra_config extra_config_ssl enable_upgrade_method port ssl_port
]
notifies :deploy, action: :restart, resource: 'service[nginx]', timer: :delayed
notifies :undeploy, action: :restart, resource: 'service[nginx]', timer: :delayed
log_paths lambda { |context|
%w[access.log error.log].map do |log_type|
File.join(context.raw_out[:log_dir], "#{context.app[:domains].first}.#{log_type}")
end
}
def raw_out
output = node['defaults']['webserver'].merge(node['nginx']).merge(
node['deploy'][app['shortname']]['webserver'] || {}
).symbolize_keys
output[:extra_config_ssl] = output[:extra_config] if output[:extra_config_ssl] == true
output
end
def setup
node.default['nginx']['install_method'] = out[:build_type].to_s == 'source' ? 'source' : 'package'
recipe = out[:build_type].to_s == 'source' ? 'source' : 'default'
context.include_recipe("chef_nginx::#{recipe}")
define_service(:start)
end
def configure
add_ssl_directory
add_ssl_item(:private_key)
add_ssl_item(:certificate)
add_ssl_item(:chain)
add_dhparams
add_appserver_config
enable_appserver_config
super
end
def before_deploy
define_service
end
alias before_undeploy before_deploy
def conf_dir
File.join('/', 'etc', 'nginx')
end
def service_name
'nginx'
end
end
end
end