Я использую несколько виртуальных машин (ВМ) 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"),
}
}