0

几年前我与 Opscode Chef 一起工作,我正在考虑在我的新公司再次使用它 - 但我想知道我与 Chef 的一些问题是否在此期间得到了解决,或者我是否应该期望使用相同的解决方法。

虽然我喜欢 Server 风格的许多功能,但我不喜欢我们的食谱和角色的版本管理与将项目实际添加到厨师服务器分开的事实。在我看来,当有人从文件创建运行列表,然后忽略将这些更改提交给版本控制时,拥有这两个不同的步骤只是在自找麻烦。我最终选择了 chef-solo,运行一个 cron 作业并从我们的存储库中提取更改,然后从指向我们特定 node.json 配置的 shell 脚本运行。这样,将项目放入 Chef 的唯一方法是将它们放入 Git。老实说,这似乎是唯一明智的处理方式:您不对项目使用版本控制,而是将文件 FTP 到生产服务器。

较新版本的 Chef 是否能够仅从您的版本控制存储库中读取配置更新?如果没有,是否有任何工具使用存储库上的提交挂钩来更新 Chef 的配置?有没有人有类似的担忧,你是如何解决的?

我也愿意使用 Puppet(或任何其他基于拉的工具),我只是没有任何经验,所以它不是我的首选。Ansible / 任何基于推送的工具都不起作用。我们在防火墙后面管理机器,有时网络连接不可预测。

4

2 回答 2

1

看看chef-guard。它是一个模仿厨师 api 的中间层工具,但会拦截你的刀命令并将源代码控制拉到混合中。因此,当您上传新的运行列表、食谱、环境或任何东西时,它会确保在将其转发到厨师服务器之前,它处于源代码控制(并在食谱的情况下被标记)。应该做你正在寻找的东西。

于 2015-08-06T13:12:26.037 回答
0

不幸的是,Chef 仍然对任何工作流程没有意见。我会说建议的方法是在某处(例如在 Jenkins 中)实施一个持续交付管道,该管道将上传到主厨服务器。

于 2015-08-05T21:11:47.717 回答