Skip to content
Snippets Groups Projects
Select Git revision
  • cf09fe22569eeb6e6ae12f619a61e5246f9b5225
  • master default protected
  • main
  • update_github_actions
  • 144_rocky8_support
  • 195-update-pdk-to-300
  • 144-rocky8
  • add_test_github_test_workflow
  • pdk_2.4.0
  • fix_unclosed_let_block_in_defines_client_spec
  • validation_fixes
  • freeradius_3_0_21_config_updates
  • data_types
  • PrepareBuster
  • travis
  • 4.0.1
  • 4.0.0
  • 3.9.2
  • 3.9.1
  • 3.9.0
  • 3.8.2
  • 3.8.1
  • 3.8.0
  • 3.7.0
  • 3.6.0
  • 3.5.0
  • 3.4.3
  • 3.4.2
  • 3.4.1
  • 3.4.0
  • 3.3.0
  • 3.2.0
  • 3.1.0
  • 3.0.0
  • 2.3.1
35 results

ippool.pp

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,
      }
    }