傀儡:只允许在特定时段内进行更改?

傀儡:只允许在特定时段内进行更改?

是否可以设置puppet成清单中的更改仅在特定时间内应用,以便我们的服务器最终会在我们决定时发生停机?

谢谢

答案1

我只是想解决这个问题...有几种方法......

  • 使用 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,
   }

}

一个示例 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
  • 有一个Puppet 计划元参数它允许您列出应按类别评估清单的时间。请参阅:https://serverfault.com/a/341865/13325

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

答案2

是的,只需将运行 puppet 的 cronjob 设置为仅在特定时间运行。将 puppet 作为守护进程运行是一个非常糟糕的想法。我们使用服务器的 IP 地址作为散列函数的密钥,将我们的 cronjob 分布在 Puppet 运行的整个时间段内,以避免出现惊群问题。

相关内容