Puppet

如何使用 Puppet 管理 puppet.conf?

  • March 31, 2012

我使用 puppet 來管理 linux 伺服器和各種服務。它執行良好,除了puppet服務本身。

我的木偶課是這樣的:

class puppet {
 file { "/etc/puppet/puppet.conf":
   owner  => 0, group  => 0, mode => 0644,
   content => template("${module_name}/puppet.conf.erb"),
 }

 service { "puppet":
   name       => "puppet",
   ensure     => running,
   enable     => true, hasstatus  => true, hasrestart => true,
   require    => File["/etc/puppet/puppet/conf"]
   subscribe  => File["/etc/puppet/puppet/conf"]
 }
}

}

當在 /etc/puppet/puppet.conf 上應用更改時,puppet 注意到它需要重新啟動 puppet 服務,因此會自行崩潰:

Mar 30 17:08:23 XXXX puppet-agent[20172]: (/Stage[main]/Puppet/File[/etc/puppet/puppet.conf]/content) content changed '{md5}eeaf5dfc7d88c8d9c85e6a8cc714d702' to '{md5}ef6ff0e423f4125e24b689980df9f71d'
Mar 30 17:08:23 XXXX puppet-agent[20172]: Caught TERM; calling stop

你知道我如何用 puppet 正確更新 puppet.conf 嗎?

puppet 守護程序將自動通知 puppet.conf 文件的更改,而無需重新啟動。只需刪除subscribe => File["/etc/puppet/puppet.conf"]from service { "puppet" ... },一切仍然有效。

Puppet 也不能​​真正ensure => running為自己服務。但是,使用Mutal Restart和 puppet 確保 cron 正在執行以及確保 puppet 正在執行的 cronjob 將起作用。

一種解決方案是不將 puppet 作為守護程序執行,而是從 cron 呼叫它。這是許多人喜歡的東西,因為對於他們來說,守護程序會消耗大量記憶體。

引用自:https://unix.stackexchange.com/questions/35396