【问题标题】:chef automatically update configuration厨师自动更新配置
【发布时间】:2012-12-26 08:13:52
【问题描述】:

我使用chef-serverchef-client 配置。

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

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

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

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

谢谢!

【问题讨论】:

    标签: deployment chef-infra


    【解决方案1】:

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

    查看马克的回复。 chef-client -i 3600 -s 600

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】: