From c4abdded449ba9f2905f78fb9d2c017a49f99b17 Mon Sep 17 00:00:00 2001 From: Grant Slater Date: Tue, 22 Oct 2013 12:32:22 +0100 Subject: [PATCH] Add base nginx cookbook --- cookbooks/nginx/README.rdoc | 8 ++++ cookbooks/nginx/attributes/default.rb | 2 + cookbooks/nginx/definitions/nginx_site.rb | 43 +++++++++++++++++++ cookbooks/nginx/metadata.rb | 7 +++ cookbooks/nginx/recipes/default.rb | 36 ++++++++++++++++ .../nginx/templates/default/nginx.conf.erb | 33 ++++++++++++++ 6 files changed, 129 insertions(+) create mode 100644 cookbooks/nginx/README.rdoc create mode 100644 cookbooks/nginx/attributes/default.rb create mode 100644 cookbooks/nginx/definitions/nginx_site.rb create mode 100644 cookbooks/nginx/metadata.rb create mode 100644 cookbooks/nginx/recipes/default.rb create mode 100644 cookbooks/nginx/templates/default/nginx.conf.erb diff --git a/cookbooks/nginx/README.rdoc b/cookbooks/nginx/README.rdoc new file mode 100644 index 000000000..3de2ec7a3 --- /dev/null +++ b/cookbooks/nginx/README.rdoc @@ -0,0 +1,8 @@ += DESCRIPTION: + += REQUIREMENTS: + += ATTRIBUTES: + += USAGE: + diff --git a/cookbooks/nginx/attributes/default.rb b/cookbooks/nginx/attributes/default.rb new file mode 100644 index 000000000..6e7d56d9b --- /dev/null +++ b/cookbooks/nginx/attributes/default.rb @@ -0,0 +1,2 @@ +#default[:nginx][:mpm] = "worker" + diff --git a/cookbooks/nginx/definitions/nginx_site.rb b/cookbooks/nginx/definitions/nginx_site.rb new file mode 100644 index 000000000..51228d632 --- /dev/null +++ b/cookbooks/nginx/definitions/nginx_site.rb @@ -0,0 +1,43 @@ +# +# Cookbook Name:: nginx +# Definition:: nginx_site +# +# Copyright 2013, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +define :nginx_site, :action => [ :create ], :variables => {} do + name = params[:name] + directory = params[:directory] || "/var/www/#{name}" + site_action = params[:action] + + if site_action.include?(:create) + template "/etc/nginx/conf.d/#{name}.conf" do + cookbook params[:cookbook] + source params[:template] + owner "root" + group "root" + mode 0644 + variables params[:variables].merge(:name => name, :directory => directory) + notifies :reload, resources(:service => "nginx") + end + end + + if site_action.include?(:delete) + file "/etc/nginx/conf.d/#{name}.conf" do + action :delete + notifies :restart, resources(:service => "nginx") + end + end +end diff --git a/cookbooks/nginx/metadata.rb b/cookbooks/nginx/metadata.rb new file mode 100644 index 000000000..9dd873471 --- /dev/null +++ b/cookbooks/nginx/metadata.rb @@ -0,0 +1,7 @@ +maintainer "OpenStreetMap Administrators" +maintainer_email "admins@openstreetmap.org" +license "Apache 2.0" +description "Installs and configures nginx" +long_description IO.read(File.join(File.dirname(__FILE__), 'README.rdoc')) +version "1.0.0" +depends "ssl" diff --git a/cookbooks/nginx/recipes/default.rb b/cookbooks/nginx/recipes/default.rb new file mode 100644 index 000000000..b9625ddd4 --- /dev/null +++ b/cookbooks/nginx/recipes/default.rb @@ -0,0 +1,36 @@ +# +# Cookbook Name:: nginx +# Recipe:: default +# +# Copyright 2013, OpenStreetMap Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +package "nginx" + +#admins = data_bag_item("nginx", "admins") + +template "/etc/nginx/nginx.conf" do + source "nginx.conf.erb" + owner "root" + group "root" + mode 0644 +end + +service "nginx" do + action [ :enable, :start ] + supports :status => true, :restart => true, :reload => true + subscribes :restart, "template[/etc/nginx/nginx.conf]" +end + diff --git a/cookbooks/nginx/templates/default/nginx.conf.erb b/cookbooks/nginx/templates/default/nginx.conf.erb new file mode 100644 index 000000000..8db8b0ffd --- /dev/null +++ b/cookbooks/nginx/templates/default/nginx.conf.erb @@ -0,0 +1,33 @@ +# DO NOT EDIT - This file is being maintained by Chef + +user nginx; +worker_processes 1; + +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout 65; + + #gzip on; + + include /etc/nginx/conf.d/*.conf; +} -- 2.43.2