人偶:只允许在特定时间内更改?

Ind*_*ial 7 puppet puppetmaster

是否有可能以puppet仅在特定时间内应用清单更改的方式进行设置,以便在我们决定时会发生服务器上的任何最终停机时间?

谢谢

eww*_*ite 9

我只需要解决这个问题......有几种方法......

  • 使用 cron。如果您的操作系统支持 cron.d 条目,请通过 Puppet 分发 puppet.cron 文件。随附的清单将确保 Puppet 守护进程关闭。如果您有很多服务器,请使用 bash 函数来随机化 cron 拉取时间以减少主服务器上的负载。另请参阅有关此主题Puppet wiki

我使用的模块:

class puppet_cron {

   file { '/etc/cron.d/puppet.cron':
     ensure   => file,
     owner    => root,
     group    => root,
     mode     => 644,
     source   => "puppet:///modules/puppet_cron/puppet.cron",
   }

   service { 'puppet':
     ensure    => stopped,
     enable    => false,
   }

}
Run Code Online (Sandbox Code Playgroud)

puppet.cron 示例:

# puppet.cron
#
# Run puppet in one-time mode during daily downtime window.
# 

# Puppet check window for Monday through Thursday
*/15 16-19 * * 1-5 root exec /usr/sbin/puppetd --no-daemonize -o
Run Code Online (Sandbox Code Playgroud)
  • 有一个Puppet schedule 元参数,它允许您列出应该在每个类的基础上评估清单的时间。参见:https : //serverfault.com/a/341865/13325

  • 我最近读了一本书,建议使用 Git 作为清单分发方法,以扩展和减少主服务器上的负载。这意味着您可以更精细地控制日程安排。


wom*_*ble 5

是的,只需将运行 puppet 的 cronjob 设置为仅在特定时间运行即可。将 puppet 作为守护进程运行是一个非常糟糕的主意。我们使用服务器的 IP 地址作为哈希函数的关键,在 Puppet 运行的整个时间段内展开我们的 cronjobs,以避免雷鸣般的羊群问题。