Как перенастроить постфикс с помощью марионетки?

Я использую несколько виртуальных машин (ВМ) Ubuntu, которые используют один и тот же сервер ретрансляции почты. Виртуальными машинами управляет puppet. Я создал простой модуль для установки и настройки postfix как «спутниковой системы» на всех виртуальных машинах. См. файл манифеста модуля ниже. Модуль вызывается из узловых блоков следующим образом:

node "mynode.com" {
  class { 'postfix_satellite': mailname => 'mydomain.com', relayhost => 'myrelay.com' }
}

Проблема в том, что это решение устанавливает и настраивает постфикс при первом запуске, но не перенастраивает постфикс, если шаблон для файла preseed изменен. Установлен только файл preseed, и мне нужно запустить dpkg-reconfigure -f noninteractive postfix вручную. Любая идея приветствуется.

# Puppet module: postfix_satellite
#

class postfix_satellite ( $mailname, $relayhost ) {

  case $operatingsystem {
    ubuntu:  { }
    default: { fail("postfix_satellite: unsupported OS: ${operatingsystem}") }
  }

  $preseed_dir      = '/var/local/preseed'
  $preseed_file = "postfix.preseed"

  # -- Packages

  package { 'postfix':
    ensure          => present,
    responsefile    => "${preseed_dir}/${preseed_file}",
    require                 => File["${preseed_dir}/${preseed_file}"],
  }

  package { 'mailutils':
    ensure  => present,
    require => Package['postfix'],
  }

  # -- Service      

  service { 'postfix':
    ensure          => running,
    enable          => true,
    hasstatus       => true,
    hasrestart      => true,
    require => Package['postfix'],
  }

  file { $preseed_dir:
    ensure          => directory,
    owner           => root,
    group           => root,
    mode            => 755,
  }

  file { "${preseed_dir}/${preseed_file}":
    ensure  => present,
    owner   => root,
    group   => root,
    mode    => 644,
    content => template("postfix_satellite/${preseed_file}.erb"),
  }
}

person Tibor Nagy    schedule 29.12.2014    source источник


Ответы (1)


Если вы настаиваете на управлении postfix через preseed-файл пакета, вы можете использовать метод кувалды.

exec { 'apt-get install --reinstall postfix':
    refreshonly => true,
    subscribe   => File["${preseed_dir}/${preseed_file}"],
    path        => '/bin:/usr/bin'
}

Однако на вашем месте я бы поискал существующий модуль для активного управления postfix даже после установки.

person Felix Frank    schedule 29.12.2014