| Index: modules/adblockplus/manifests/mumble.pp | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/modules/adblockplus/manifests/mumble.pp | 
| @@ -0,0 +1,114 @@ | 
| +# == Class: adblockplus:mumble | 
| +# | 
| +# Create and maintain mumble (https://www.mumble.com) setups. | 
| +# | 
| +# === Parameters: | 
| +# | 
| +# [*package*] | 
| +# Overwrite the default package options, to fine-tune the target version (i.e. | 
| +# ensure => 'latest') or remove mumble (ensure => 'absent' or 'purged') | 
| +# | 
| +# [*certificate*] | 
| +# Certificate used to enable SSL connection with the server. | 
| +# | 
| +# [*private_key*] | 
| +# Private key used to enable SSL connection with the client. | 
| +# | 
| +# [*server_password*] | 
| +# String used to login into the server. | 
| +# | 
| +# | 
| +# === Examples: | 
| +# | 
| +# class {'adblockplus::mumble': | 
| +# package => { | 
| +# 'ensure' => 'absent', | 
| +# }, | 
| +# }, | 
| +# } | 
| +# | 
| +class adblockplus::mumble ( | 
| + $package = {}, | 
| + $certificate = {}, | 
| + $private_key = {}, | 
| + $server_password = 'changeme', | 
| +){ | 
| + | 
| + # https://forge.puppet.com/puppetlabs/stdlib#getparam | 
| + $package_ensure = $package['ensure'] | 
| + | 
| + # https://docs.puppet.com/puppet/latest/lang_conditional.html#selectors | 
| + $ensure = $package_ensure ? { | 
| + /^(absent|latest|present|purged|true)$/ => $package_ensure, | 
| + default => 'present', | 
| + } | 
| + | 
| + ensure_resource('package', $title, merge({ | 
| + name => 'mumble-server', | 
| + ensure => $ensure, | 
| + }, $package)) | 
| + | 
| + file {'/etc/mumble-server.ini': | 
| + owner => 'root', | 
| + group => 'mumble-server', | 
| + mode => 0640, | 
| + content => template('adblockplus/mumble-server.ini.erb'), | 
| + require => Package[$title], | 
| + notify => Service['mumble-server'], | 
| + } | 
| + | 
| + service {'mumble-server': | 
| + ensure => 'running', | 
| + enable => true, | 
| + require => Package[$title], | 
| + } | 
| + | 
| + # https://forge.puppet.com/puppetlabs/stdlib#getparam | 
| + $certificate_ensure = $certificate['ensure'] | 
| + | 
| + # https://docs.puppet.com/puppet/latest/lang_conditional.html#selectors | 
| + $ensure_certificate = $certificate_ensure ? { | 
| + /^(absent|latest|present|purged|true)$/ => $certificate_ensure, | 
| + default => 'absent', | 
| + } | 
| + | 
| + $default_cert_source = $certificate['content'] ? { | 
| + undef => 'puppet:///modules/private/mumble.crt', | 
| + default => undef, | 
| + } | 
| + | 
| + ensure_resource('file', '/etc/mumble.crt', merge({ | 
| + ensure => ensure_file_state($ensure_certificate), | 
| + mode => 0644, | 
| + path => '/etc/mumble.crt', | 
| + group => 'mumble-server', | 
| + before => File['/etc/mumble-server.ini'], | 
| + require => Package[$title], | 
| + source => $default_cert_source, | 
| + }, $certificate)) | 
| + | 
| + # https://forge.puppet.com/puppetlabs/stdlib#getparam | 
| + $private_key_ensure = $private_key['ensure'] | 
| + | 
| + # https://docs.puppet.com/puppet/latest/lang_conditional.html#selectors | 
| + $ensure_private_key = $certificate_ensure ? { | 
| + /^(absent|latest|present|purged|true)$/ => $private_key_ensure, | 
| + default => 'absent', | 
| + } | 
| + | 
| + $default_pk_source = $private_key['content'] ? { | 
| + undef => 'puppet:///modules/private/mumble.key', | 
| + default => undef, | 
| + } | 
| + | 
| + ensure_resource('file', 'mumble.key', merge({ | 
| + ensure => ensure_file_state($ensure_private_key), | 
| + mode => 0644, | 
| + path => '/etc/mumble.key', | 
| + group => 'mumble-server', | 
| + before => File['/etc/mumble-server.ini'], | 
| + require => Package[$title], | 
| + source => $default_pk_source, | 
| + }, $private_key)) | 
| +} | 
| + |