Ubuntu 如何使用puppet重新配置后缀?
我正在使用一组ubuntu虚拟机(VM),它们使用相同的邮件中继服务器。虚拟机由puppet管理。我创建了一个简单的模块,用于在所有虚拟机上安装和配置postfix作为“卫星系统”。请参阅下面模块的清单文件。从节点块调用模块,如下所示:Ubuntu 如何使用puppet重新配置后缀?,ubuntu,puppet,postfix-mta,dpkg,Ubuntu,Puppet,Postfix Mta,Dpkg,我正在使用一组ubuntu虚拟机(VM),它们使用相同的邮件中继服务器。虚拟机由puppet管理。我创建了一个简单的模块,用于在所有虚拟机上安装和配置postfix作为“卫星系统”。请参阅下面模块的清单文件。从节点块调用模块,如下所示: node "mynode.com" { class { 'postfix_satellite': mailname => 'mydomain.com', relayhost => 'myrelay.com' } } 问题在于,此解决方案在第一次
node "mynode.com" {
class { 'postfix_satellite': mailname => 'mydomain.com', relayhost => 'myrelay.com' }
}
问题在于,此解决方案在第一次运行时安装和配置后缀,但如果已保存文件的模板发生更改,则不会重新配置后缀。只安装了预置文件,我必须手动运行dpkg-reconfigure-f非交互式后缀。任何想法都欢迎
# 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"),
}
}
如果您坚持通过包呈现的文件来管理postfix,那么可以使用大锤方法
exec { 'apt-get install --reinstall postfix':
refreshonly => true,
subscribe => File["${preseed_dir}/${preseed_file}"],
path => '/bin:/usr/bin'
}
不过,如果我是你的话,我会寻找一个即使在安装后也能主动管理后缀的方法