from-scratch 0.3.0 → 0.5.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.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/Berksfile +2 -1
  3. data/Berksfile.lock +20 -1
  4. data/cookbooks/bluepill/CHANGELOG.md +93 -0
  5. data/cookbooks/bluepill/README.md +91 -0
  6. data/cookbooks/bluepill/attributes/default.rb +44 -0
  7. data/cookbooks/bluepill/metadata.json +1 -0
  8. data/cookbooks/bluepill/providers/service.rb +172 -0
  9. data/cookbooks/bluepill/recipes/default.rb +48 -0
  10. data/cookbooks/bluepill/recipes/rsyslog.rb +28 -0
  11. data/cookbooks/bluepill/resources/service.rb +27 -0
  12. data/cookbooks/bluepill/templates/default/bluepill_init.fedora.erb +34 -0
  13. data/cookbooks/bluepill/templates/default/bluepill_init.freebsd.erb +32 -0
  14. data/cookbooks/bluepill/templates/default/bluepill_init.lsb.erb +37 -0
  15. data/cookbooks/bluepill/templates/default/bluepill_init.rhel.erb +34 -0
  16. data/cookbooks/bluepill/templates/default/bluepill_rsyslog.conf.erb +1 -0
  17. data/cookbooks/nginx/CHANGELOG.md +435 -0
  18. data/cookbooks/nginx/README.md +521 -0
  19. data/cookbooks/nginx/attributes/auth_request.rb +23 -0
  20. data/cookbooks/nginx/attributes/default.rb +131 -0
  21. data/cookbooks/nginx/attributes/devel.rb +24 -0
  22. data/cookbooks/nginx/attributes/echo.rb +24 -0
  23. data/cookbooks/nginx/attributes/geoip.rb +31 -0
  24. data/cookbooks/nginx/attributes/headers_more.rb +24 -0
  25. data/cookbooks/nginx/attributes/lua.rb +28 -0
  26. data/cookbooks/nginx/attributes/naxsi.rb +24 -0
  27. data/cookbooks/nginx/attributes/openssl_source.rb +23 -0
  28. data/cookbooks/nginx/attributes/pagespeed.rb +9 -0
  29. data/cookbooks/nginx/attributes/passenger.rb +58 -0
  30. data/cookbooks/nginx/attributes/rate_limiting.rb +23 -0
  31. data/cookbooks/nginx/attributes/repo.rb +35 -0
  32. data/cookbooks/nginx/attributes/set_misc.rb +8 -0
  33. data/cookbooks/nginx/attributes/socketproxy.rb +13 -0
  34. data/cookbooks/nginx/attributes/source.rb +42 -0
  35. data/cookbooks/nginx/attributes/status.rb +22 -0
  36. data/cookbooks/nginx/attributes/syslog.rb +24 -0
  37. data/cookbooks/nginx/attributes/upload_progress.rb +26 -0
  38. data/cookbooks/nginx/definitions/nginx_site.rb +50 -0
  39. data/cookbooks/nginx/files/default/mime.types +78 -0
  40. data/cookbooks/nginx/files/default/naxsi_core.rules +82 -0
  41. data/cookbooks/nginx/libraries/matchers.rb +20 -0
  42. data/cookbooks/nginx/metadata.json +351 -0
  43. data/cookbooks/nginx/recipes/authorized_ips.rb +32 -0
  44. data/cookbooks/nginx/recipes/commons.rb +24 -0
  45. data/cookbooks/nginx/recipes/commons_conf.rb +42 -0
  46. data/cookbooks/nginx/recipes/commons_dir.rb +57 -0
  47. data/cookbooks/nginx/recipes/commons_script.rb +29 -0
  48. data/cookbooks/nginx/recipes/default.rb +31 -0
  49. data/cookbooks/nginx/recipes/headers_more_module.rb +50 -0
  50. data/cookbooks/nginx/recipes/http_auth_request_module.rb +52 -0
  51. data/cookbooks/nginx/recipes/http_echo_module.rb +46 -0
  52. data/cookbooks/nginx/recipes/http_geoip_module.rb +113 -0
  53. data/cookbooks/nginx/recipes/http_gzip_static_module.rb +30 -0
  54. data/cookbooks/nginx/recipes/http_mp4_module.rb +2 -0
  55. data/cookbooks/nginx/recipes/http_perl_module.rb +23 -0
  56. data/cookbooks/nginx/recipes/http_realip_module.rb +38 -0
  57. data/cookbooks/nginx/recipes/http_spdy_module.rb +23 -0
  58. data/cookbooks/nginx/recipes/http_ssl_module.rb +23 -0
  59. data/cookbooks/nginx/recipes/http_stub_status_module.rb +36 -0
  60. data/cookbooks/nginx/recipes/ipv6.rb +23 -0
  61. data/cookbooks/nginx/recipes/lua.rb +47 -0
  62. data/cookbooks/nginx/recipes/naxsi_module.rb +52 -0
  63. data/cookbooks/nginx/recipes/ngx_devel_module.rb +44 -0
  64. data/cookbooks/nginx/recipes/ngx_lua_module.rb +47 -0
  65. data/cookbooks/nginx/recipes/ohai_plugin.rb +35 -0
  66. data/cookbooks/nginx/recipes/openssl_source.rb +45 -0
  67. data/cookbooks/nginx/recipes/package.rb +52 -0
  68. data/cookbooks/nginx/recipes/pagespeed_module.rb +62 -0
  69. data/cookbooks/nginx/recipes/passenger.rb +56 -0
  70. data/cookbooks/nginx/recipes/repo.rb +41 -0
  71. data/cookbooks/nginx/recipes/repo_passenger.rb +39 -0
  72. data/cookbooks/nginx/recipes/set_misc.rb +30 -0
  73. data/cookbooks/nginx/recipes/socketproxy.rb +26 -0
  74. data/cookbooks/nginx/recipes/source.rb +205 -0
  75. data/cookbooks/nginx/recipes/syslog_module.rb +69 -0
  76. data/cookbooks/nginx/recipes/upload_progress_module.rb +53 -0
  77. data/cookbooks/nginx/templates/debian/nginx.init.erb +97 -0
  78. data/cookbooks/nginx/templates/default/default-site.erb +11 -0
  79. data/cookbooks/nginx/templates/default/modules/authorized_ip.erb +6 -0
  80. data/cookbooks/nginx/templates/default/modules/http_geoip.conf.erb +4 -0
  81. data/cookbooks/nginx/templates/default/modules/http_gzip_static.conf.erb +1 -0
  82. data/cookbooks/nginx/templates/default/modules/http_realip.conf.erb +7 -0
  83. data/cookbooks/nginx/templates/default/modules/nginx_status.erb +14 -0
  84. data/cookbooks/nginx/templates/default/modules/passenger.conf.erb +13 -0
  85. data/cookbooks/nginx/templates/default/modules/socketproxy.conf.erb +89 -0
  86. data/cookbooks/nginx/templates/default/modules/upload_progress.erb +4 -0
  87. data/cookbooks/nginx/templates/default/nginx-upstart.conf.erb +39 -0
  88. data/cookbooks/nginx/templates/default/nginx.conf.erb +103 -0
  89. data/cookbooks/nginx/templates/default/nginx.init.erb +111 -0
  90. data/cookbooks/nginx/templates/default/nginx.pill.erb +15 -0
  91. data/cookbooks/nginx/templates/default/nginx.sysconfig.erb +1 -0
  92. data/cookbooks/nginx/templates/default/nxdissite.erb +29 -0
  93. data/cookbooks/nginx/templates/default/nxensite.erb +38 -0
  94. data/cookbooks/nginx/templates/default/plugins/nginx.rb.erb +66 -0
  95. data/cookbooks/nginx/templates/default/sv-nginx-log-run.erb +2 -0
  96. data/cookbooks/nginx/templates/default/sv-nginx-run.erb +4 -0
  97. data/cookbooks/nginx/templates/gentoo/nginx.init.erb +87 -0
  98. data/cookbooks/nginx/templates/suse/nginx.init.erb +115 -0
  99. data/cookbooks/nginx/templates/ubuntu/nginx.init.erb +97 -0
  100. data/cookbooks/ohai/CHANGELOG.md +69 -0
  101. data/cookbooks/ohai/README.md +89 -0
  102. data/cookbooks/ohai/attributes/default.rb +31 -0
  103. data/cookbooks/ohai/files/default/plugins/README +1 -0
  104. data/cookbooks/ohai/libraries/matchers.rb +14 -0
  105. data/cookbooks/ohai/metadata.json +1 -0
  106. data/cookbooks/ohai/providers/hint.rb +38 -0
  107. data/cookbooks/ohai/recipes/default.rb +52 -0
  108. data/cookbooks/ohai/resources/hint.rb +5 -0
  109. data/cookbooks/packagecloud/CHANGELOG.md +12 -0
  110. data/cookbooks/packagecloud/README.md +80 -0
  111. data/cookbooks/packagecloud/attributes/default.rb +8 -0
  112. data/cookbooks/packagecloud/libraries/helper.rb +43 -0
  113. data/cookbooks/packagecloud/libraries/matcher.rb +7 -0
  114. data/cookbooks/packagecloud/metadata.json +1 -0
  115. data/cookbooks/packagecloud/providers/repo.rb +212 -0
  116. data/cookbooks/packagecloud/resources/repo.rb +10 -0
  117. data/cookbooks/packagecloud/templates/.kitchen/logs/kitchen.log +29 -0
  118. data/cookbooks/packagecloud/templates/default/apt.erb +2 -0
  119. data/cookbooks/packagecloud/templates/default/yum.erb +15 -0
  120. data/cookbooks/rsyslog/CHANGELOG.md +193 -0
  121. data/cookbooks/rsyslog/README.md +276 -0
  122. data/cookbooks/rsyslog/attributes/default.rb +131 -0
  123. data/cookbooks/rsyslog/libraries/helpers.rb +25 -0
  124. data/cookbooks/rsyslog/metadata.json +1 -0
  125. data/cookbooks/rsyslog/providers/file_input.rb +44 -0
  126. data/cookbooks/rsyslog/recipes/client.rb +87 -0
  127. data/cookbooks/rsyslog/recipes/default.rb +89 -0
  128. data/cookbooks/rsyslog/recipes/server.rb +44 -0
  129. data/cookbooks/rsyslog/resources/file_input.rb +28 -0
  130. data/cookbooks/rsyslog/templates/default/35-server-per-host.conf.erb +62 -0
  131. data/cookbooks/rsyslog/templates/default/49-relp.conf.erb +10 -0
  132. data/cookbooks/rsyslog/templates/default/49-remote.conf.erb +30 -0
  133. data/cookbooks/rsyslog/templates/default/50-default.conf.erb +6 -0
  134. data/cookbooks/rsyslog/templates/default/file-input.conf.erb +15 -0
  135. data/cookbooks/rsyslog/templates/default/omnios-manifest.xml.erb +30 -0
  136. data/cookbooks/rsyslog/templates/default/rsyslog.conf.erb +117 -0
  137. data/cookbooks/rsyslog/templates/smartos/50-default.conf.erb +18 -0
  138. data/cookbooks/runit/.kitchen.cloud.yml +103 -0
  139. data/cookbooks/runit/.kitchen.yml +38 -0
  140. data/cookbooks/runit/.rspec +3 -0
  141. data/cookbooks/runit/.rubocop.yml +45 -0
  142. data/cookbooks/runit/Berksfile.disabled +11 -0
  143. data/cookbooks/runit/CHANGELOG.md +226 -0
  144. data/cookbooks/runit/CONTRIBUTING.md +266 -0
  145. data/cookbooks/runit/Cheffile +11 -0
  146. data/cookbooks/runit/Gemfile +17 -0
  147. data/cookbooks/runit/LICENSE +201 -0
  148. data/cookbooks/runit/README.md +435 -0
  149. data/cookbooks/runit/Rakefile +23 -0
  150. data/cookbooks/runit/TESTING.md +26 -0
  151. data/cookbooks/runit/attributes/default.rb +62 -0
  152. data/cookbooks/runit/files/default/runit.seed +1 -0
  153. data/cookbooks/runit/files/default/runsvdir +0 -0
  154. data/cookbooks/runit/files/ubuntu-6.10/runsvdir +6 -0
  155. data/cookbooks/runit/files/ubuntu-7.04/runsvdir +7 -0
  156. data/cookbooks/runit/files/ubuntu-7.10/runsvdir +7 -0
  157. data/cookbooks/runit/files/ubuntu-8.04/runsvdir +7 -0
  158. data/cookbooks/runit/libraries/default.rb +0 -0
  159. data/cookbooks/runit/libraries/helpers.rb +190 -0
  160. data/cookbooks/runit/libraries/matchers.rb +69 -0
  161. data/cookbooks/runit/libraries/provider_runit_service.rb +326 -0
  162. data/cookbooks/runit/libraries/resource_runit_service.rb +267 -0
  163. data/cookbooks/runit/metadata.json +50 -0
  164. data/cookbooks/runit/recipes/default.rb +91 -0
  165. data/cookbooks/runit/templates/debian/init.d.erb +66 -0
  166. data/cookbooks/runit/templates/default/log-config.erb +24 -0
  167. data/cookbooks/runit/templates/gentoo/runit-start.sh.erb +32 -0
  168. data/cookbooks/scratchify/Berksfile +2 -1
  169. data/cookbooks/scratchify/Berksfile.lock +20 -1
  170. data/cookbooks/scratchify/lib/from-scratch.rb +1 -4
  171. data/cookbooks/scratchify/lib/from-scratch/version.rb +1 -1
  172. data/cookbooks/scratchify/metadata.json +5 -2
  173. data/cookbooks/scratchify/recipes/default.rb +15 -1
  174. data/cookbooks/scratchify/recipes/nginx_site.rb +4 -0
  175. data/cookbooks/scratchify/recipes/pre_rvm.rb +5 -0
  176. data/cookbooks/scratchify/templates/nginx.erb +31 -0
  177. data/cookbooks/scratchify/templates/node.json.erb +21 -6
  178. data/cookbooks/yum-epel/CHANGELOG.md +84 -0
  179. data/cookbooks/yum-epel/README.md +172 -0
  180. data/cookbooks/yum-epel/attributes/default.rb +1 -0
  181. data/cookbooks/yum-epel/attributes/epel-debuginfo.rb +28 -0
  182. data/cookbooks/yum-epel/attributes/epel-source.rb +28 -0
  183. data/cookbooks/yum-epel/attributes/epel-testing-debuginfo.rb +28 -0
  184. data/cookbooks/yum-epel/attributes/epel-testing-source.rb +28 -0
  185. data/cookbooks/yum-epel/attributes/epel-testing.rb +28 -0
  186. data/cookbooks/yum-epel/attributes/epel.rb +28 -0
  187. data/cookbooks/yum-epel/metadata.json +1 -0
  188. data/cookbooks/yum-epel/recipes/default.rb +61 -0
  189. data/cookbooks/yum/CHANGELOG.md +294 -0
  190. data/cookbooks/yum/README.md +285 -0
  191. data/cookbooks/yum/attributes/main.rb +100 -0
  192. data/cookbooks/yum/libraries/matchers.rb +27 -0
  193. data/cookbooks/yum/metadata.json +1 -0
  194. data/cookbooks/yum/providers/globalconfig.rb +41 -0
  195. data/cookbooks/yum/providers/repository.rb +106 -0
  196. data/cookbooks/yum/recipes/default.rb +26 -0
  197. data/cookbooks/yum/resources/globalconfig.rb +109 -0
  198. data/cookbooks/yum/resources/repository.rb +69 -0
  199. data/cookbooks/yum/templates/default/main.erb +276 -0
  200. data/cookbooks/yum/templates/default/repo.erb +125 -0
  201. data/lib/from-scratch.rb +1 -0
  202. data/lib/from-scratch/version.rb +1 -1
  203. data/metadata.rb +5 -1
  204. data/recipes/default.rb +15 -1
  205. data/recipes/nginx_site.rb +4 -0
  206. data/recipes/pre_rvm.rb +5 -0
  207. data/templates/nginx.erb +31 -0
  208. data/templates/node.json.erb +21 -6
  209. metadata +194 -1
