# Copyright 2015 Josh Farwell, unless otherwise noted.
#
class mailman3::core (
- $install_core = $mailman3::params::install_core,
- $core_version = $mailman3::params::core_version,
$core_manage_database = $mailman3::params::core_manage_database,
$core_manage_firewall = $mailman3::params::core_manage_firewall,
+ $core_override_hyperkittycfg = {},
$core_override_options = {},
$core_override_allowed_hosts = {},
+ $core_version = $mailman3::params::core_version,
$db_tag = $mailman3::params::core_db_tag,
+ $install_core = $mailman3::params::install_core,
) inherits mailman3::params {
# Make sure parameters are properly formatted
validate_bool($install_core)
- validate_string($db_tag)
- validate_string($core_version)
validate_bool($core_manage_database)
validate_bool($core_manage_firewall)
+ validate_hash($core_override_hyperkittycfg)
validate_hash($core_override_options)
validate_hash($core_override_allowed_hosts)
+ validate_string($db_tag)
+ validate_string($core_version)
# Merge together options with defaults from ::params, right most wins
+ $core_hyperkittycfg = merge($mailman3::params::core_default_hyperkittycfg,
+ $core_override_hyperkittycfg)
+
$core_options = merge($mailman3::params::core_default_options,
$core_override_options)
core_manage_database => $core_manage_database,
core_manage_firewall => $core_manage_firewall,
core_options => $core_options,
+ core_hyperkittycfg => $core_hyperkittycfg,
core_allowed_hosts => $core_allowed_hosts,
db_tag => $db_tag,
}
#
class mailman3::core::config (
$core_allowed_hosts,
+ $core_hyperkittycfg,
$core_manage_database,
$core_manage_firewall,
$core_options,
validate_string($db_tag)
validate_bool($core_manage_database)
validate_bool($core_manage_firewall)
+ validate_hash($core_hyperkittycfg)
validate_hash($core_options)
validate_hash($core_allowed_hosts)
content => template('mailman3/mailman.cfg.erb')
}
+ file { '/etc/mailman3.d/hyperkitty.cfg':
+ ensure => file,
+ owner => 'mailman',
+ group => 'mailman',
+ mode => '0640',
+ content => template('mailman3/hyperkitty.cfg.erb')
+ }
+
if ($core_manage_firewall) {
class { 'mailman3::core::config::firewall':
core_manage_firewall => $core_manage_firewall,
$rest_admin_pass = 'restpass'
# Mailman Core values
- $core_db_tag = 'mailman3-core'
- $core_layout = 'fhs'
- $core_bin_dir = '/usr/libexec/mailman3'
- $core_var_dir = '/var/lib/mailman3'
- $core_queue_dir = '/var/spool/mailman3'
- $core_log_dir = '/var/log/mailman3'
- $core_lock_dir = '/run/lock/mailman3'
- $core_ext_dir = '/etc/mailman3.d'
- $core_pid_file = '/run/mailman3/master.pid'
- $core_site_owner = 'root@localhost'
- $core_version = 'installed' # could also be 3.0.0
+ $core_db_tag = 'mailman3-core'
+ $core_version = 'installed' # could also be 3.0.0
+
+ $core_layout = 'fhs'
+ $core_bin_dir = '/usr/libexec/mailman3'
+ $core_var_dir = '/var/lib/mailman3'
+ $core_queue_dir = '/var/spool/mailman3'
+ $core_log_dir = '/var/log/mailman3'
+ $core_lock_dir = '/run/lock/mailman3'
+ $core_ext_dir = '/etc/mailman3.d'
+ $core_pid_file = '/run/mailman3/master.pid'
+ $core_site_owner = 'root@localhost'
+
+ $core_hyperkitty_baseurl = 'http://localhost:8000/archives'
+ $core_hyperkitty_apikey = 'SecretArchiverAPIKey'
# Mailman Core default options hashes
$core_default_allowed_hosts = {
'rest' => ['0.0.0.0'],
'lmtp' => ['0.0.0.0'],
}
+
+ $core_default_hyperkittycfg = {
+ 'general' => {
+ 'base_url' => $mailman3::params::core_hyperkitty_baseurl,
+ 'api_key' => $mailman3::params::core_hyperkitty_apikey,
+ }
+ }
+
$core_default_options = {
'mailman' => {
'site_owner' => $mailman3::params::core_site_owner,
'rest' => ['0.0.0.0'],
'lmtp' => ['0.0.0.0'],
},
+ 'core_hyperkittycfg' => {
+ 'general' => {
+ 'base_url' => 'http://localhost:8000/archives',
+ 'api_key' => 'SecretArchiverAPIKey',
+ },
+ },
'core_manage_database' => false,
'core_manage_firewall' => true,
'core_options' => {
'content' => "; MANAGED BY PUPPET\n\n[mailman]\n layout = fhs\n site_owner = root@localhost\n\n[paths.fhs]\n bin_dir = /usr/libexec/mailman3\n ext_dir = /etc/mailman3.d\n lock_dir = /run/lock/mailman3\n log_dir = /var/log/mailman3\n pid_file = /run/mailman3/master.pid\n queue_dir = /var/spool/mailman3\n var_dir = /var/lib/mailman3\n\n[webservice]\n admin_pass = GENERATE\n admin_user = restadmin\n\n",
) }
+ it { is_expected.to contain_file('/etc/mailman3.d/hyperkitty.cfg').with(
+ 'ensure' => 'file',
+ 'owner' => 'mailman',
+ 'group' => 'mailman',
+ 'mode' => '0640',
+ 'content' => "; MANAGED BY PUPPET\n\n[general]\napi_key: SecretArchiverAPIKey\nbase_url: http://localhost:8000/archives\n\n"
+ ) }
+
it { is_expected.to contain_class('mailman3::core::config::firewall').with(
'core_allowed_hosts' => {
'rest' => ['0.0.0.0'],
'rest' => ['10.0.0.1'],
'lmtp' => ['10.0.0.1'],
},
+ 'core_hyperkittycfg' => {
+ 'general' => {
+ 'base_url' => 'http://example.com/archives',
+ 'api_key' => 'superdifferentpassword',
+ },
+ },
'core_manage_database' => false,
'core_manage_firewall' => true,
'core_options' => {
'content' => "; MANAGED BY PUPPET\n\n[mailman]\n layout = fhs\n site_owner = admin@example.com\n\n[paths.fhs]\n bin_dir = /foo/libexec/mailman3\n ext_dir = /foo/mailman3.d\n lock_dir = /foo/lock/mailman3\n log_dir = /foo/log/mailman3\n pid_file = /foo/mailman3/master.pid\n queue_dir = /foo/spool/mailman3\n var_dir = /foo/lib/mailman3\n\n[testsection]\n test_value = foobar\n\n[webservice]\n admin_pass = bar\n admin_user = fooadmin\n\n",
) }
+ it { is_expected.to contain_file('/etc/mailman3.d/hyperkitty.cfg').with(
+ 'ensure' => 'file',
+ 'owner' => 'mailman',
+ 'group' => 'mailman',
+ 'mode' => '0640',
+ 'content' => "; MANAGED BY PUPPET\n\n[general]\napi_key: superdifferentpassword\nbase_url: http://example.com/archives\n\n"
+ ) }
+
it { is_expected.to contain_class('mailman3::core::config::firewall').with(
'core_allowed_hosts' => { 'rest' => ['10.0.0.1'], 'lmtp' => ['10.0.0.1'] },
) }
let (:params) {
{
'db_tag' => 'testtag',
+ 'core_hyperkittycfg' => {},
'core_manage_database' => false,
'core_manage_firewall' => false,
'core_allowed_hosts' => {},
--- /dev/null
+; MANAGED BY PUPPET
+
+<% @core_hyperkittycfg.sort.map do |section, var_hash| -%>
+[<%= section %>]
+<% var_hash.sort.map do |var, val_or_arr| -%>
+<% if val_or_arr.is_a? Array -%>
+<% val_or_arr.each do |val| -%>
+<%= var %>: <%= val %>
+<% end -%>
+<% else -%>
+<%= var %>: <%= val_or_arr %>
+<% end -%>
+<% end -%>
+
+<% end -%>