Defined Type: postfix::conffile

Defined in:
manifests/conffile.pp

Overview

Define: postfix::conffile

Adds a postfix configuration file. It is mainly a file resource that also restarts postfix

Parameters

ensure

Ensure parameter for the file resource. Defaults to ‘present’

source

Sets the value of the source parameter for the file

content

Sets the content of the postfix config file Note: This option is alternative to the source one

path

Where to create the file. Defaults to “/etc/postfix/$name”.

mode

The file permissions of the file. Defaults to 0640

options

Hash with options to use in the template

show_diff

Boolean that sets File show_diff parameter

Usage:

postfix::conffile { ‘ldapoptions.cf’:

options            => {
  server_host      => <ldapserver>,
  bind             => 'yes',
  bind_dn          => <bind_dn>,
  bind_pw          => <bind_pw>,
  search_base      => 'dc=example, dc=com',
  query_filter     => 'mail=%s',
  result_attribute => 'uid',
}

}

postfix::conffile { ‘ldapoptions.cf’:

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

}

Parameters:

  • ensure (Enum['present', 'absent', 'directory']) (defaults to: 'present')
  • source (Variant[Array[String], String, Undef]) (defaults to: undef)
  • content (Optional[String]) (defaults to: undef)
  • path (Optional[Stdlib::Absolutepath]) (defaults to: undef)
  • mode (String) (defaults to: '0640')
  • options (Hash) (defaults to: {})
  • show_diff (Boolean) (defaults to: true)


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

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,
  String                                 $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'],
  }

}