Skip to content
Snippets Groups Projects
Select Git revision
  • 3bffbaedec9568a330524ecb629b61fd9c410230
  • main default
  • detached3
  • detached2
  • modernisation-gestion-donnees
  • detached
  • 1.5.0
  • 1.4.3
  • 1.4.2
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.2
  • 1.1.1
  • 1.1.0
  • 1.0.6
  • 1.0.5
  • 1.0.4
  • 1.0.3
  • 1.0.2
  • 1.0.1
  • 1.0.0
  • 0.9.10
  • 0.9.9
  • 0.9.8
26 results

UpdateCommand.php

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    map.pp 2.25 KiB
    # == Definition: postfix::map
    #
    # Creates postfix "map" files. It will create "${name}", and then build
    # "${name}.db" using the "postmap" command. The map file can then be referred to
    # using postfix::config.
    #
    # === Parameters
    #
    # [*name*]   - the name of the map file.
    # [*ensure*] - present/absent, defaults to present.
    # [*source*] - file source.
    # [*type*]   - type of the postfix map (valid values are cidr, pcre, hash...)
    # [*path*]   - path of the created file. By default it is placed in the
    #              postfix directory
    #
    # === Requires
    #
    # - Class["postfix"]
    #
    # === Examples
    #
    #   postfix::map { '/etc/postfix/virtual':
    #     ensure => present,
    #   }
    #   postfix::config { 'virtual_alias_maps':
    #     value => 'hash:/etc/postfix/virtual',
    #   }
    #
    define postfix::map (
      Enum['present', 'absent']             $ensure = 'present',
      Variant[Array[String], String, Undef] $source = undef,
      Variant[Array[String], String, Undef] $content = undef,
      String                                $type = 'hash',
      Stdlib::Absolutepath                  $path = "/etc/postfix/${name}",
    ) {
      include ::postfix::params
    
      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'
      }
    
      # CIDR and PCRE maps need a postfix reload, but not a postmap
      if $type =~ /^(cidr|pcre)$/ {
        $manage_notify = Service['postfix']
      } else {
        $manage_notify = Exec["generate ${name}.db"]
      }
    
      file { "postfix map ${name}":
        ensure  => $ensure,
        path    => $path,
        source  => $source,
        content => $content,
        owner   => 'root',
        group   => 'postfix',
        mode    => '0644',
        require => Package['postfix'],
        notify  => $manage_notify,
      }
    
      if $type !~ /^(cidr|pcre)$/ {
        file {"postfix map ${name}.db":
          ensure  => $ensure,
          path    => "${path}.db",
          owner   => 'root',
          group   => 'postfix',
          mode    => '0644',
          require => [File["postfix map ${name}"], Exec["generate ${name}.db"]],
        }
      }
    
      exec {"generate ${name}.db":
        command     => "postmap ${path}",
        path        => $::path,
        #creates    => "${name}.db", # this prevents postmap from being run !
        refreshonly => true,
      }
    }