Chef - git-只有食谱/角色管理?

Chef - git-only cookbook / role management?

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

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

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

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

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

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