aboutsummaryrefslogtreecommitdiff
path: root/manifests/websites.pp
blob: eeba8be31bba3541255b07f8628becaa25fb17ee (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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
class websites::setup {
  # Configure Apache Web Server
  $apache_www_folder   = "/var/www/data"
  $apache_error_folder = "/var/www/error"
  $apache_sites_folder = "/var/sites"
  $apache_error_dest   = "http://${domain}/missing.html"
  $drupal_folder       = "${apache_www_folder}/drupal"

  $default_vhost = $apache_server_name ? {
    ''      => $hostname,
    default => $apache_server_name,
  }

  # Include apache
  include apache

  # The needed apache modules
  apache::module { "rewrite":
    ensure  => present,
  }

  # Images folder
  file { "${apache_www_folder}/images":
    ensure  => directory,
    recurse => true,
    purge   => true,
    force   => true,
    owner   => "root",
    group   => "root",
    # This mode will also apply to files from the source directory
    mode    => 0644,
    # Puppet will automatically set +x for directories
    source  => "puppet://$server/files/apache/htdocs/images",
  }

  # Web index
  file { "${apache_www_folder}/index.html":
    ensure  => present,
    owner   => "root",
    group   => "root",
    mode    => 0644,
    source  => "puppet://$server/files/apache/htdocs/index.html",
  }

  # Missing page
  file { "${apache_www_folder}/missing.html":
    ensure  => present,
    owner   => "root",
    group   => "root",
    mode    => 0644,
    source  => "puppet://$server/files/apache/htdocs/missing.html",
  }

  # Default vhost: can just be applied on the defining host
  apache::site { "$default_vhost":
    server_alias => "$domain",
    docroot      => "${apache_www_folder}",
  }

  # We have to use 'zzz-error' so it will be the last matched vhost
  apache::site { "error":
    template       => 'apache/error.erb',
    docroot        => "${apache_error_folder}",
    filename       => 'zzz-error',
  }

  # Index page for error
  file { "${apache_error_folder}/index.html":
    ensure  => "${apache_www_folder}/index.html",
    owner   => "root",
    group   => "root",
    force   => true,
    require => File["$apache_error_folder"],
  }

  # TODO: this is temporary: remove when all nodes have applied it
  # We have to use 'zzz-erro' so it will be the last matched vhost
  apache::site { "erro":
    ensure         => absent,
    docroot        => '/var/www/erro',
    filename       => 'zzz-erro',
  }

  # TODO: this is temporary: remove when all nodes have applied it
  file { "/var/www/erro":
    ensure  => absent,
    recurse => true,
    force   => true,
  }

  # TODO: this is temporary: remove when all nodes have applied it
  # Index page for erro
  file { "/var/www/erro/index.html":
    ensure  => absent,
    owner   => "root",
    group   => "root",
    force   => true,
  }

  # TODO: this is temporary: remove when all nodes have applied it
  file { "/var/www/erro/missing.html":
    ensure  => absent,
  }
}

class websites::hosting inherits websites::setup {
  # Include the needed classes for website hosting
  include php
  include drupal
  include gitweb
  include trac
  include websvn
  include moin
  include ikiwiki
  include pmwiki
}

class websites::hosting::admin inherits websites::setup {
  # Include the needed classes for admin interfaces
  include trac
  include gitweb
}