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
|
class websites::setup {
# Third-party hosted nodes generally aren't behind an https proxy
$hosting_type = hiera('nodo::vserver::hosting_type', 'direct')
# Include apache
class { 'apache':
https_proxy => $hosting_type ? {
'direct' => 'yes',
default => false,
},
}
# The needed apache modules
apache::module { "alias":
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:///modules/site_apache/htdocs/${::domain}/images",
"puppet:///modules/websites/htdocs/images", ]
}
# Certificates folder
file { "${apache::www_folder}/certs":
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:///modules/site_apache/htdocs/${::domain}/certs",
"puppet:///modules/websites/htdocs/certs", ]
}
# Web index
file { "${apache::www_folder}/index.html":
ensure => present,
owner => "root",
group => "root",
mode => 0644,
source => [ "puppet:///modules/site_apache/htdocs/${::domain}/index.html",
"puppet:///modules/websites/htdocs/index.html", ]
}
# Missing page
file { "${apache::www_folder}/missing.html":
ensure => present,
owner => "root",
group => "root",
mode => 0644,
source => [ "puppet:///modules/site_apache/htdocs/${::domain}/missing.html",
"puppet:///modules/websites/htdocs/missing.html", ]
}
# Make sure that a top level index exists
file { "/var/www/index.html":
ensure => present,
}
# Default vhost: can just be applied on the defining host
apache::site { "${apache::server_name}":
server_alias => "${::domain}",
docroot => "${apache::www_folder}",
mpm => false,
tag => 'all',
}
# 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',
mpm => false,
tag => 'all',
}
# 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}"],
}
# Images folder for error
file { "${apache::error_folder}/images":
ensure => "${apache::www_folder}/images",
owner => "root",
group => "root",
force => true,
require => File["${apache::error_folder}", "${apache::www_folder}/images"],
}
# Retrieve configured instances
$sites = hiera('apache::sites', {})
$databases = hiera('database::instances', {})
$ikiwikis = hiera('ikiwiki::instances', {})
# Apply instances
create_resources('apache::site', $sites)
create_resources('database::instance', $databases)
create_resources('ikiwiki::instance', $ikiwikis)
}
|