From e94af129e45b870c9fc31ed16b043e244bc3270e Mon Sep 17 00:00:00 2001 From: Lebedev Vadim Date: Sun, 12 Jan 2014 23:15:14 +0400 Subject: [PATCH] Fixed long names virtual hosts, such as nginx::resource::vhost { 'name1.domainname.org name2.domainname.org': } Add example nginx::vhost with HTTPS FastCGI and redirection of HTTP Add location_custom_cfg_prepend & location_custom_cfg_append. Used for logical structures such as if. Fix puppet-lint --- README.markdown | 63 ++++++++++++++++++++ manifests/resource/location.pp | 20 +++++-- templates/vhost/vhost_location_directory.erb | 6 ++ templates/vhost/vhost_location_fastcgi.erb | 6 ++ 4 files changed, 90 insertions(+), 5 deletions(-) diff --git a/README.markdown b/README.markdown index 4cbebe9..fc54ec5 100644 --- a/README.markdown +++ b/README.markdown @@ -165,3 +165,66 @@ nginx::resource::vhost { 'puppet': }, } ``` + +### Example puppet class calling nginx::vhost with HTTPS FastCGI and redirection of HTTP + +```define web::nginx_ssl_with_redirect ( + $backend_port = 9000, + $php = true, + $proxy = undef, + $www_root = "${full_web_path}/${name}/", + $location_cfg_append = undef, +) { + nginx::resource::vhost { "${name}.${::domain}": + ensure => present, + www_root => "${full_web_path}/${name}/", + location_cfg_append => { 'rewrite' => '^ https://$server_name$request_uri? permanent' }, + } + + if !$www_root { + $tmp_www_root = undef + } else { + $tmp_www_root = $www_root + } + + nginx::resource::vhost { "${name}.${::domain} ${name}": + ensure => present, + listen_port => 443, + www_root => $tmp_www_root, + proxy => $proxy, + location_cfg_append => $location_cfg_append, + index_files => [ 'index.php' ], + ssl => true, + ssl_cert => 'puppet:///modules/sslkey/whildcard_mydomain.crt', + ssl_key => 'puppet:///modules/sslkey/whildcard_mydomain.key', + } + + + if $php { + nginx::resource::location { "${name}_root": + ensure => present, + ssl => true, + ssl_only => true, + vhost => "${name}.${::domain} ${name}", + www_root => "${full_web_path}/${name}/", + location => '~ \.php$', + index_files => ['index.php', 'index.html', 'index.htm'], + proxy => undef, + fastcgi => "127.0.0.1:${backend_port}", + fastcgi_script => undef, + location_cfg_append => { + fastcgi_connect_timeout => '3m', + fastcgi_read_timeout => '3m', + fastcgi_send_timeout => '3m' + } + } + } +} +``` + +# Call class web::nginx_ssl_with_redirect + +```web::nginx_ssl_whith_redirect { 'sub-domain-name': + backend_port => 9001, + } +``` diff --git a/manifests/resource/location.pp b/manifests/resource/location.pp index 650a90d..15b9112 100644 --- a/manifests/resource/location.pp +++ b/manifests/resource/location.pp @@ -40,6 +40,12 @@ # [*location_cfg_prepend*] - Expects a hash with extra directives to put # before anything else inside location (used with all other types except # custom_cfg) +# [*location_custom_cfg_prepend*] - Expects a array with extra directives +# to put before anything else inside location (used with all other types +# except custom_cfg). Used for logical structures such as if. +# [*location_custom_cfg_append*] - Expects a array with extra directives +# to put before anything else inside location (used with all other types +# except custom_cfg). Used for logical structures such as if. # [*location_cfg_append*] - Expects a hash with extra directives to put # after everything else inside location (used with all other types except # custom_cfg) @@ -114,6 +120,8 @@ define nginx::resource::location ( $location_custom_cfg = undef, $location_cfg_prepend = undef, $location_cfg_append = undef, + $location_custom_cfg_prepend = undef, + $location_custom_cfg_append = undef, $try_files = undef, $proxy_cache = false, $proxy_cache_valid = false, @@ -216,7 +224,9 @@ define nginx::resource::location ( 'absent' => absent, default => file, } - $config_file = "${nginx::config::nx_conf_dir}/sites-available/${vhost}.conf" + + $vhost_sanitized = regsubst($vhost, ' ', '_', 'G') + $config_file = "${nginx::config::nx_conf_dir}/sites-available/${vhost_sanitized}.conf" $location_sanitized_tmp = regsubst($location, '\/', '_', 'G') $location_sanitized = regsubst($location_sanitized_tmp, '\\', '_', 'G') @@ -257,20 +267,20 @@ define nginx::resource::location ( ## Create stubs for vHost File Fragment Pattern if ($ssl_only != true) { - concat::fragment { "${vhost}-${priority}-${location_sanitized}": + concat::fragment { "${vhost_sanitized}-${priority}-${location_sanitized}": target => $config_file, content => $content_real, - order => "${priority}", + order => $priority, } } ## Only create SSL Specific locations if $ssl is true. if ($ssl == true) { $ssl_priority = $priority + 300 - concat::fragment {"${vhost}-${ssl_priority}-${location_sanitized}-ssl": + concat::fragment {"${vhost_sanitized}-${ssl_priority}-${location_sanitized}-ssl": target => $config_file, content => $content_real, - order => "${ssl_priority}", + order => $ssl_priority, } } diff --git a/templates/vhost/vhost_location_directory.erb b/templates/vhost/vhost_location_directory.erb index ffb5609..e3ec847 100644 --- a/templates/vhost/vhost_location_directory.erb +++ b/templates/vhost/vhost_location_directory.erb @@ -5,6 +5,9 @@ <% if @location_deny -%><% @location_deny.each do |deny_rule| -%> deny <%= deny_rule %>; <% end -%><% end -%> +<% if @location_custom_cfg_prepend -%><% @location_custom_cfg_prepend.sort.each do |value| -%> + <%= value %> +<% end -%><% end -%> <% if @location_cfg_prepend -%><% @location_cfg_prepend.sort_by {|k,v| k}.each do |key,value| -%> <%= key %> <%= value %>; <% end -%><% end -%> @@ -28,6 +31,9 @@ <% end -%> <% if @location_cfg_append -%><% @location_cfg_append.sort_by {|k,v| k}.each do |key,value| -%> <%= key %> <%= value %>; +<% end -%><% end -%> +<% if @location_custom_cfg_append -%><% @location_custom_cfg_append.sort.each do |value| -%> + <%= value %> <% end -%><% end -%> } diff --git a/templates/vhost/vhost_location_fastcgi.erb b/templates/vhost/vhost_location_fastcgi.erb index 5718cdd..0611c1a 100644 --- a/templates/vhost/vhost_location_fastcgi.erb +++ b/templates/vhost/vhost_location_fastcgi.erb @@ -2,6 +2,9 @@ <% if @location_cfg_prepend -%><% @location_cfg_prepend.sort_by {|k,v| k}.each do |key,value| -%> <%= key %> <%= value %>; <% end -%><% end -%> +<% if @location_custom_cfg_prepend -%><% @location_custom_cfg_prepend.sort.each do |value| -%> + <%= value %> +<% end -%><% end -%> <% if defined? @www_root -%> root <%= @www_root %>; <% end -%> @@ -18,6 +21,9 @@ <% end -%> <% if @location_cfg_append -%><% @location_cfg_append.sort_by {|k,v| k}.each do |key,value| -%> <%= key %> <%= value %>; +<% end -%><% end -%> +<% if @location_custom_cfg_append -%><% @location_custom_cfg_append.sort.each do |value| -%> + <%= value %> <% end -%><% end -%> }