elzar 0.0.1

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 (156) hide show
  1. data/.chef/knife.rb +3 -0
  2. data/.gitignore +1 -0
  3. data/.rvmrc +1 -0
  4. data/Gemfile +11 -0
  5. data/Gemfile.lock +96 -0
  6. data/README.md +42 -0
  7. data/Rakefile +1 -0
  8. data/Vagrantfile +16 -0
  9. data/cookbooks/.gitkeep +0 -0
  10. data/cookbooks/apt/README.md +122 -0
  11. data/cookbooks/apt/files/default/apt-cacher +9 -0
  12. data/cookbooks/apt/files/default/apt-cacher.conf +144 -0
  13. data/cookbooks/apt/files/default/apt-proxy-v2.conf +50 -0
  14. data/cookbooks/apt/metadata.rb +13 -0
  15. data/cookbooks/apt/providers/repository.rb +73 -0
  16. data/cookbooks/apt/recipes/cacher-client.rb +44 -0
  17. data/cookbooks/apt/recipes/cacher.rb +45 -0
  18. data/cookbooks/apt/recipes/default.rb +50 -0
  19. data/cookbooks/apt/resources/repository.rb +30 -0
  20. data/cookbooks/build-essential/README.md +24 -0
  21. data/cookbooks/build-essential/metadata.rb +10 -0
  22. data/cookbooks/build-essential/recipes/default.rb +45 -0
  23. data/cookbooks/database/README.md +403 -0
  24. data/cookbooks/database/libraries/provider_database_mysql.rb +97 -0
  25. data/cookbooks/database/libraries/provider_database_mysql_user.rb +76 -0
  26. data/cookbooks/database/libraries/provider_database_postgresql.rb +126 -0
  27. data/cookbooks/database/libraries/provider_database_postgresql_user.rb +78 -0
  28. data/cookbooks/database/libraries/provider_database_sql_server.rb +109 -0
  29. data/cookbooks/database/libraries/provider_database_sql_server_user.rb +106 -0
  30. data/cookbooks/database/libraries/resource_database.rb +111 -0
  31. data/cookbooks/database/libraries/resource_database_user.rb +90 -0
  32. data/cookbooks/database/libraries/resource_mysql_database.rb +34 -0
  33. data/cookbooks/database/libraries/resource_mysql_database_user.rb +34 -0
  34. data/cookbooks/database/libraries/resource_postgresql_database.rb +35 -0
  35. data/cookbooks/database/libraries/resource_postgresql_database_user.rb +35 -0
  36. data/cookbooks/database/libraries/resource_sql_server_database.rb +34 -0
  37. data/cookbooks/database/libraries/resource_sql_server_database_user.rb +34 -0
  38. data/cookbooks/database/metadata.rb +21 -0
  39. data/cookbooks/database/recipes/default.rb +20 -0
  40. data/cookbooks/database/recipes/ebs_backup.rb +89 -0
  41. data/cookbooks/database/recipes/ebs_volume.rb +196 -0
  42. data/cookbooks/database/recipes/master.rb +78 -0
  43. data/cookbooks/database/recipes/snapshot.rb +62 -0
  44. data/cookbooks/database/templates/default/app_grants.sql.erb +8 -0
  45. data/cookbooks/database/templates/default/aws_config.erb +3 -0
  46. data/cookbooks/database/templates/default/chef-solo-database-snapshot.cron.erb +10 -0
  47. data/cookbooks/database/templates/default/chef-solo-database-snapshot.json.erb +1 -0
  48. data/cookbooks/database/templates/default/chef-solo-database-snapshot.rb.erb +6 -0
  49. data/cookbooks/database/templates/default/ebs-backup-cron.erb +2 -0
  50. data/cookbooks/database/templates/default/ebs-db-backup.sh.erb +8 -0
  51. data/cookbooks/database/templates/default/ebs-db-restore.sh.erb +10 -0
  52. data/cookbooks/database/templates/default/s3cfg.erb +27 -0
  53. data/cookbooks/mysql/README.md +148 -0
  54. data/cookbooks/mysql/attributes/server.rb +68 -0
  55. data/cookbooks/mysql/libraries/database.rb +19 -0
  56. data/cookbooks/mysql/libraries/helpers.rb +33 -0
  57. data/cookbooks/mysql/metadata.rb +90 -0
  58. data/cookbooks/mysql/recipes/client.rb +51 -0
  59. data/cookbooks/mysql/recipes/default.rb +20 -0
  60. data/cookbooks/mysql/recipes/server.rb +133 -0
  61. data/cookbooks/mysql/recipes/server_ec2.rb +49 -0
  62. data/cookbooks/mysql/templates/default/debian.cnf.erb +12 -0
  63. data/cookbooks/mysql/templates/default/grants.sql.erb +15 -0
  64. data/cookbooks/mysql/templates/default/my.cnf.erb +176 -0
  65. data/cookbooks/mysql/templates/default/mysql-server.seed.erb +10 -0
  66. data/cookbooks/mysql/templates/default/port_mysql.erb +3 -0
  67. data/cookbooks/openssl/README.md +37 -0
  68. data/cookbooks/openssl/libraries/secure_password.rb +37 -0
  69. data/cookbooks/openssl/metadata.rb +8 -0
  70. data/cookbooks/openssl/recipes/default.rb +19 -0
  71. data/cookbooks/passenger_enterprise/README.rdoc +8 -0
  72. data/cookbooks/passenger_enterprise/attributes/default.rb +28 -0
  73. data/cookbooks/passenger_enterprise/cc.gemspec +36 -0
  74. data/cookbooks/passenger_enterprise/metadata.json +44 -0
  75. data/cookbooks/passenger_enterprise/metadata.rb +16 -0
  76. data/cookbooks/passenger_enterprise/recipes/apache2.rb +54 -0
  77. data/cookbooks/passenger_enterprise/recipes/default.rb +30 -0
  78. data/cookbooks/passenger_enterprise/recipes/nginx.rb +50 -0
  79. data/cookbooks/passenger_enterprise/templates/default/passenger.conf.erb +2 -0
  80. data/cookbooks/passenger_enterprise/templates/default/passenger.load.erb +1 -0
  81. data/cookbooks/passenger_enterprise/templates/default/passenger_nginx.conf.erb +2 -0
  82. data/cookbooks/ruby_enterprise/README.rdoc +55 -0
  83. data/cookbooks/ruby_enterprise/attributes/default.rb +33 -0
  84. data/cookbooks/ruby_enterprise/cc.gemspec +36 -0
  85. data/cookbooks/ruby_enterprise/definitions/ree_gem.rb +28 -0
  86. data/cookbooks/ruby_enterprise/metadata.json +45 -0
  87. data/cookbooks/ruby_enterprise/metadata.rb +13 -0
  88. data/cookbooks/ruby_enterprise/recipes/default.rb +67 -0
  89. data/data_bags/deploy/authorized_keys.json +9 -0
  90. data/dna.json +25 -0
  91. data/elzar.gemspec +22 -0
  92. data/lib/elzar.rb +21 -0
  93. data/lib/elzar/assistant.rb +77 -0
  94. data/lib/elzar/chef_dna.rb +48 -0
  95. data/lib/elzar/template.rb +24 -0
  96. data/lib/elzar/templates/Gemfile +11 -0
  97. data/lib/elzar/templates/Vagrantfile.erb +16 -0
  98. data/lib/elzar/templates/dna.json +25 -0
  99. data/lib/elzar/templates/solo.rb.erb +6 -0
  100. data/lib/elzar/version.rb +3 -0
  101. data/roles/enterprise_appstack.rb +4 -0
  102. data/roles/plumbing.rb +11 -0
  103. data/roles/postgres_database.rb +4 -0
  104. data/roles/ruby_appstack.rb +4 -0
  105. data/script/install_cookbook +6 -0
  106. data/script/new_cookbook +5 -0
  107. data/site-cookbooks/.gitkeep +0 -0
  108. data/site-cookbooks/curl/README.md +17 -0
  109. data/site-cookbooks/curl/metadata.rb +6 -0
  110. data/site-cookbooks/curl/recipes/default.rb +11 -0
  111. data/site-cookbooks/nginx/CHANGELOG.md +11 -0
  112. data/site-cookbooks/nginx/CONTRIBUTING +29 -0
  113. data/site-cookbooks/nginx/LICENSE +201 -0
  114. data/site-cookbooks/nginx/README.md +76 -0
  115. data/site-cookbooks/nginx/attributes/default.rb +65 -0
  116. data/site-cookbooks/nginx/definitions/nginx_site.rb +35 -0
  117. data/site-cookbooks/nginx/files/default/mime.types +73 -0
  118. data/site-cookbooks/nginx/metadata.rb +89 -0
  119. data/site-cookbooks/nginx/recipes/default.rb +57 -0
  120. data/site-cookbooks/nginx/recipes/source.rb +126 -0
  121. data/site-cookbooks/nginx/templates/default/default-site.erb +11 -0
  122. data/site-cookbooks/nginx/templates/default/nginx.conf.erb +42 -0
  123. data/site-cookbooks/nginx/templates/default/nginx.init.erb +91 -0
  124. data/site-cookbooks/nginx/templates/default/nxdissite.erb +29 -0
  125. data/site-cookbooks/nginx/templates/default/nxensite.erb +38 -0
  126. data/site-cookbooks/passenger/README.md +12 -0
  127. data/site-cookbooks/passenger/attributes/default.rb +3 -0
  128. data/site-cookbooks/passenger/metadata.rb +6 -0
  129. data/site-cookbooks/passenger/recipes/default.rb +39 -0
  130. data/site-cookbooks/passenger/templates/default/passenger_nginx.conf.erb +2 -0
  131. data/site-cookbooks/postgresql/README.md +150 -0
  132. data/site-cookbooks/postgresql/attributes/default.rb +72 -0
  133. data/site-cookbooks/postgresql/metadata.rb +21 -0
  134. data/site-cookbooks/postgresql/recipes/client.rb +40 -0
  135. data/site-cookbooks/postgresql/recipes/default.rb +20 -0
  136. data/site-cookbooks/postgresql/recipes/server.rb +74 -0
  137. data/site-cookbooks/postgresql/recipes/server_debian.rb +62 -0
  138. data/site-cookbooks/postgresql/recipes/server_redhat.rb +82 -0
  139. data/site-cookbooks/postgresql/templates/default/debian.postgresql.conf.erb +499 -0
  140. data/site-cookbooks/postgresql/templates/default/pg_hba.conf.erb +83 -0
  141. data/site-cookbooks/postgresql/templates/default/redhat.postgresql.conf.erb +501 -0
  142. data/site-cookbooks/rails_app/README.md +15 -0
  143. data/site-cookbooks/rails_app/attributes/default.rb +2 -0
  144. data/site-cookbooks/rails_app/files/default/sudoers +26 -0
  145. data/site-cookbooks/rails_app/metadata.rb +6 -0
  146. data/site-cookbooks/rails_app/recipes/default.rb +143 -0
  147. data/site-cookbooks/rails_app/recipes/system_libraries.rb +12 -0
  148. data/site-cookbooks/rails_app/templates/default/pg_hba.conf.erb +84 -0
  149. data/site-cookbooks/rails_app/templates/default/rails_app_nginx.erb +10 -0
  150. data/site-cookbooks/ruby/README.md +12 -0
  151. data/site-cookbooks/ruby/attributes/default.rb +6 -0
  152. data/site-cookbooks/ruby/metadata.rb +6 -0
  153. data/site-cookbooks/ruby/recipes/default.rb +54 -0
  154. data/solo.rb +7 -0
  155. data/upgrade-chef.sh +8 -0
  156. metadata +272 -0
