puppet-httpd/manifests/vhost.pp

91 lines
2.3 KiB
Puppet

# Definition: httpd::vhost
#
# This class installs Apache Virtual Hosts
#
# Parameters:
# - The $port to configure the host on
# - The $docroot provides the DocumentationRoot variable
# - The $ssl option is set true or false to enable SSL for this Virtual Host
# - The $configure_firewall option is set to true or false to specify if
# a firewall should be configured.
# - The $template option specifies whether to use the default template or
# override
# - The $priority of the site
# - The $serveraliases of the site
# - The $options for the given vhost
# - The $vhost_name for name based virtualhosting, defaulting to *
#
# Actions:
# - Install Apache Virtual Hosts
#
# Requires:
# - The httpd class
#
# Sample Usage:
# httpd::vhost { 'site.name.fqdn':
# priority => '20',
# port => '80',
# docroot => '/path/to/docroot',
# }
#
define httpd::vhost(
$port,
$docroot,
$configure_firewall = true,
$ssl = $httpd::params::ssl,
$template = $httpd::params::template,
$priority = $httpd::params::priority,
$servername = $httpd::params::servername,
$serveraliases = $httpd::params::serveraliases,
$auth = $httpd::params::auth,
$redirect_ssl = $httpd::params::redirect_ssl,
$options = $httpd::params::options,
$apache_name = $httpd::params::apache_name,
$vhost_name = $httpd::params::vhost_name
) {
include httpd
if $servername == '' {
$srvname = $name
} else {
$srvname = $servername
}
if $ssl == true {
include httpd::ssl
}
# Since the template will use auth, redirect to https requires mod_rewrite
if $redirect_ssl == true {
case $::operatingsystem {
'debian','ubuntu': {
Httpd_mod <| title == 'rewrite' |>
}
default: { }
}
}
file { "${priority}-${name}.conf":
path => "${httpd::params::vdir}/${priority}-${name}.conf",
content => template($template),
owner => 'root',
group => 'root',
mode => '0755',
require => Package['httpd'],
notify => Service['httpd'],
}
if $configure_firewall {
if ! defined(Firewall["0100-INPUT ACCEPT ${port}"]) {
@firewall {
"0100-INPUT ACCEPT ${port}":
action => 'accept',
dport => '$port',
proto => 'tcp'
}
}
}
}