Puppet Class: sendmail::mailertable

Defined in:
manifests/mailertable.pp

Summary

Manage the Sendmail mailertable db file.

Overview

The class manages the file either as a single file resource or each entry in the file separately. The file is managed as a whole using the ‘source` or `content` parameters. The `entries` parameter is used to manage each entry separately. Preferable this is done with hiera using automatic parameter lookup.

Examples:

Manage the mailertable using hiera

class { 'sendmail::mailertable': }

Manage the mailertable using the provided file

class { 'sendmail::mailertable':
  source => 'puppet:///modules/sendmail/mailertable',
}

Parameters:

  • content (Optional[String]) (defaults to: undef)

    The desired contents of the mailertable file. This allows managing the mailertable file as a whole. Changes to the file automatically triggers a rebuild of the mailertable database file. This attribute is mutually exclusive with ‘source` and `entries`.

  • source (Optional[String]) (defaults to: undef)

    A source file for the mailertable file. This allows managing the mailertable file as a whole. Changes to the file automatically triggers a rebuild of the mailertable database file. This attribute is mutually exclusive with ‘content` and `entries`.

  • entries (Hash[String,Data]) (defaults to: {})

    A hash that will be used to create ‘sendmail::mailertable::entry` resources. This class can be used to create mailertable entries defined in hiera. The hiera hash should look like this:

    “‘yaml sendmail::mailertable::entries:

    '.example.com':
      value: 'smtp:relay.example.com'
    'www.example.org':
      value: 'relay:relay.example.com'
    '.example.net':
      value: 'error:5.7.0:550 mail is not accepted'
    

    “‘



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
# File 'manifests/mailertable.pp', line 43

class sendmail::mailertable (
  Optional[String]  $content = undef,
  Optional[String]  $source  = undef,
  Hash[String,Data] $entries = {},
) {
  if ($content and $source) {
    fail('You cannot specify more than one of content, source, entries')
  }

  if ($content or $source) {
    if !empty($entries) {
      fail('You cannot specify more than one of content, source, entries')
    }

    class { 'sendmail::mailertable::file':
      content => $content,
      source  => $source,
    }
  }
  elsif !empty($entries) {
    $entries.each |$entry,$attributes| {
      sendmail::mailertable::entry { $entry:
        * => $attributes,
      }
    }
  }
}