@@ -0,0 +1,65 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Attributes:: default
4
+ #
5
+ # Author:: Adam Jacob (<adam@opscode.com>)
6
+ # Author:: Joshua Timberman (<joshua@opscode.com>)
7
+ #
8
+ # Copyright 2009-2011, Opscode, Inc.
9
+ #
10
+ # Licensed under the Apache License, Version 2.0 (the "License");
11
+ # you may not use this file except in compliance with the License.
12
+ # You may obtain a copy of the License at
13
+ #
14
+ # http://www.apache.org/licenses/LICENSE-2.0
15
+ #
16
+ # Unless required by applicable law or agreed to in writing, software
17
+ # distributed under the License is distributed on an "AS IS" BASIS,
18
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
+ # See the License for the specific language governing permissions and
20
+ # limitations under the License.
21
+ #
22
+
23
+ default[:nginx][:version] = "0.8.54"
24
+
25
+ case platform
26
+ when "debian","ubuntu"
27
+ default[:nginx][:dir] = "/etc/nginx"
28
+ default[:nginx][:log_dir] = "/var/log/nginx"
29
+ default[:nginx][:user] = "www-data"
30
+ default[:nginx][:binary] = "/usr/sbin/nginx"
31
+ default[:nginx][:init_style] = "runit"
32
+ else
33
+ default[:nginx][:dir] = "/etc/nginx"
34
+ default[:nginx][:log_dir] = "/var/log/nginx"
35
+ default[:nginx][:user] = "www-data"
36
+ default[:nginx][:binary] = "/usr/sbin/nginx"
37
+ default[:nginx][:init_style] = "init"
38
+ end
39
+
40
+ default[:nginx][:pid] = "/var/run/nginx.pid"
41
+
42
+ default[:nginx][:gzip] = "on"
43
+ default[:nginx][:gzip_http_version] = "1.0"
44
+ default[:nginx][:gzip_comp_level] = "2"
45
+ default[:nginx][:gzip_proxied] = "any"
46
+ default[:nginx][:gzip_types] = [
47
+ "text/plain",
48
+ "text/html",
49
+ "text/css",
50
+ "application/x-javascript",
51
+ "text/xml",
52
+ "application/xml",
53
+ "application/xml+rss",
54
+ "text/javascript",
55
+ "application/javascript",
56
+ "application/json"
57
+ ]
58
+
59
+ default[:nginx][:keepalive] = "on"
60
+ default[:nginx][:keepalive_timeout] = 65
61
+ default[:nginx][:worker_processes] = cpu[:total]
62
+ default[:nginx][:worker_connections] = 2048
63
+ default[:nginx][:server_names_hash_bucket_size] = 64
64
+
65
+ default[:nginx][:disable_access_log] = false
@@ -0,0 +1,35 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Definition:: nginx_site
4
+ # Author:: AJ Christensen <aj@junglist.gen.nz>
5
+ #
6
+ # Copyright 2008-2009, Opscode, 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
+ define :nginx_site, :enable => true do
22
+ if params[:enable]
23
+ execute "nxensite #{params[:name]}" do
24
+ command "/usr/sbin/nxensite #{params[:name]}"
25
+ notifies :reload, resources(:service => "nginx")
26
+ not_if do ::File.symlink?("#{node[:nginx][:dir]}/sites-enabled/#{params[:name]}") end
27
+ end
28
+ else
29
+ execute "nxdissite #{params[:name]}" do
30
+ command "/usr/sbin/nxdissite #{params[:name]}"
31
+ notifies :reload, resources(:service => "nginx")
32
+ only_if do ::File.symlink?("#{node[:nginx][:dir]}/sites-enabled/#{params[:name]}") end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,73 @@
1
+ types {
2
+ text/html html htm shtml;
3
+ text/css css;
4
+ text/xml xml;
5
+ image/gif gif;
6
+ image/jpeg jpeg jpg;
7
+ application/x-javascript js;
8
+ application/json json;
9
+ application/atom+xml atom;
10
+ application/rss+xml rss;
11
+
12
+ text/mathml mml;
13
+ text/plain txt;
14
+ text/vnd.sun.j2me.app-descriptor jad;
15
+ text/vnd.wap.wml wml;
16
+ text/x-component htc;
17
+
18
+ image/png png;
19
+ image/tiff tif tiff;
20
+ image/vnd.wap.wbmp wbmp;
21
+ image/x-icon ico;
22
+ image/x-jng jng;
23
+ image/x-ms-bmp bmp;
24
+ image/svg+xml svg;
25
+
26
+ application/java-archive jar war ear;
27
+ application/mac-binhex40 hqx;
28
+ application/msword doc;
29
+ application/pdf pdf;
30
+ application/postscript ps eps ai;
31
+ application/rtf rtf;
32
+ application/vnd.ms-excel xls;
33
+ application/vnd.ms-powerpoint ppt;
34
+ application/vnd.wap.wmlc wmlc;
35
+ application/vnd.wap.xhtml+xml xhtml;
36
+ application/vnd.google-earth.kml+xml kml;
37
+ application/vnd.google-earth.kmz kmz;
38
+ application/x-cocoa cco;
39
+ application/x-java-archive-diff jardiff;
40
+ application/x-java-jnlp-file jnlp;
41
+ application/x-makeself run;
42
+ application/x-perl pl pm;
43
+ application/x-pilot prc pdb;
44
+ application/x-rar-compressed rar;
45
+ application/x-redhat-package-manager rpm;
46
+ application/x-sea sea;
47
+ application/x-shockwave-flash swf;
48
+ application/x-stuffit sit;
49
+ application/x-tcl tcl tk;
50
+ application/x-x509-ca-cert der pem crt;
51
+ application/x-xpinstall xpi;
52
+ application/zip zip;
53
+
54
+ application/octet-stream bin exe dll;
55
+ application/octet-stream deb;
56
+ application/octet-stream dmg;
57
+ application/octet-stream eot;
58
+ application/octet-stream iso img;
59
+ application/octet-stream msi msp msm;
60
+
61
+ audio/midi mid midi kar;
62
+ audio/mpeg mp3;
63
+ audio/x-realaudio ra;
64
+
65
+ video/3gpp 3gpp 3gp;
66
+ video/mpeg mpeg mpg;
67
+ video/quicktime mov;
68
+ video/x-flv flv;
69
+ video/x-mng mng;
70
+ video/x-ms-asf asx asf;
71
+ video/x-ms-wmv wmv;
72
+ video/x-msvideo avi;
73
+ }
@@ -0,0 +1,89 @@
1
+ maintainer "Opscode, Inc."
2
+ maintainer_email "cookbooks@opscode.com"
3
+ license "Apache 2.0"
4
+ description "Installs and configures nginx"
5
+ version "0.100.0"
6
+
7
+ recipe "nginx", "Installs nginx package and sets up configuration with Debian apache style with sites-enabled/sites-available"
8
+ recipe "nginx::source", "Installs nginx from source and sets up configuration with Debian apache style with sites-enabled/sites-available"
9
+
10
+ %w{ ubuntu debian centos redhat fedora }.each do |os|
11
+ supports os
12
+ end
13
+
14
+ %w{ build-essential runit bluepill }.each do |cb|
15
+ depends cb
16
+ end
17
+
18
+ attribute "nginx/dir",
19
+ :display_name => "Nginx Directory",
20
+ :description => "Location of nginx configuration files",
21
+ :default => "/etc/nginx"
22
+
23
+ attribute "nginx/log_dir",
24
+ :display_name => "Nginx Log Directory",
25
+ :description => "Location for nginx logs",
26
+ :default => "/var/log/nginx"
27
+
28
+ attribute "nginx/user",
29
+ :display_name => "Nginx User",
30
+ :description => "User nginx will run as",
31
+ :default => "www-data"
32
+
33
+ attribute "nginx/binary",
34
+ :display_name => "Nginx Binary",
35
+ :description => "Location of the nginx server binary",
36
+ :default => "/usr/sbin/nginx"
37
+
38
+ attribute "nginx/gzip",
39
+ :display_name => "Nginx Gzip",
40
+ :description => "Whether gzip is enabled",
41
+ :default => "on"
42
+
43
+ attribute "nginx/gzip_http_version",
44
+ :display_name => "Nginx Gzip HTTP Version",
45
+ :description => "Version of HTTP Gzip",
46
+ :default => "1.0"
47
+
48
+ attribute "nginx/gzip_comp_level",
49
+ :display_name => "Nginx Gzip Compression Level",
50
+ :description => "Amount of compression to use",
51
+ :default => "2"
52
+
53
+ attribute "nginx/gzip_proxied",
54
+ :display_name => "Nginx Gzip Proxied",
55
+ :description => "Whether gzip is proxied",
56
+ :default => "any"
57
+
58
+ attribute "nginx/gzip_types",
59
+ :display_name => "Nginx Gzip Types",
60
+ :description => "Supported MIME-types for gzip",
61
+ :type => "array",
62
+ :default => [ "text/plain", "text/html", "text/css", "application/x-javascript", "text/xml", "application/xml", "application/xml+rss", "text/javascript" ]
63
+
64
+ attribute "nginx/keepalive",
65
+ :display_name => "Nginx Keepalive",
66
+ :description => "Whether to enable keepalive",
67
+ :default => "on"
68
+
69
+ attribute "nginx/keepalive_timeout",
70
+ :display_name => "Nginx Keepalive Timeout",
71
+ :default => "65"
72
+
73
+ attribute "nginx/worker_processes",
74
+ :display_name => "Nginx Worker Processes",
75
+ :description => "Number of worker processes",
76
+ :default => "1"
77
+
78
+ attribute "nginx/worker_connections",
79
+ :display_name => "Nginx Worker Connections",
80
+ :description => "Number of connections per worker",
81
+ :default => "1024"
82
+
83
+ attribute "nginx/server_names_hash_bucket_size",
84
+ :display_name => "Nginx Server Names Hash Bucket Size",
85
+ :default => "64"
86
+
87
+ attribute "nginx/disable_access_log",
88
+ :display_name => "Disable Access Log",
89
+ :default => "false"
@@ -0,0 +1,57 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipe:: default
4
+ # Author:: AJ Christensen <aj@junglist.gen.nz>
5
+ #
6
+ # Copyright 2008-2009, Opscode, 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
+ package "nginx"
22
+
23
+ directory node[:nginx][:log_dir] do
24
+ mode 0755
25
+ owner node[:nginx][:user]
26
+ action :create
27
+ end
28
+
29
+ %w{nxensite nxdissite}.each do |nxscript|
30
+ template "/usr/sbin/#{nxscript}" do
31
+ source "#{nxscript}.erb"
32
+ mode 0755
33
+ owner "root"
34
+ group "root"
35
+ end
36
+ end
37
+
38
+ template "nginx.conf" do
39
+ path "#{node[:nginx][:dir]}/nginx.conf"
40
+ source "nginx.conf.erb"
41
+ owner "root"
42
+ group "root"
43
+ mode 0644
44
+ notifies :reload, "service[nginx]"
45
+ end
46
+
47
+ template "#{node[:nginx][:dir]}/sites-available/default" do
48
+ source "default-site.erb"
49
+ owner "root"
50
+ group "root"
51
+ mode 0644
52
+ end
53
+
54
+ service "nginx" do
55
+ supports :status => true, :restart => true, :reload => true
56
+ action [ :enable, :start ]
57
+ end
@@ -0,0 +1,126 @@
1
+ #
2
+ # Cookbook Name:: nginx
3
+ # Recipe:: source
4
+ #
5
+ # Author:: Adam Jacob (<adam@opscode.com>)
6
+ # Author:: Joshua Timberman (<joshua@opscode.com>)
7
+ # Author:: Alex Redington (<lovemachine@thinkrelevance.com>)
8
+ #
9
+ # Copyright 2009-2011, Opscode, 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
+ include_recipe "build-essential"
25
+
26
+ packages = value_for_platform(
27
+ ["centos","redhat","fedora"] => {'default' => ['pcre-devel', 'openssl-devel']},
28
+ "default" => ['libpcre3', 'libpcre3-dev', 'libssl-dev']
29
+ )
30
+
31
+ packages.each do |devpkg|
32
+ package devpkg
33
+ end
34
+
35
+ nginx_version = node[:nginx][:version]
36
+
37
+ node.set[:nginx][:install_path] = "/opt/nginx-#{nginx_version}"
38
+ node.set[:nginx][:src_binary] = "#{node[:nginx][:install_path]}/sbin/nginx"
39
+ node.set[:nginx][:daemon_disable] = false
40
+ node.set[:nginx][:configure_flags] = [
41
+ "--prefix=#{node[:nginx][:install_path]}",
42
+ "--conf-path=#{node[:nginx][:dir]}/nginx.conf",
43
+ "--with-http_ssl_module",
44
+ "--with-http_gzip_static_module"
45
+ ]
46
+
47
+ configure_flags = node[:nginx][:configure_flags].join(" ")
48
+
49
+ remote_file "#{Chef::Config[:file_cache_path]}/nginx-#{nginx_version}.tar.gz" do
50
+ source "http://nginx.org/download/nginx-#{nginx_version}.tar.gz"
51
+ action :create_if_missing
52
+ end
53
+
54
+ bash "compile_nginx_source" do
55
+ cwd Chef::Config[:file_cache_path]
56
+ code <<-EOH
57
+ tar zxf nginx-#{nginx_version}.tar.gz
58
+ cd nginx-#{nginx_version} && ./configure #{configure_flags}
59
+ make && make install
60
+ EOH
61
+ creates node[:nginx][:src_binary]
62
+ end
63
+
64
+ user node[:nginx][:user] do
65
+ system true
66
+ shell "/bin/false"
67
+ home "/var/www"
68
+ end
69
+
70
+ directory node[:nginx][:log_dir] do
71
+ mode 0755
72
+ owner node[:nginx][:user]
73
+ action :create
74
+ end
75
+
76
+ directory node[:nginx][:dir] do
77
+ owner "root"
78
+ group "root"
79
+ mode "0755"
80
+ end
81
+
82
+ template "/etc/init.d/nginx" do
83
+ source "nginx.init.erb"
84
+ owner "root"
85
+ group "root"
86
+ mode "0755"
87
+ end
88
+
89
+ #register service
90
+ service "nginx" do
91
+ supports :status => true, :restart => true, :reload => true
92
+ action :enable
93
+ end
94
+
95
+ %w{ sites-available sites-enabled conf.d }.each do |dir|
96
+ directory "#{node[:nginx][:dir]}/#{dir}" do
97
+ owner "root"
98
+ group "root"
99
+ mode "0755"
100
+ end
101
+ end
102
+
103
+ %w{nxensite nxdissite}.each do |nxscript|
104
+ template "/usr/sbin/#{nxscript}" do
105
+ source "#{nxscript}.erb"
106
+ mode "0755"
107
+ owner "root"
108
+ group "root"
109
+ end
110
+ end
111
+
112
+ template "nginx.conf" do
113
+ path "#{node[:nginx][:dir]}/nginx.conf"
114
+ source "nginx.conf.erb"
115
+ owner "root"
116
+ group "root"
117
+ mode "0644"
118
+ end
119
+
120
+ cookbook_file "#{node[:nginx][:dir]}/mime.types" do
121
+ source "mime.types"
122
+ owner "root"
123
+ group "root"
124
+ mode "0644"
125
+ notifies :start, resources(:service => "nginx"), :immediately
126
+ end