]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/apache/manifests/vhost.pp
add Openstack modules to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / apache / manifests / vhost.pp
1 # See README.md for usage information
2 define apache::vhost(
3   $docroot,
4   $manage_docroot              = true,
5   $virtual_docroot             = false,
6   $port                        = undef,
7   $ip                          = undef,
8   $ip_based                    = false,
9   $add_listen                  = true,
10   $docroot_owner               = 'root',
11   $docroot_group               = $::apache::params::root_group,
12   $docroot_mode                = undef,
13   $serveradmin                 = undef,
14   $ssl                         = false,
15   $ssl_cert                    = $::apache::default_ssl_cert,
16   $ssl_key                     = $::apache::default_ssl_key,
17   $ssl_chain                   = $::apache::default_ssl_chain,
18   $ssl_ca                      = $::apache::default_ssl_ca,
19   $ssl_crl_path                = $::apache::default_ssl_crl_path,
20   $ssl_crl                     = $::apache::default_ssl_crl,
21   $ssl_crl_check               = $::apache::default_ssl_crl_check,
22   $ssl_certs_dir               = $::apache::params::ssl_certs_dir,
23   $ssl_protocol                = undef,
24   $ssl_cipher                  = undef,
25   $ssl_honorcipherorder        = undef,
26   $ssl_verify_client           = undef,
27   $ssl_verify_depth            = undef,
28   $ssl_options                 = undef,
29   $ssl_proxyengine             = false,
30   $priority                    = undef,
31   $default_vhost               = false,
32   $servername                  = $name,
33   $serveraliases               = [],
34   $options                     = ['Indexes','FollowSymLinks','MultiViews'],
35   $override                    = ['None'],
36   $directoryindex              = '',
37   $vhost_name                  = '*',
38   $logroot                     = $::apache::logroot,
39   $logroot_ensure              = 'directory',
40   $logroot_mode                = undef,
41   $log_level                   = undef,
42   $access_log                  = true,
43   $access_log_file             = false,
44   $access_log_pipe             = false,
45   $access_log_syslog           = false,
46   $access_log_format           = false,
47   $access_log_env_var          = false,
48   $access_logs                 = undef,
49   $aliases                     = undef,
50   $directories                 = undef,
51   $error_log                   = true,
52   $error_log_file              = undef,
53   $error_log_pipe              = undef,
54   $error_log_syslog            = undef,
55   $error_documents             = [],
56   $fallbackresource            = undef,
57   $scriptalias                 = undef,
58   $scriptaliases               = [],
59   $proxy_dest                  = undef,
60   $proxy_dest_match            = undef,
61   $proxy_dest_reverse_match    = undef,
62   $proxy_pass                  = undef,
63   $proxy_pass_match            = undef,
64   $suphp_addhandler            = $::apache::params::suphp_addhandler,
65   $suphp_engine                = $::apache::params::suphp_engine,
66   $suphp_configpath            = $::apache::params::suphp_configpath,
67   $php_flags                   = {},
68   $php_values                  = {},
69   $php_admin_flags             = {},
70   $php_admin_values            = {},
71   $no_proxy_uris               = [],
72   $no_proxy_uris_match         = [],
73   $proxy_preserve_host         = false,
74   $proxy_error_override        = false,
75   $redirect_source             = '/',
76   $redirect_dest               = undef,
77   $redirect_status             = undef,
78   $redirectmatch_status        = undef,
79   $redirectmatch_regexp        = undef,
80   $redirectmatch_dest          = undef,
81   $rack_base_uris              = undef,
82   $headers                     = undef,
83   $request_headers             = undef,
84   $rewrites                    = undef,
85   $rewrite_base                = undef,
86   $rewrite_rule                = undef,
87   $rewrite_cond                = undef,
88   $setenv                      = [],
89   $setenvif                    = [],
90   $block                       = [],
91   $ensure                      = 'present',
92   $wsgi_application_group      = undef,
93   $wsgi_daemon_process         = undef,
94   $wsgi_daemon_process_options = undef,
95   $wsgi_import_script          = undef,
96   $wsgi_import_script_options  = undef,
97   $wsgi_process_group          = undef,
98   $wsgi_script_aliases         = undef,
99   $wsgi_pass_authorization     = undef,
100   $wsgi_chunked_request        = undef,
101   $custom_fragment             = undef,
102   $itk                         = undef,
103   $action                      = undef,
104   $fastcgi_server              = undef,
105   $fastcgi_socket              = undef,
106   $fastcgi_dir                 = undef,
107   $additional_includes         = [],
108   $apache_version              = $::apache::apache_version,
109   $allow_encoded_slashes       = undef,
110   $suexec_user_group           = undef,
111   $passenger_app_root          = undef,
112   $passenger_app_env           = undef,
113   $passenger_ruby              = undef,
114   $passenger_min_instances     = undef,
115   $passenger_start_timeout     = undef,
116   $passenger_pre_start         = undef,
117   $add_default_charset         = undef,
118   $modsec_disable_vhost        = undef,
119   $modsec_disable_ids          = undef,
120   $modsec_disable_ips          = undef,
121   $modsec_body_limit           = undef,
122 ) {
123   # The base class must be included first because it is used by parameter defaults
124   if ! defined(Class['apache']) {
125     fail('You must include the apache base class before using any apache defined resources')
126   }
127
128   $apache_name = $::apache::apache_name
129
130   validate_re($ensure, '^(present|absent)$',
131   "${ensure} is not supported for ensure.
132   Allowed values are 'present' and 'absent'.")
133   validate_re($suphp_engine, '^(on|off)$',
134   "${suphp_engine} is not supported for suphp_engine.
135   Allowed values are 'on' and 'off'.")
136   validate_bool($ip_based)
137   validate_bool($access_log)
138   validate_bool($error_log)
139   validate_bool($ssl)
140   validate_bool($default_vhost)
141   validate_bool($ssl_proxyengine)
142   if $rewrites {
143     validate_array($rewrites)
144     validate_hash($rewrites[0])
145   }
146
147   # Input validation begins
148
149   if $suexec_user_group {
150     validate_re($suexec_user_group, '^\w+ \w+$',
151     "${suexec_user_group} is not supported for suexec_user_group.  Must be 'user group'.")
152   }
153
154   if $wsgi_pass_authorization {
155     validate_re(downcase($wsgi_pass_authorization), '^(on|off)$',
156     "${wsgi_pass_authorization} is not supported for wsgi_pass_authorization.
157     Allowed values are 'on' and 'off'.")
158   }
159
160   # Deprecated backwards-compatibility
161   if $rewrite_base {
162     warning('Apache::Vhost: parameter rewrite_base is deprecated in favor of rewrites')
163   }
164   if $rewrite_rule {
165     warning('Apache::Vhost: parameter rewrite_rule is deprecated in favor of rewrites')
166   }
167   if $rewrite_cond {
168     warning('Apache::Vhost parameter rewrite_cond is deprecated in favor of rewrites')
169   }
170
171   if $wsgi_script_aliases {
172     validate_hash($wsgi_script_aliases)
173   }
174   if $wsgi_daemon_process_options {
175     validate_hash($wsgi_daemon_process_options)
176   }
177   if $wsgi_import_script_options {
178     validate_hash($wsgi_import_script_options)
179   }
180   if $itk {
181     validate_hash($itk)
182   }
183
184   validate_re($logroot_ensure, '^(directory|absent)$',
185   "${logroot_ensure} is not supported for logroot_ensure.
186   Allowed values are 'directory' and 'absent'.")
187
188   if $log_level {
189     validate_apache_log_level($log_level)
190   }
191
192   if $access_log_file and $access_log_pipe {
193     fail("Apache::Vhost[${name}]: 'access_log_file' and 'access_log_pipe' cannot be defined at the same time")
194   }
195
196   if $error_log_file and $error_log_pipe {
197     fail("Apache::Vhost[${name}]: 'error_log_file' and 'error_log_pipe' cannot be defined at the same time")
198   }
199
200   if $fallbackresource {
201     validate_re($fallbackresource, '^/|disabled', 'Please make sure fallbackresource starts with a / (or is "disabled")')
202   }
203
204   if $custom_fragment {
205     validate_string($custom_fragment)
206   }
207
208   if $allow_encoded_slashes {
209     validate_re($allow_encoded_slashes, '(^on$|^off$|^nodecode$)', "${allow_encoded_slashes} is not permitted for allow_encoded_slashes. Allowed values are 'on', 'off' or 'nodecode'.")
210   }
211
212   # Input validation ends
213
214   if $ssl and $ensure == 'present' {
215     include ::apache::mod::ssl
216     # Required for the AddType lines.
217     include ::apache::mod::mime
218   }
219
220   if $virtual_docroot {
221     include ::apache::mod::vhost_alias
222   }
223
224   if $wsgi_daemon_process {
225     include ::apache::mod::wsgi
226   }
227
228   if $suexec_user_group {
229     include ::apache::mod::suexec
230   }
231
232   if $passenger_app_root or $passenger_app_env or $passenger_ruby or $passenger_min_instances or $passenger_start_timeout or $passenger_pre_start {
233     include ::apache::mod::passenger
234   }
235
236   # Configure the defaultness of a vhost
237   if $priority {
238     $priority_real = "${priority}-"
239   } elsif $priority == false {
240     $priority_real = ''
241   } elsif $default_vhost {
242     $priority_real = '10-'
243   } else {
244     $priority_real = '25-'
245   }
246
247   ## Apache include does not always work with spaces in the filename
248   $filename = regsubst($name, ' ', '_', 'G')
249
250   # This ensures that the docroot exists
251   # But enables it to be specified across multiple vhost resources
252   if ! defined(File[$docroot]) and $manage_docroot {
253     file { $docroot:
254       ensure  => directory,
255       owner   => $docroot_owner,
256       group   => $docroot_group,
257       mode    => $docroot_mode,
258       require => Package['httpd'],
259       before  => Concat["${priority_real}${filename}.conf"],
260     }
261   }
262
263   # Same as above, but for logroot
264   if ! defined(File[$logroot]) {
265     file { $logroot:
266       ensure  => $logroot_ensure,
267       mode    => $logroot_mode,
268       require => Package['httpd'],
269       before  => Concat["${priority_real}${filename}.conf"],
270     }
271   }
272
273
274   # Is apache::mod::passenger enabled (or apache::mod['passenger'])
275   $passenger_enabled = defined(Apache::Mod['passenger'])
276
277   # Is apache::mod::shib enabled (or apache::mod['shib2'])
278   $shibboleth_enabled = defined(Apache::Mod['shib2'])
279
280   if $access_log and !$access_logs {
281     if $access_log_file {
282       $_logs_dest = "${logroot}/${access_log_file}"
283     } elsif $access_log_pipe {
284       $_logs_dest = $access_log_pipe
285     } elsif $access_log_syslog {
286       $_logs_dest = $access_log_syslog
287     } else {
288       $_logs_dest = undef
289     }
290     $_access_logs = [{
291       'file'        => $access_log_file,
292       'pipe'        => $access_log_pipe,
293       'syslog'      => $access_log_syslog,
294       'format'      => $access_log_format,
295       'env'         => $access_log_env_var
296     }]
297   } elsif $access_logs {
298     if !is_array($access_logs) {
299       fail("Apache::Vhost[${name}]: access_logs must be an array of hashes")
300     }
301     $_access_logs = $access_logs
302   }
303
304   if $error_log_file {
305     $error_log_destination = "${logroot}/${error_log_file}"
306   } elsif $error_log_pipe {
307     $error_log_destination = $error_log_pipe
308   } elsif $error_log_syslog {
309     $error_log_destination = $error_log_syslog
310   } else {
311     if $ssl {
312       $error_log_destination = "${logroot}/${name}_error_ssl.log"
313     } else {
314       $error_log_destination = "${logroot}/${name}_error.log"
315     }
316   }
317
318   if $ip {
319     if $port {
320       $listen_addr_port = "${ip}:${port}"
321       $nvh_addr_port = "${ip}:${port}"
322     } else {
323       $listen_addr_port = undef
324       $nvh_addr_port = $ip
325       if ! $servername and ! $ip_based {
326         fail("Apache::Vhost[${name}]: must pass 'ip' and/or 'port' parameters for name-based vhosts")
327       }
328     }
329   } else {
330     if $port {
331       $listen_addr_port = $port
332       $nvh_addr_port = "${vhost_name}:${port}"
333     } else {
334       $listen_addr_port = undef
335       $nvh_addr_port = $name
336       if ! $servername {
337         fail("Apache::Vhost[${name}]: must pass 'ip' and/or 'port' parameters, and/or 'servername' parameter")
338       }
339     }
340   }
341   if $add_listen {
342     if $ip and defined(Apache::Listen["${port}"]) {
343       fail("Apache::Vhost[${name}]: Mixing IP and non-IP Listen directives is not possible; check the add_listen parameter of the apache::vhost define to disable this")
344     }
345     if ! defined(Apache::Listen["${listen_addr_port}"]) and $listen_addr_port and $ensure == 'present' {
346       ::apache::listen { "${listen_addr_port}": }
347     }
348   }
349   if ! $ip_based {
350     if ! defined(Apache::Namevirtualhost[$nvh_addr_port]) and $ensure == 'present' and (versioncmp($apache_version, '2.4') < 0) {
351       ::apache::namevirtualhost { $nvh_addr_port: }
352     }
353   }
354
355   # Load mod_rewrite if needed and not yet loaded
356   if $rewrites or $rewrite_cond {
357     if ! defined(Class['apache::mod::rewrite']) {
358       include ::apache::mod::rewrite
359     }
360   }
361
362   # Load mod_alias if needed and not yet loaded
363   if ($scriptalias or $scriptaliases != []) or ($redirect_source and $redirect_dest) {
364     if ! defined(Class['apache::mod::alias'])  and ($ensure == 'present') {
365       include ::apache::mod::alias
366     }
367   }
368
369   # Load mod_proxy if needed and not yet loaded
370   if ($proxy_dest or $proxy_pass or $proxy_pass_match or $proxy_dest_match) {
371     if ! defined(Class['apache::mod::proxy']) {
372       include ::apache::mod::proxy
373     }
374     if ! defined(Class['apache::mod::proxy_http']) {
375       include ::apache::mod::proxy_http
376     }
377   }
378
379   # Load mod_passenger if needed and not yet loaded
380   if $rack_base_uris {
381     if ! defined(Class['apache::mod::passenger']) {
382       include ::apache::mod::passenger
383     }
384   }
385
386   # Load mod_fastci if needed and not yet loaded
387   if $fastcgi_server and $fastcgi_socket {
388     if ! defined(Class['apache::mod::fastcgi']) {
389       include ::apache::mod::fastcgi
390     }
391   }
392
393   # Check if mod_headers is required to process $headers/$request_headers
394   if $headers or $request_headers {
395     if ! defined(Class['apache::mod::headers']) {
396       include ::apache::mod::headers
397     }
398   }
399
400   if ($setenv and ! empty($setenv)) or ($setenvif and ! empty($setenvif)) {
401     if ! defined(Class['apache::mod::setenvif']) {
402       include ::apache::mod::setenvif
403     }
404   }
405
406   ## Create a default directory list if none defined
407   if $directories {
408     if !is_hash($directories) and !(is_array($directories) and is_hash($directories[0])) {
409       fail("Apache::Vhost[${name}]: 'directories' must be either a Hash or an Array of Hashes")
410     }
411     $_directories = $directories
412   } else {
413     $_directory = {
414       provider       => 'directory',
415       path           => $docroot,
416       options        => $options,
417       allow_override => $override,
418       directoryindex => $directoryindex,
419     }
420
421     if versioncmp($apache_version, '2.4') >= 0 {
422       $_directory_version = {
423         require => 'all granted',
424       }
425     } else {
426       $_directory_version = {
427         order => 'allow,deny',
428         allow => 'from all',
429       }
430     }
431
432     $_directories = [ merge($_directory, $_directory_version) ]
433   }
434
435   ## Create a global LocationMatch if locations aren't defined
436   if $modsec_disable_ids {
437     if is_hash($modsec_disable_ids) {
438       $_modsec_disable_ids = $modsec_disable_ids
439     } elsif is_array($modsec_disable_ids) {
440       $_modsec_disable_ids = { '.*' => $modsec_disable_ids }
441     } else {
442       fail("Apache::Vhost[${name}]: 'modsec_disable_ids' must be either a Hash of location/IDs or an Array of IDs")
443     }
444   }
445
446   concat { "${priority_real}${filename}.conf":
447     ensure  => $ensure,
448     path    => "${::apache::vhost_dir}/${priority_real}${filename}.conf",
449     owner   => 'root',
450     group   => $::apache::params::root_group,
451     mode    => '0644',
452     order   => 'numeric',
453     require => Package['httpd'],
454     notify  => Class['apache::service'],
455   }
456   if $::apache::vhost_enable_dir {
457     $vhost_enable_dir = $::apache::vhost_enable_dir
458     $vhost_symlink_ensure = $ensure ? {
459       present => link,
460       default => $ensure,
461     }
462     file{ "${priority_real}${filename}.conf symlink":
463       ensure  => $vhost_symlink_ensure,
464       path    => "${vhost_enable_dir}/${priority_real}${filename}.conf",
465       target  => "${::apache::vhost_dir}/${priority_real}${filename}.conf",
466       owner   => 'root',
467       group   => $::apache::params::root_group,
468       mode    => '0644',
469       require => Concat["${priority_real}${filename}.conf"],
470       notify  => Class['apache::service'],
471     }
472   }
473
474   # Template uses:
475   # - $nvh_addr_port
476   # - $servername
477   # - $serveradmin
478   concat::fragment { "${name}-apache-header":
479     target  => "${priority_real}${filename}.conf",
480     order   => 0,
481     content => template('apache/vhost/_file_header.erb'),
482   }
483
484   # Template uses:
485   # - $virtual_docroot
486   # - $docroot
487   concat::fragment { "${name}-docroot":
488     target  => "${priority_real}${filename}.conf",
489     order   => 10,
490     content => template('apache/vhost/_docroot.erb'),
491   }
492
493   # Template uses:
494   # - $aliases
495   if $aliases and ! empty($aliases) {
496     concat::fragment { "${name}-aliases":
497       target  => "${priority_real}${filename}.conf",
498       order   => 20,
499       content => template('apache/vhost/_aliases.erb'),
500     }
501   }
502
503   # Template uses:
504   # - $itk
505   # - $::kernelversion
506   if $itk and ! empty($itk) {
507     concat::fragment { "${name}-itk":
508       target  => "${priority_real}${filename}.conf",
509       order   => 30,
510       content => template('apache/vhost/_itk.erb'),
511     }
512   }
513
514   # Template uses:
515   # - $fallbackresource
516   if $fallbackresource {
517     concat::fragment { "${name}-fallbackresource":
518       target  => "${priority_real}${filename}.conf",
519       order   => 40,
520       content => template('apache/vhost/_fallbackresource.erb'),
521     }
522   }
523
524   # Template uses:
525   # - $allow_encoded_slashes
526   if $allow_encoded_slashes {
527     concat::fragment { "${name}-allow_encoded_slashes":
528       target  => "${priority_real}${filename}.conf",
529       order   => 50,
530       content => template('apache/vhost/_allow_encoded_slashes.erb'),
531     }
532   }
533
534   # Template uses:
535   # - $_directories
536   # - $docroot
537   # - $apache_version
538   # - $suphp_engine
539   # - $shibboleth_enabled
540   if $_directories and ! empty($_directories) {
541     concat::fragment { "${name}-directories":
542       target  => "${priority_real}${filename}.conf",
543       order   => 60,
544       content => template('apache/vhost/_directories.erb'),
545     }
546   }
547
548   # Template uses:
549   # - $additional_includes
550   if $additional_includes and ! empty($additional_includes) {
551     concat::fragment { "${name}-additional_includes":
552       target  => "${priority_real}${filename}.conf",
553       order   => 70,
554       content => template('apache/vhost/_additional_includes.erb'),
555     }
556   }
557
558   # Template uses:
559   # - $error_log
560   # - $log_level
561   # - $error_log_destination
562   # - $log_level
563   if $error_log or $log_level {
564     concat::fragment { "${name}-logging":
565       target  => "${priority_real}${filename}.conf",
566       order   => 80,
567       content => template('apache/vhost/_logging.erb'),
568     }
569   }
570
571   # Template uses no variables
572   concat::fragment { "${name}-serversignature":
573     target  => "${priority_real}${filename}.conf",
574     order   => 90,
575     content => template('apache/vhost/_serversignature.erb'),
576   }
577
578   # Template uses:
579   # - $access_log
580   # - $_access_log_env_var
581   # - $access_log_destination
582   # - $_access_log_format
583   # - $_access_log_env_var
584   # - $access_logs
585   if $access_log or $access_logs {
586     concat::fragment { "${name}-access_log":
587       target  => "${priority_real}${filename}.conf",
588       order   => 100,
589       content => template('apache/vhost/_access_log.erb'),
590     }
591   }
592
593   # Template uses:
594   # - $action
595   if $action {
596     concat::fragment { "${name}-action":
597       target  => "${priority_real}${filename}.conf",
598       order   => 110,
599       content => template('apache/vhost/_action.erb'),
600     }
601   }
602
603   # Template uses:
604   # - $block
605   # - $apache_version
606   if $block and ! empty($block) {
607     concat::fragment { "${name}-block":
608       target  => "${priority_real}${filename}.conf",
609       order   => 120,
610       content => template('apache/vhost/_block.erb'),
611     }
612   }
613
614   # Template uses:
615   # - $error_documents
616   if $error_documents and ! empty($error_documents) {
617     concat::fragment { "${name}-error_document":
618       target  => "${priority_real}${filename}.conf",
619       order   => 130,
620       content => template('apache/vhost/_error_document.erb'),
621     }
622   }
623
624   # Template uses:
625   # - $proxy_dest
626   # - $proxy_pass
627   # - $proxy_pass_match
628   # - $proxy_preserve_host
629   # - $no_proxy_uris
630   if $proxy_dest or $proxy_pass or $proxy_pass_match {
631     concat::fragment { "${name}-proxy":
632       target  => "${priority_real}${filename}.conf",
633       order   => 140,
634       content => template('apache/vhost/_proxy.erb'),
635     }
636   }
637
638   # Template uses:
639   # - $rack_base_uris
640   if $rack_base_uris {
641     concat::fragment { "${name}-rack":
642       target  => "${priority_real}${filename}.conf",
643       order   => 150,
644       content => template('apache/vhost/_rack.erb'),
645     }
646   }
647
648   # Template uses:
649   # - $redirect_source
650   # - $redirect_dest
651   # - $redirect_status
652   # - $redirect_dest_a
653   # - $redirect_source_a
654   # - $redirect_status_a
655   # - $redirectmatch_status
656   # - $redirectmatch_regexp
657   # - $redirectmatch_dest
658   # - $redirectmatch_status_a
659   # - $redirectmatch_regexp_a
660   # - $redirectmatch_dest
661   if ($redirect_source and $redirect_dest) or ($redirectmatch_status and $redirectmatch_regexp and $redirectmatch_dest) {
662     concat::fragment { "${name}-redirect":
663       target  => "${priority_real}${filename}.conf",
664       order   => 160,
665       content => template('apache/vhost/_redirect.erb'),
666     }
667   }
668
669   # Template uses:
670   # - $rewrites
671   # - $rewrite_base
672   # - $rewrite_rule
673   # - $rewrite_cond
674   # - $rewrite_map
675   if $rewrites or $rewrite_rule {
676     concat::fragment { "${name}-rewrite":
677       target  => "${priority_real}${filename}.conf",
678       order   => 170,
679       content => template('apache/vhost/_rewrite.erb'),
680     }
681   }
682
683   # Template uses:
684   # - $scriptaliases
685   # - $scriptalias
686   if ( $scriptalias or $scriptaliases != [] ) {
687     concat::fragment { "${name}-scriptalias":
688       target  => "${priority_real}${filename}.conf",
689       order   => 180,
690       content => template('apache/vhost/_scriptalias.erb'),
691     }
692   }
693
694   # Template uses:
695   # - $serveraliases
696   if $serveraliases and ! empty($serveraliases) {
697     concat::fragment { "${name}-serveralias":
698       target  => "${priority_real}${filename}.conf",
699       order   => 190,
700       content => template('apache/vhost/_serveralias.erb'),
701     }
702   }
703
704   # Template uses:
705   # - $setenv
706   # - $setenvif
707   if ($setenv and ! empty($setenv)) or ($setenvif and ! empty($setenvif)) {
708     concat::fragment { "${name}-setenv":
709       target  => "${priority_real}${filename}.conf",
710       order   => 200,
711       content => template('apache/vhost/_setenv.erb'),
712     }
713   }
714
715   # Template uses:
716   # - $ssl
717   # - $ssl_cert
718   # - $ssl_key
719   # - $ssl_chain
720   # - $ssl_certs_dir
721   # - $ssl_ca
722   # - $ssl_crl_path
723   # - $ssl_crl
724   # - $ssl_crl_check
725   # - $ssl_proxyengine
726   # - $ssl_protocol
727   # - $ssl_cipher
728   # - $ssl_honorcipherorder
729   # - $ssl_verify_client
730   # - $ssl_verify_depth
731   # - $ssl_options
732   # - $apache_version
733   if $ssl {
734     concat::fragment { "${name}-ssl":
735       target  => "${priority_real}${filename}.conf",
736       order   => 210,
737       content => template('apache/vhost/_ssl.erb'),
738     }
739   }
740
741   # Template uses:
742   # - $suphp_engine
743   # - $suphp_addhandler
744   # - $suphp_configpath
745   if $suphp_engine == 'on' {
746     concat::fragment { "${name}-suphp":
747       target  => "${priority_real}${filename}.conf",
748       order   => 220,
749       content => template('apache/vhost/_suphp.erb'),
750     }
751   }
752
753   # Template uses:
754   # - $php_values
755   # - $php_flags
756   if ($php_values and ! empty($php_values)) or ($php_flags and ! empty($php_flags)) {
757     concat::fragment { "${name}-php":
758       target  => "${priority_real}${filename}.conf",
759       order   => 220,
760       content => template('apache/vhost/_php.erb'),
761     }
762   }
763
764   # Template uses:
765   # - $php_admin_values
766   # - $php_admin_flags
767   if ($php_admin_values and ! empty($php_admin_values)) or ($php_admin_flags and ! empty($php_admin_flags)) {
768     concat::fragment { "${name}-php_admin":
769       target  => "${priority_real}${filename}.conf",
770       order   => 230,
771       content => template('apache/vhost/_php_admin.erb'),
772     }
773   }
774
775   # Template uses:
776   # - $headers
777   if $headers and ! empty($headers) {
778     concat::fragment { "${name}-header":
779       target  => "${priority_real}${filename}.conf",
780       order   => 240,
781       content => template('apache/vhost/_header.erb'),
782     }
783   }
784
785   # Template uses:
786   # - $request_headers
787   if $request_headers and ! empty($request_headers) {
788     concat::fragment { "${name}-requestheader":
789       target  => "${priority_real}${filename}.conf",
790       order   => 250,
791       content => template('apache/vhost/_requestheader.erb'),
792     }
793   }
794
795   # Template uses:
796   # - $wsgi_application_group
797   # - $wsgi_daemon_process
798   # - $wsgi_daemon_process_options
799   # - $wsgi_import_script
800   # - $wsgi_import_script_options
801   # - $wsgi_process_group
802   # - $wsgi_script_aliases
803   # - $wsgi_pass_authorization
804   if $wsgi_application_group or $wsgi_daemon_process or ($wsgi_import_script and $wsgi_import_script_options) or $wsgi_process_group or ($wsgi_script_aliases and ! empty($wsgi_script_aliases)) or $wsgi_pass_authorization {
805     concat::fragment { "${name}-wsgi":
806       target  => "${priority_real}${filename}.conf",
807       order   => 260,
808       content => template('apache/vhost/_wsgi.erb'),
809     }
810   }
811
812   # Template uses:
813   # - $custom_fragment
814   if $custom_fragment {
815     concat::fragment { "${name}-custom_fragment":
816       target  => "${priority_real}${filename}.conf",
817       order   => 270,
818       content => template('apache/vhost/_custom_fragment.erb'),
819     }
820   }
821
822   # Template uses:
823   # - $fastcgi_server
824   # - $fastcgi_socket
825   # - $fastcgi_dir
826   # - $apache_version
827   if $fastcgi_server or $fastcgi_dir {
828     concat::fragment { "${name}-fastcgi":
829       target  => "${priority_real}${filename}.conf",
830       order   => 280,
831       content => template('apache/vhost/_fastcgi.erb'),
832     }
833   }
834
835   # Template uses:
836   # - $suexec_user_group
837   if $suexec_user_group {
838     concat::fragment { "${name}-suexec":
839       target  => "${priority_real}${filename}.conf",
840       order   => 290,
841       content => template('apache/vhost/_suexec.erb'),
842     }
843   }
844
845   # Template uses:
846   # - $passenger_app_root
847   # - $passenger_app_env
848   # - $passenger_ruby
849   # - $passenger_min_instances
850   # - $passenger_start_timeout
851   # - $passenger_pre_start
852   if $passenger_app_root or $passenger_app_env or $passenger_ruby or $passenger_min_instances or $passenger_start_timeout or $passenger_pre_start {
853     concat::fragment { "${name}-passenger":
854       target  => "${priority_real}${filename}.conf",
855       order   => 300,
856       content => template('apache/vhost/_passenger.erb'),
857     }
858   }
859
860   # Template uses:
861   # - $add_default_charset
862   if $add_default_charset {
863     concat::fragment { "${name}-charsets":
864       target  => "${priority_real}${filename}.conf",
865       order   => 310,
866       content => template('apache/vhost/_charsets.erb'),
867     }
868   }
869
870   # Template uses:
871   # - $modsec_disable_vhost
872   # - $modsec_disable_ids
873   # - $modsec_disable_ips
874   # - $modsec_body_limit
875   if $modsec_disable_vhost or $modsec_disable_ids or $modsec_disable_ips {
876     concat::fragment { "${name}-security":
877       target  => "${priority_real}${filename}.conf",
878       order   => 320,
879       content => template('apache/vhost/_security.erb')
880     }
881   }
882
883   # Template uses no variables
884   concat::fragment { "${name}-file_footer":
885     target  => "${priority_real}${filename}.conf",
886     order   => 999,
887     content => template('apache/vhost/_file_footer.erb'),
888   }
889 }