@@ -0,0 +1,52 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipe:: package
4
+ # Author:: AJ Christensen <aj@junglist.gen.nz>
5
+ #
6
+ # Copyright 2008-2013, Chef Software, Inc.
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ include_recipe 'nginx::ohai_plugin'
22
+
23
+ if platform_family?('rhel')
24
+ if node['nginx']['repo_source'] == 'epel'
25
+ include_recipe 'yum-epel'
26
+ elsif node['nginx']['repo_source'] == 'nginx'
27
+ include_recipe 'nginx::repo'
28
+ package_install_opts = '--disablerepo=* --enablerepo=nginx'
29
+ elsif node['nginx']['repo_source'].to_s.empty?
30
+ log "node['nginx']['repo_source'] was not set, no additional yum repositories will be installed." do
31
+ level :debug
32
+ end
33
+ else
34
+ fail ArgumentError, "Unknown value '#{node['nginx']['repo_source']}' was passed to the nginx cookbook."
35
+ end
36
+ elsif platform_family?('debian')
37
+ include_recipe 'nginx::repo_passenger' if node['nginx']['repo_source'] == 'passenger'
38
+ include_recipe 'nginx::repo' if node['nginx']['repo_source'] == 'nginx'
39
+ end
40
+
41
+ package node['nginx']['package_name'] do
42
+ options package_install_opts
43
+ notifies :reload, 'ohai[reload_nginx]', :immediately
44
+ not_if 'which nginx'
45
+ end
46
+
47
+ service 'nginx' do
48
+ supports :status => true, :restart => true, :reload => true
49
+ action :enable
50
+ end
51
+
52
+ include_recipe 'nginx::commons'
@@ -0,0 +1,62 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipe:: pagespeed_module
4
+ #
5
+
6
+ src_filename = ::File.basename(node['nginx']['pagespeed']['url'])
7
+ src_filepath = "#{Chef::Config['file_cache_path']}/#{src_filename}"
8
+ extract_path = "#{Chef::Config['file_cache_path']}/nginx_pagespeed-#{node['nginx']['pagespeed']['version']}"
9
+
10
+ remote_file src_filepath do
11
+ source node['nginx']['pagespeed']['url']
12
+ owner 'root'
13
+ group node['root_group']
14
+ mode '0644'
15
+ not_if { ::File.exist?(src_filepath) }
16
+ end
17
+
18
+ psol_src_filename = "psol-#{::File.basename(node['nginx']['psol']['url'])}"
19
+ psol_src_filepath = "#{Chef::Config['file_cache_path']}/#{psol_src_filename}"
20
+ psol_extract_path = "#{Chef::Config['file_cache_path']}/nginx_pagespeed-#{node['nginx']['pagespeed']['version']}/psol"
21
+
22
+ remote_file psol_src_filepath do
23
+ source node['nginx']['psol']['url']
24
+ owner 'root'
25
+ group node['root_group']
26
+ mode '0644'
27
+ not_if { ::File.exist?(psol_src_filepath) }
28
+ end
29
+
30
+ packages = value_for_platform_family(
31
+ %w(rhel) => node['nginx']['pagespeed']['packages']['rhel'],
32
+ %w(debian) => node['nginx']['pagespeed']['packages']['debian']
33
+ )
34
+
35
+ unless packages.empty?
36
+ packages.each do |name|
37
+ package name
38
+ end
39
+ end
40
+
41
+ bash 'extract_pagespeed' do
42
+ cwd ::File.dirname(src_filepath)
43
+ code <<-EOH
44
+ mkdir -p #{extract_path}
45
+ tar xzf #{src_filename} -C #{extract_path}
46
+ mv #{extract_path}/*/* #{extract_path}/
47
+ EOH
48
+ not_if { ::File.exist?(extract_path) }
49
+ end
50
+
51
+ bash 'extract_psol' do
52
+ cwd ::File.dirname(psol_src_filepath)
53
+ code <<-EOH
54
+ mkdir -p #{psol_extract_path}
55
+ tar xzf #{psol_src_filename} -C #{psol_extract_path}
56
+ mv #{psol_extract_path}/*/* #{psol_extract_path}/
57
+ EOH
58
+ not_if { ::File.exist?(psol_extract_path) }
59
+ end
60
+
61
+ node.run_state['nginx_configure_flags'] =
62
+ node.run_state['nginx_configure_flags'] | ["--add-module=#{extract_path}"]
@@ -0,0 +1,56 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipe:: Passenger
4
+ #
5
+ # Copyright 2013, Chef Software, Inc.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ packages = value_for_platform_family(
21
+ %w(rhel) => node['nginx']['passenger']['packages']['rhel'],
22
+ %w(fedora) => node['nginx']['passenger']['packages']['fedora'],
23
+ %w(debian) => node['nginx']['passenger']['packages']['debian']
24
+ )
25
+
26
+ unless packages.empty?
27
+ packages.each do |name|
28
+ package name
29
+ end
30
+ end
31
+
32
+ gem_package 'rake' if node['nginx']['passenger']['install_rake']
33
+
34
+ if node['nginx']['passenger']['install_method'] == 'package'
35
+ package node['nginx']['package_name']
36
+ package 'passenger'
37
+ elsif node['nginx']['passenger']['install_method'] == 'source'
38
+
39
+ gem_package 'passenger' do
40
+ action :install
41
+ version node['nginx']['passenger']['version']
42
+ gem_binary node['nginx']['passenger']['gem_binary'] if node['nginx']['passenger']['gem_binary']
43
+ end
44
+
45
+ node.run_state['nginx_configure_flags'] =
46
+ node.run_state['nginx_configure_flags'] | ["--add-module=#{node['nginx']['passenger']['root']}/ext/nginx"]
47
+
48
+ end
49
+
50
+ template "#{node['nginx']['dir']}/conf.d/passenger.conf" do
51
+ source 'modules/passenger.conf.erb'
52
+ owner 'root'
53
+ group node['root_group']
54
+ mode '0644'
55
+ notifies :reload, 'service[nginx]', :delayed
56
+ end
@@ -0,0 +1,41 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipe:: repo
4
+ # Author:: Nick Rycar <nrycar@bluebox.net>
5
+ #
6
+ # Copyright 2008-2013, Chef Software, Inc.
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ case node['platform_family']
22
+ when 'rhel', 'fedora'
23
+
24
+ yum_repository 'nginx' do
25
+ description 'Nginx.org Repository'
26
+ baseurl node['nginx']['upstream_repository']
27
+ gpgkey 'http://nginx.org/keys/nginx_signing.key'
28
+ action :create
29
+ end
30
+
31
+ when 'debian'
32
+ include_recipe 'apt::default'
33
+
34
+ apt_repository 'nginx' do
35
+ uri node['nginx']['upstream_repository']
36
+ distribution node['lsb']['codename']
37
+ components %w(nginx)
38
+ deb_src true
39
+ key 'http://nginx.org/keys/nginx_signing.key'
40
+ end
41
+ end
@@ -0,0 +1,39 @@
1
+ # Cookbook Name:: nginx
2
+ # Recipe:: repo_passenger
3
+ # Author:: Jose Alberto Suarez Lopez <ja@josealberto.org>
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ case node['platform_family']
19
+ when 'rhel', 'fedora'
20
+
21
+ log 'There is not official phusion passenger repo for redhat based systems.' do
22
+ level :info
23
+ end
24
+
25
+ when 'debian'
26
+ include_recipe 'apt::default'
27
+ package 'apt-transport-https'
28
+
29
+ apt_repository 'phusionpassenger' do
30
+ uri 'https://oss-binaries.phusionpassenger.com/apt/passenger'
31
+ distribution node['lsb']['codename']
32
+ components %w(main)
33
+ deb_src true
34
+ keyserver 'keyserver.ubuntu.com'
35
+ key '561F9B9CAC40B2F7'
36
+ end
37
+
38
+ include_recipe 'nginx::passenger'
39
+ end
@@ -0,0 +1,30 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipes:: set_misc
4
+ #
5
+
6
+ set_misc_src_filename = ::File.basename(node['nginx']['set_misc']['url'])
7
+ set_misc_src_filepath = "#{Chef::Config['file_cache_path']}/#{set_misc_src_filename}"
8
+ set_misc_extract_path = "#{Chef::Config['file_cache_path']}/nginx-set_misc-#{node['nginx']['set_misc']['version']}"
9
+
10
+ remote_file set_misc_src_filepath do
11
+ source node['nginx']['set_misc']['url']
12
+ checksum node['nginx']['set_misc']['checksum']
13
+ owner 'root'
14
+ group 'root'
15
+ mode '0644'
16
+ end
17
+
18
+ bash 'extract_set_misc_module' do
19
+ cwd ::File.dirname(set_misc_src_filepath)
20
+ code <<-EOH
21
+ mkdir -p #{set_misc_extract_path}
22
+ tar xzf #{set_misc_src_filename} -C #{set_misc_extract_path}
23
+ EOH
24
+ not_if { ::File.exist?(set_misc_extract_path) }
25
+ end
26
+
27
+ node.run_state['nginx_configure_flags'] =
28
+ node.run_state['nginx_configure_flags'] | ["--add-module=#{set_misc_extract_path}/set-misc-nginx-module-#{node['nginx']['set_misc']['version']}"]
29
+
30
+ include_recipe 'nginx::ngx_devel_module'
@@ -0,0 +1,26 @@
1
+ include_recipe 'nginx::commons_dir'
2
+
3
+ directory node['nginx']['socketproxy']['root'] do
4
+ owner node['nginx']['socketproxy']['app_owner']
5
+ group node['nginx']['socketproxy']['app_owner']
6
+ mode 00755
7
+ action :create
8
+ end
9
+
10
+ context_names = node['nginx']['socketproxy']['apps'].map do |_app, app_conf|
11
+ app_conf['context_name']
12
+ end
13
+
14
+ fail 'More than one app has the same context_name configured.' if context_names.uniq.length != context_names.length
15
+
16
+ template node['nginx']['dir'] + '/sites-available/socketproxy.conf' do
17
+ source 'modules/socketproxy.conf.erb'
18
+ owner 'root'
19
+ group 'root'
20
+ mode 00644
21
+ notifies :reload, 'service[nginx]', :delayed
22
+ end
23
+
24
+ link node['nginx']['dir'] + '/sites-enabled/socketproxy.conf' do
25
+ to node['nginx']['dir'] + '/sites-available/socketproxy.conf'
26
+ end
@@ -0,0 +1,205 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipe:: source
4
+ #
5
+ # Author:: Adam Jacob (<adam@chef.io>)
6
+ # Author:: Joshua Timberman (<joshua@chef.io>)
7
+ # Author:: Jamie Winsor (<jamie@vialstudios.com>)
8
+ #
9
+ # Copyright 2009-2013, Chef Software, Inc.
10
+ #
11
+ # Licensed under the Apache License, Version 2.0 (the "License");
12
+ # you may not use this file except in compliance with the License.
13
+ # You may obtain a copy of the License at
14
+ #
15
+ # http://www.apache.org/licenses/LICENSE-2.0
16
+ #
17
+ # Unless required by applicable law or agreed to in writing, software
18
+ # distributed under the License is distributed on an "AS IS" BASIS,
19
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
+ # See the License for the specific language governing permissions and
21
+ # limitations under the License.
22
+ #
23
+
24
+ # This is for Chef 10 and earlier where attributes aren't loaded
25
+ # deterministically (resolved in Chef 11).
26
+ node.load_attribute_by_short_filename('source', 'nginx') if node.respond_to?(:load_attribute_by_short_filename)
27
+
28
+ nginx_url = node['nginx']['source']['url'] ||
29
+ "http://nginx.org/download/nginx-#{node['nginx']['source']['version']}.tar.gz"
30
+
31
+ node.set['nginx']['binary'] = node['nginx']['source']['sbin_path']
32
+ node.set['nginx']['daemon_disable'] = true
33
+
34
+ unless node['nginx']['source']['use_existing_user']
35
+ user node['nginx']['user'] do
36
+ system true
37
+ shell '/bin/false'
38
+ home '/var/www'
39
+ end
40
+ end
41
+
42
+ include_recipe 'nginx::ohai_plugin'
43
+ include_recipe 'nginx::commons_dir'
44
+ include_recipe 'nginx::commons_script'
45
+ include_recipe 'build-essential::default'
46
+
47
+ src_filepath = "#{Chef::Config['file_cache_path'] || '/tmp'}/nginx-#{node['nginx']['source']['version']}.tar.gz"
48
+ packages = value_for_platform_family(
49
+ %w(rhel fedora suse) => %w(pcre-devel openssl-devel),
50
+ %w(gentoo) => [],
51
+ %w(default) => %w(libpcre3 libpcre3-dev libssl-dev)
52
+ )
53
+
54
+ packages.each do |name|
55
+ package name
56
+ end
57
+
58
+ remote_file nginx_url do
59
+ source nginx_url
60
+ checksum node['nginx']['source']['checksum']
61
+ path src_filepath
62
+ backup false
63
+ end
64
+
65
+ node.run_state['nginx_force_recompile'] = false
66
+ node.run_state['nginx_configure_flags'] =
67
+ node['nginx']['source']['default_configure_flags'] | node['nginx']['configure_flags']
68
+
69
+ include_recipe 'nginx::commons_conf'
70
+
71
+ cookbook_file "#{node['nginx']['dir']}/mime.types" do
72
+ source 'mime.types'
73
+ owner 'root'
74
+ group node['root_group']
75
+ mode '0644'
76
+ notifies :reload, 'service[nginx]', :delayed
77
+ end
78
+
79
+ # source install depends on the existence of the `tar` package
80
+ package 'tar'
81
+
82
+ # Unpack downloaded source so we could apply nginx patches
83
+ # in custom modules - example http://yaoweibin.github.io/nginx_tcp_proxy_module/
84
+ # patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch
85
+ bash 'unarchive_source' do
86
+ cwd ::File.dirname(src_filepath)
87
+ code <<-EOH
88
+ tar zxf #{::File.basename(src_filepath)} -C #{::File.dirname(src_filepath)}
89
+ EOH
90
+ not_if { ::File.directory?("#{Chef::Config['file_cache_path'] || '/tmp'}/nginx-#{node['nginx']['source']['version']}") }
91
+ end
92
+
93
+ node['nginx']['source']['modules'].each do |ngx_module|
94
+ include_recipe ngx_module
95
+ end
96
+
97
+ configure_flags = node.run_state['nginx_configure_flags']
98
+ nginx_force_recompile = node.run_state['nginx_force_recompile']
99
+
100
+ bash 'compile_nginx_source' do
101
+ cwd ::File.dirname(src_filepath)
102
+ code <<-EOH
103
+ cd nginx-#{node['nginx']['source']['version']} &&
104
+ ./configure #{node.run_state['nginx_configure_flags'].join(' ')} &&
105
+ make && make install
106
+ EOH
107
+
108
+ not_if do
109
+ nginx_force_recompile == false &&
110
+ node.automatic_attrs['nginx'] &&
111
+ node.automatic_attrs['nginx']['version'] == node['nginx']['source']['version'] &&
112
+ node.automatic_attrs['nginx']['configure_arguments'].sort == configure_flags.sort
113
+ end
114
+
115
+ notifies :restart, 'service[nginx]'
116
+ notifies :reload, 'ohai[reload_nginx]', :immediately
117
+ end
118
+
119
+ case node['nginx']['init_style']
120
+ when 'runit'
121
+ node.set['nginx']['src_binary'] = node['nginx']['binary']
122
+ include_recipe 'runit::default'
123
+
124
+ runit_service 'nginx'
125
+
126
+ service 'nginx' do
127
+ supports :status => true, :restart => true, :reload => true
128
+ reload_command "#{node['runit']['sv_bin']} hup #{node['runit']['service_dir']}/nginx"
129
+ end
130
+ when 'bluepill'
131
+ include_recipe 'bluepill::default'
132
+
133
+ template "#{node['bluepill']['conf_dir']}/nginx.pill" do
134
+ source 'nginx.pill.erb'
135
+ mode '0644'
136
+ end
137
+
138
+ bluepill_service 'nginx' do
139
+ action [:enable, :load]
140
+ end
141
+
142
+ service 'nginx' do
143
+ supports :status => true, :restart => true, :reload => true
144
+ reload_command "[[ -f #{node['nginx']['pid']} ]] && kill -HUP `cat #{node['nginx']['pid']}` || true"
145
+ action :nothing
146
+ end
147
+ when 'upstart'
148
+ # we rely on this to set up nginx.conf with daemon disable instead of doing
149
+ # it in the upstart init script.
150
+ node.set['nginx']['daemon_disable'] = node['nginx']['upstart']['foreground']
151
+
152
+ template '/etc/init/nginx.conf' do
153
+ source 'nginx-upstart.conf.erb'
154
+ owner 'root'
155
+ group node['root_group']
156
+ mode '0644'
157
+ end
158
+
159
+ service 'nginx' do
160
+ provider Chef::Provider::Service::Upstart
161
+ supports :status => true, :restart => true, :reload => true
162
+ action :nothing
163
+ end
164
+ else
165
+ node.set['nginx']['daemon_disable'] = false
166
+
167
+ generate_init = true
168
+
169
+ case node['platform']
170
+ when 'gentoo'
171
+ generate_template = false
172
+ when 'debian', 'ubuntu'
173
+ generate_template = true
174
+ defaults_path = '/etc/default/nginx'
175
+ when 'freebsd'
176
+ generate_init = false
177
+ else
178
+ generate_template = true
179
+ defaults_path = '/etc/sysconfig/nginx'
180
+ end
181
+
182
+ template '/etc/init.d/nginx' do
183
+ source 'nginx.init.erb'
184
+ owner 'root'
185
+ group node['root_group']
186
+ mode '0755'
187
+ end if generate_init
188
+
189
+ if generate_template
190
+ template defaults_path do
191
+ source 'nginx.sysconfig.erb'
192
+ owner 'root'
193
+ group node['root_group']
194
+ mode '0644'
195
+ end
196
+ end
197
+
198
+ service 'nginx' do
199
+ supports :status => true, :restart => true, :reload => true
200
+ action :enable
201
+ end
202
+ end
203
+
204
+ node.run_state.delete('nginx_configure_flags')
205
+ node.run_state.delete('nginx_force_recompile')