厨师自动更新配置

时间:2012-12-26 08:13:53

标签: deployment chef

我使用chef-serverchef-client配置。

我希望在每个包含主机配置的主机上重新运行一个配方(通过bootstrapping添加新主机或删除旧主机),配方本身没有任何变化。

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

  

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

见Mark的回应。 chef-client -i 3600 -s 600

  

一般来说,即使我改变配方,厨师 - 客户也知道这一点   应该重新运行食谱吗?

没有。它不知道。如果您将收件人更改并刀具上传到厨师服务器,它将在下次向厨师服务器询问收集所需的收件人集时向厨师 - 客户提供该版本(假设没有基于环境的版本覆盖)

为了满足您的两种使用情况,最好有一个外部版本控制系统(例如git)作为收件人的真实来源,编写一个post-commit-hook,用于上传每个新版本收件人到厨师服务器,甚至可能有一个CI服务器听取签到和协调厨师 - 客户端运行。这里有一些好的答案:

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

答案 1 :(得分:1)

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

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