几年前我与 Opscode Chef 一起工作,我正在考虑在我的新公司再次使用它 - 但我想知道我与 Chef 的一些问题是否在此期间得到了解决,或者我是否应该期望使用相同的解决方法。
虽然我喜欢 Server 风格的许多功能,但我不喜欢我们的食谱和角色的版本管理与将项目实际添加到厨师服务器分开的事实。在我看来,当有人从文件创建运行列表,然后忽略将这些更改提交给版本控制时,拥有这两个不同的步骤只是在自找麻烦。我最终选择了 chef-solo,运行一个 cron 作业并从我们的存储库中提取更改,然后从指向我们特定 node.json 配置的 shell 脚本运行。这样,将项目放入 Chef 的唯一方法是将它们放入 Git。老实说,这似乎是唯一明智的处理方式:您不对项目使用版本控制,而是将文件 FTP 到生产服务器。
较新版本的 Chef 是否能够仅从您的版本控制存储库中读取配置更新?如果没有,是否有任何工具使用存储库上的提交挂钩来更新 Chef 的配置?有没有人有类似的担忧,你是如何解决的?
我也愿意使用 Puppet(或任何其他基于拉的工具),我只是没有任何经验,所以它不是我的首选。Ansible / 任何基于推送的工具都不起作用。我们在防火墙后面管理机器,有时网络连接不可预测。