我们刚刚开始在 QA 环境中使用 Puppet。一直以来,我都认为代理只有在代理节点上重新启动 puppet 或从命令行初始化时才会从主节点提取目录。但是昨天,我正在编写一些 puppet 脚本,并时不时地在我们的测试节点上重新启动 puppet 代理以提取新目录,但不幸的是,我不知道,其他代理也在提取测试目录(这给它们带来了大量不良变化)。没有人在其他节点上重新启动 puppet。我检查了 /var/log/message,发现它从第一天起每 30 分钟从主节点提取一次目录,而无需重新启动 puppet。我现在有以下问题:
1)当 Puppet 服务在 Puppet 代理(即守护进程模式)上运行时,我是否可以正确地假设它每 30 分钟从主服务器中提取一次目录,这是预期的行为?
2)我可以在哪里控制每次拉动之间的时间间隔?
3)有什么办法可以让我随时停止代理上的 Puppet 服务并从 Puppetmaster 推送目录?
答案1
我可以在哪里控制每次拉动之间的时间间隔?
一种方法是停止/禁用服务。通过 cron 或任何你喜欢的方法触发代理。你也可以更新 puppet.conf 并设置运行间隔。cron(或其他任务调度程序)方法的优点是代理不会在后台运行。对于您想要手动触发或刷新周期较长的系统,让守护进程全天候运行可能没有什么意义。
当 Puppet 服务在 Puppet 代理(即守护进程模式)上运行时,我是否可以正确地假设它每 30 分钟从主服务器中提取一次目录,这是预期的行为?
是的,这是正常的,并且是预期的,假设使用默认配置。但是您可以通过多种方式配置 puppet。不需要将其作为守护进程运行,也不需要使用默认间隔。
有没有什么办法可以让我随时停止代理上的 Puppet 服务并从 Puppetmaster 推送目录?
好吧,简单的方法是禁用该服务,然后禁用某个并行 ssh 工具连接到所有主机并发出puppet agent --test
。您也可以设置集体或其他编排工具。有一项功能(已被弃用)是,可以将代理设置为侦听端口,并且可以远程“踢出”以触发目录运行。该功能已被删除,因为大多数人不使用它,并且有几种替代方案可以提供此功能,例如我提到的两种。