2

我使用chef-serverchef-client配置。

在主机配置的每次更改(通过引导添加的新主机或删除旧主机)时,我想在每个包含它的主机上重新运行一个配方,配方本身没有变化。

到目前为止,我只是chef-client在 cron 中每 5 分钟运行一次,这不是最好的解决方案。

一般来说,即使我更改了配方,是否chef-client知道它应该重新运行配方?(它是如何知道的,以及识别配方变化可能需要多长时间)

如果我需要在不改变配方本身的情况下重新运行配方,那么正确的方法是什么?

谢谢!

4

2 回答 2

1

这是一个 debian 启动脚本,它将使用 chef 的 -i 和 -s 参数并在系统启动时运行 chef:

https://github.com/opscode/chef/blob/4edd48d5b546542ed566b1b3f491774e9f36065d/distro/debian/etc/init.d/chef-client

于 2014-02-18T04:36:35.833 回答
1

如果我需要在不改变配方本身的情况下重新运行配方,那么正确的方法是什么?

见马克的回应。厨师客户-i 3600 -s 600

一般来说,即使我更改了食谱,厨师客户是否知道它应该重新运行食谱?

不,它不知道。如果您更改并将接收者上传到厨师服务器,它将在下次向厨师服务器询问收敛所需的一组接收者时将该版本(假设没有基于环境的版本覆盖)提供给厨师客户端.

为了满足您的两个用例,最好有一个外部版本控制系统(例如 git)作为您的接收者的真实来源,编写一个 post-commit-hook 来上传接收者的每个新版本到 chef-server,甚至可能有一个 CI 服务器监听签入和协调 chef-client 运行。这里有一些很好的答案:

https://serverfault.com/questions/283470/what-are-the-benefits-of-running-chef-server-instead-of-chef-solo

于 2012-12-27T04:03:56.837 回答