使用chef更新节点上文件的最佳方法是什么?

时间:2016-01-28 10:54:03

标签: chef chef-recipe

我的厨师食谱中有一个文件,在某个节点上配有厨师。我希望如果文件将被修改,那么这将使用chef自动更改已配置的节点。

我的方法是, 我制作一个食谱并将我的文件放在模板文件夹中,并将此配方放入节点的运行列表中。我也是cron在节点上安排的厨师 - 客户端。 所以现在当这些文件更新并且配方上传到服务器上时,所有节点上的文件都会更新。 什么是更有效地做到这一点的另一种方法。

没有cron可以做到这一点。

EG。如果文件将在食谱中修改,厨师服务器将执行此操作。

2 个答案:

答案 0 :(得分:0)

这取决于 - 一如既往。

  • 您可以使用remote_file资源从远程位置下载文件(例如通过HTTP)。这样,如果您在源服务器上替换更新的文件,厨师可以自动部署更新的文件。

  • 您可以使用gitdeploy资源从git存储库部署文件。这样,您只需更新git repo,厨师将使用新内容更新节点。

但无论如何,厨师 - 客户只会在厨师运行期间进行更改。你可以通过cron或run chef作为服务来触发它们。为了触发厨师 - 客户端自动运行,您可以通过SSH启动厨师 - 客户端(例如,由Jenkins服务器自动启动),或者您可以尝试Chef's push jobs

答案 1 :(得分:0)

你已经按照正确的方式做了。按照设计,Chef Server不会对节点执行或启动任何更改。它只是存储食谱,节点属性等的存储库。

定期运行厨师 - 客户是正确的方法。您可以使用cron或以守护进程模式(chef-client -d)运行chef-client作为服务来执行此操作。

查看chef-client cookbook