Defined Type: postfix::conffile

Defined in:
manifests/conffile.pp

Summary

Manage a Postfix configuration file

Overview

Manages Postfix configuration files. With it, you could create configuration files (other than, main.cf, master.cf, etc.) restarting Postfix when necessary.

Examples:

Simple config file with module source

postfix::conffile { 'ldapoptions.cf':
  source => 'puppet:///modules/postfix/ldapoptions.cf',
}

With template options

postfix::conffile { 'ldapoptions.cf':
  options            => {
    server_host      => ldap.mydomain.com,
    bind             => 'yes',
    bind_dn          => 'cn=admin,dc=mydomain,dc=com',
    bind_pw          => 'password',
    search_base      => 'dc=example, dc=com',
    query_filter     => 'mail=%s',
    result_attribute => 'uid',
  }
}

Parameters:

  • ensure (Enum['present', 'absent', 'directory']) (defaults to: 'present')

    A string whose valid values are present, absent or directory.

  • source (Variant[Array[String], String, Undef]) (defaults to: undef)

    A string with the source of the file. This is the ‘source` parameter of the underlying file resource. Example: `puppet:///modules/postfix/configfile.cf`

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

    The content of the Postfix configuration file. This is an alternative to the ‘source` parameter. If you don’t provide ‘source` neither `content` parameters a default template is used and the content is created with values in the `options` hash.

  • path (Optional[Stdlib::Absolutepath]) (defaults to: undef)

    Where to create the file. If not defined “$postfixpostfix::confdir/$name” will be used as path.

  • mode (Stdlib::Filemode) (defaults to: '0640')

    Permissions of the configuration file. This option is useful if you want to create the file with specific permissions (for example, because you have passwords in it). Example: ‘0640`

  • options (Hash) (defaults to: {})

    Hash with the options used in the default template that is used when neither ‘source` neither `content`parameters are provided.

  • show_diff (Boolean) (defaults to: true)

    Switch to set file show_diff parameter



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

define postfix::conffile (
  Enum['present', 'absent', 'directory'] $ensure    = 'present',
  Variant[Array[String], String, Undef]  $source    = undef,
  Optional[String]                       $content   = undef,
  Optional[Stdlib::Absolutepath]         $path      = undef,
  Stdlib::Filemode                       $mode      = '0640',
  Hash                                   $options   = {},
  Boolean                                $show_diff = true,
) {
  include postfix

  $_path = pick($path, "${postfix::confdir}/${name}")

  if (!defined(Class['postfix'])) {
    fail 'You must define class postfix before using postfix::config!'
  }

  if $source and $content {
    fail 'You must provide either \'source\' or \'content\', not both'
  }

  if !$source and !$content and $ensure == 'present' and empty($options) {
    fail 'You must provide \'options\' hash parameter if you don\'t provide \'source\' neither \'content\''
  }

  $manage_file_source = $source ? {
    ''        => undef,
    default   => $source,
  }

  $manage_content = $content ? {
    undef   => $source ? {
      undef   => template('postfix/conffile.erb'),
      default => undef,
    },
    default => $content,
  }

  file { "postfix conffile ${name}":
    ensure    => $ensure,
    path      => $_path,
    mode      => $mode,
    owner     => 'root',
    group     => 'postfix',
    seltype   => $postfix::params::seltype,
    require   => Package['postfix'],
    source    => $source,
    content   => $manage_content,
    show_diff => $show_diff,
    notify    => Service['postfix'],
  }
}