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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# File 'manifests/apache/vhost.pp', line 29
class puppetboard::apache::vhost (
String[1] $vhost_name,
Stdlib::Unixpath $wsgi_alias = '/',
Optional[Stdlib::IP::Address] $ip = undef,
Stdlib::Port $port = 5000,
Boolean $ssl = false,
Optional[Stdlib::AbsolutePath] $ssl_cert = undef,
Optional[Stdlib::AbsolutePath] $ssl_key = undef,
Optional[Stdlib::AbsolutePath] $ssl_chain = undef,
Integer[1] $threads = 5,
String[1] $user = $puppetboard::user,
String[1] $group = $puppetboard::group,
Stdlib::AbsolutePath $basedir = $puppetboard::basedir,
Variant[Array[String[1]], String[1]] $override = $puppetboard::override,
Boolean $enable_ldap_auth = $puppetboard::enable_ldap_auth,
Optional[String[1]] $ldap_bind_dn = undef,
Optional[String[1]] $ldap_bind_password = undef,
Optional[String[1]] $ldap_url = undef,
Optional[String[1]] $ldap_bind_authoritative = undef,
Boolean $ldap_require_group = $puppetboard::ldap_require_group,
Optional[String[1]] $ldap_require_group_dn = undef,
Optional[String[1]] $ldap_require_user = undef,
Optional[String[1]] $ldap_require_dn = undef,
Optional[String[1]] $ldap_require_attribute = undef,
Optional[String[1]] $ldap_require_filter = undef,
Stdlib::Absolutepath $virtualenv_dir = $puppetboard::virtualenv_dir,
Hash $custom_apache_parameters = {},
) {
$wsgi = $facts['os']['family'] ? {
'Debian' => {
package_name => 'libapache2-mod-wsgi-py3',
mod_path => '/usr/lib/apache2/modules/mod_wsgi.so',
},
default => {},
}
class { 'apache::mod::wsgi':
* => $wsgi,
}
$docroot = "${basedir}/puppetboard"
$wsgi_script_aliases = {
"${wsgi_alias}" => "${docroot}/wsgi.py",
}
$wsgi_daemon_process = {
$user => {
threads => $threads,
group => $group,
user => $user,
python-home => $virtualenv_dir,
},
}
file { "${docroot}/wsgi.py":
ensure => file,
content => file("${module_name}/wsgi.py"),
owner => $user,
group => $group,
}
if $enable_ldap_auth {
$ldap_additional_includes = ["${puppetboard::apache_confd}/puppetboard-ldap.part"]
$ldap_require = File["${puppetboard::apache_confd}/puppetboard-ldap.part"]
file { 'puppetboard-ldap.part':
ensure => file,
path => "${puppetboard::apache_confd}/puppetboard-ldap.part",
owner => 'root',
group => 'root',
content => epp("${module_name}/apache/ldap.epp",
{
'ldap_bind_authoritative' => $ldap_bind_authoritative,
'ldap_bind_dn' => $ldap_bind_dn,
'ldap_bind_password' => $ldap_bind_password,
'ldap_require_group_dn' => $ldap_require_group_dn,
'ldap_require_group' => $ldap_require_group,
'ldap_require_user' => $ldap_require_user,
'ldap_require_dn' => $ldap_require_dn,
'ldap_require_attribute' => $ldap_require_attribute,
'ldap_require_filter' => $ldap_require_filter,
'ldap_url' => $ldap_url,
},
),
require => File["${docroot}/wsgi.py"],
notify => Service[$puppetboard::apache_service],
}
}
else {
$ldap_additional_includes = undef
$ldap_require = undef
}
apache::vhost { $vhost_name:
port => $port,
ip => $ip,
docroot => $docroot,
manage_docroot => false,
ssl => $ssl,
ssl_cert => $ssl_cert,
ssl_key => $ssl_key,
ssl_chain => $ssl_chain,
additional_includes => $ldap_additional_includes,
wsgi_daemon_process => $wsgi_daemon_process,
wsgi_process_group => $group,
wsgi_script_aliases => $wsgi_script_aliases,
override => [$override].flatten,
require => [File["${docroot}/wsgi.py"], $ldap_require],
notify => Service[$puppetboard::apache_service],
* => $custom_apache_parameters,
}
File[$puppetboard::settings_file] ~> Service[$puppetboard::apache_service]
}
|