Puppet 忽略部分模板文件

Puppet 忽略部分模板文件

有没有办法忽略模板文件的一部分?

我有一个服务,它有一个配置文件,每次服务启动时,它都会在配置文件中写入启动时间。这会让 puppet 检测到更改,并且由于我让它通知服务,它会重新启动服务。我不希望 puppet 在我刚启动服务后不久就重新启动它。

那么有没有办法让 Puppet 忽略模板文件的一部分?

答案1

我认为这是不可能的,puppet 会计算文件的 md5 来检查文件是否更改。是否可以将开始时间写入另一个文件?

答案2

我的解决方案与 Zoredache 的类似,但略有不同,因为您不需要智能脚本来进行比较。

假设您的配置文件/etc/my_application.conf如下所示:

start_time=<some value set by application on start-up>
option1=VALUE
...

在 puppet 中,将文件添加到 files/ 作为您的配置文件,如下所示:

start_time=DummyValue
option1=VALUE
...

然后,使用清单将文件部署到备用位置,如果存在更改,则触发副本,然后触发服务,如下所示:

file { '/etc/my_application.staging.conf':
  ensure => present,
  source => 'puppet:///modules/my_application/my_application.conf',
  owner  => ...
  notify => Exec['install-my_application.conf'],
}

exec { 'install-my_application.conf':
  refreshonly => true,
  command     => '/bin/cp /etc/my_application.staging.conf /etc/my_application.conf',
  notify      => Service['my_application'],
}

service { 'my_application':
  ...
}

这允许您在新的配置更改时重新启动,但是将不会如果 my_application.conf 在本地被修改,则重新启动服务。这不是完美的解决方案,因为它不能拯救您的本地修改,但希望您可以通过权限和配置文件顶部的明确警告来管理这些修改。

相关内容