Commit 6232194a authored by Raphaël Pinson's avatar Raphaël Pinson
Browse files

Merge pull request #33 from raphink/dev/refactor

Refactor postfix module
parents 364c2bff 6f078e57
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
fixtures:
  repositories:
    "augeas": "git://github.com/camptocamp/puppet-augeas.git"
    "stdlib": "git://github.com/puppetlabs/puppetlabs-stdlib.git"
  symlinks:
    "postfix": "#{source_dir}"
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ let space_or_eol (sep:regexp) (default:string) =
  del (space_or_eol_re? . sep . space_or_eol_re?) default 

(* View: word *)
let word = store /[A-Za-z0-9@\*.-]+/
let word = store /[A-Za-z0-9@\*.+-]+/

(* View: comma *)
let comma = space_or_eol "," ", "
+5 −0
Original line number Diff line number Diff line
#class postfix::augeas
#  This class provides the augeas lenses used by the postfix class
#
class postfix::augeas {
  augeas::lens {'postfix_transport':
    ensure      => present,
    lens_source => 'puppet:///modules/postfix/lenses/postfix_transport.aug',
    test_source => 'puppet:///modules/postfix/lenses/test_postfix_transport.aug',
    stock_since => '1.0.0',
  }
  augeas::lens {'postfix_virtual':
    ensure      => present,
    lens_source => 'puppet:///modules/postfix/lenses/postfix_virtual.aug',
    test_source => 'puppet:///modules/postfix/lenses/test_postfix_virtual.aug',
    stock_since => '1.0.0',
  }
}
+17 −18
Original line number Diff line number Diff line
@@ -4,31 +4,30 @@
# Uses the "postconf" command to add/alter/remove options in postfix main
# configuation file (/etc/postfix/main.cf).
#
#Parameters:
#- *name*: name of the parameter.
#- *ensure*: present/absent. defaults to present.
#- *value*: value of the parameter.
# === Parameters
#
#Requires:
#- Class["postfix"]
# [*name*]   - name of the parameter.
# [*ensure*] - present/absent. defaults to present.
# [*value*]  - value of the parameter.
#
#Example usage:
# === Requires
#
#  node "toto.example.com" {
# - Class["postfix"]
#
#    include postfix
# === Examples
#
#    postfix::config {
#      "smtp_use_tls"            => "yes";
#      "smtp_sasl_auth_enable"   => "yes";
#      "smtp_sasl_password_maps" => "hash:/etc/postfix/my_sasl_passwords";
#      "relayhost"               => "[mail.example.com]:587";
#    }
#   postfix::config { 'smtp_use_tls':
#     ensure => 'present',
#     value  => 'yes',
#   }
#
#
define postfix::config ($value, $ensure = present) {

  validate_string($value)
  validate_string($ensure)
  validate_re($ensure, ['present', 'absent'],
    "\$ensure must be either 'present' or 'absent', got '${ensure}'")

  Augeas {
    incl    => '/etc/postfix/main.cf',
    lens    => 'Postfix_Main.lns',
@@ -39,12 +38,12 @@ define postfix::config ($value, $ensure = present) {
  case $ensure {
    present: {
      augeas { "set postfix '${name}' to '${value}'":
        changes => "set $name '$value'",
        changes => "set ${name} '${value}'",
      }
    }
    absent: {
      augeas { "rm postfix '${name}'":
        changes => "rm $name",
        changes => "rm ${name}",
      }
    }
    default: {}

manifests/files.pp

0 → 100644
+92 −0
Original line number Diff line number Diff line
class postfix::files {
  include postfix::params

  $alias_maps          = $postfix::all_alias_maps
  $inet_interfaces     = $postfix::inet_interfaces
  $mail_user           = $postfix::mail_user
  $master_smtp         = $postfix::master_smtp
  $master_smtps        = $postfix::master_smtps
  $master_submission   = $postfix::master_submission
  $myorigin            = $postfix::myorigin
  $root_mail_recipient = $postfix::root_mail_recipient
  $smtp_listen         = $postfix::_smtp_listen
  $use_amavisd         = $postfix::use_amavisd
  $use_dovecot_lda     = $postfix::use_dovecot_lda
  $use_schleuder       = $postfix::use_schleuder
  $use_sympa           = $postfix::use_sympa

  file { '/etc/mailname':
    ensure  => 'file',
    content => "${::fqdn}\n",
    seltype => $postfix::params::seltype,
  }

  # Aliases
  file { '/etc/aliases':
    ensure  => 'file',
    content => "# file managed by puppet\n",
    notify  => Exec['newaliases'],
    replace => false,
    seltype => $postfix::params::seltype,
  }

  # Aliases
  exec { 'newaliases':
    command     => '/usr/bin/newaliases',
    refreshonly => true,
    subscribe   => File['/etc/aliases'],
  }

  # Config files
  if $postfix::mastercf_source {
    $mastercf_content = undef
  } else {
    $mastercf_content = template(
        $postfix::params::master_os_template,
        'postfix/master.cf.common.erb'
      )
  }

  file { '/etc/postfix/master.cf':
    ensure  => 'file',
    content => $mastercf_content,
    group   => 'root',
    mode    => '0644',
    owner   => 'root',
    seltype => $postfix::params::seltype,
    source  => $postfix::mastercf_source,
  }

  # Config files
  file { '/etc/postfix/main.cf':
    ensure  => 'file',
    group   => 'root',
    mode    => '0644',
    owner   => 'root',
    replace => false,
    seltype => $postfix::params::seltype,
    source  => $postfix::maincf_source,
  }

  ::postfix::config {
    'alias_maps':       value => $alias_maps;
    'inet_interfaces':  value => $inet_interfaces;
    'myorigin':         value => $myorigin;
  }

  case $::osfamily {
    'RedHat': {
      ::postfix::config {
        'mailq_path':       value => '/usr/bin/mailq.postfix';
        'newaliases_path':  value => '/usr/bin/newaliases.postfix';
        'sendmail_path':    value => '/usr/sbin/sendmail.postfix';
      }
    }
    default: {}
  }

  mailalias {'root':
    recipient => $root_mail_recipient,
    notify    => Exec['newaliases'],
  }
}
Loading