如何让puppet在目录运行结束时启动所有服务?

如何让puppet在目录运行结束时启动所有服务?

尤其是在从头开始设置全新服务器时,puppet 倾向于在满足所有依赖关系后立即启动依赖服务。这有时会导致服务过早不必要地启动,而其他软件包(可能不依赖于服务)的设置仍在运行。

是否有任何一行定义或配方可以自动使所有服务在整个目录运行结束时启动/刷新?我试图弄清楚运行阶段可以被利用,但据我理解,这要求所有服务定义都明确定义到“最后”阶段。


更新 1:我的问题的一些背景。在节点的初始设置期间,Puppet 工作得相当密集,因此会保留一个相当小的虚拟机(在我的情况下是开发机器上的 Vagrant)的资源。当设置阶段进行到某些服务(在我的情况下是后台工作程序)准备就绪时,Puppet 会启动它们,工作程序会开始从队列中接收作业。这种工作负载会减慢仍在进行的 Puppet 节点设置过程,并且 Puppet 会减慢工作程序的速度,直到整个设置完成并且机器处于稳定状态。

这就是为什么我开始认为让 Puppet 在节点上的所有服务启动之前完成初始设置会是个好主意,以及为什么我想知道是否有任何简单的方法可以用 Puppet 做到这一点。

答案1

实现此目的的一种方法是

  1. 按照上面提到的方式进行订阅。
  2. 使用阶段元参数

您可以通过以下方式将其作为默认值分配给服务资源类型

Service { stage => last }

如果您在 nodes.pp 中定义它,它将应用于所有节点,或者您可以为每个节点定义它。

答案2

我建议不要进行全局重启。相反,使用 puppet 依赖项。

就像是:

service { 'first':
      ensure    => running,
      enable    => true,
    }

service { 'second':
      ensure    => running,
      enable    => true,
      subscribe => Service['first']
}

答案3

你不知道。

这完全不是 puppet 应该做的事情,尽管你可能想出一种方法来实现它,但这根本不是一个好主意。如果你只想让服务不减慢 puppet 的速度(我也觉得这很落后,我更希望反过来),为什么不教你的服务在 puppet 运行时放松呢?

相关内容