summaryrefslogtreecommitdiff
path: root/manifests/vhost.pp
blob: 559a53121a534c343f4d9bb40d3b6859f9d596bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# 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'
      }
    }
  }
}