有多少食谱版本可以安全地存储在 Chef 服务器上

How many cookbook versions is safe to store on chef server

当我不断将我的食谱的更新版本上传到厨师服务器时,我想知道厨师服务器可以存储的食谱版本数量是否有限制。

这是我应该关心的事情还是 none 问题?磁盘 space 显然不是我在这里担心的。

从 "single responsibility principle point of view".

查看您的问题可能会得到一个不太技术性的答案

我的意思是:在任何好的系统中,每个组件都应该有一个明确的职责。

现在你可以问问自己:你的厨师服务器是否有责任充当源代码管理工具?

我的意思是:有像 git、SVN、.. 这样的工具,它们的存在只是为了允许对文本文件进行 版本 管理。

你想让你的厨师服务员也这样做吗?或者使用不同的基础架构对 "config text files" 进行版本控制是更好的策略吗?!

所以这取决于您的工作流程。 Chef 的生态系统使用了两个版本约束求解器:Chef Server 始终使用 gecode(又名 depsolver),Policyfiles 始终使用 molinillo,Berkshelf 可以根据配置使用其中任何一个。当你遇到几千个浮动的整体版本时,Gecode 可能会开始窒息,但这在很大程度上取决于你对格式良好的依赖版本约束的了解程度。 Molinillo 在这方面要好得多,但这意味着要么使用 berks apply 锁定所有环境,要么使用策略文件(即不要让 Chef Server 尝试 运行 一个针对整个宇宙的约束解决方案) .

我认为这个问题不会有好的答案。我会说你不想围绕这个问题设计你的工作流程,也绝对不想每次上传时都删除食谱。

定期垃圾收集(一年一次或两次)可能是个好主意,但这将在很大程度上取决于您如何构建食谱及其依赖关系以及您 'stress' dep 求解器(gecode或 molinillo)。

如果您没有看到 dep 求解速度变慢,则没有必要这样做。如果您发现 dep 求解速度很慢,那么您应该强烈考虑这样做。

如果您有一个大型网站,其中有数十人为数百本食谱做出贡献,并且您多年来没有对旧的、过时的食谱版本进行垃圾收集,并且您的一些热门食谱存储了数百或数千个版本在服务器上……想一想可能会有用。

如果您刚刚开始,而且主要是您的团队和几十本食谱,最多只有几十个版本,那么它不太可能成为问题。

如果您介于两者之间...也许?

已添加(2016 年 10 月 8 日):另一个需要考虑的问题是,对于许多食谱版本,有时 depsolver 变得 "overly clever" 在选择您忘记但允许它满足的非常旧的食谱版本时它的所有约束。我最近 运行 使用两本具有冲突约束的食谱(dovecot 想要 ohai ~> 3.0 而 chef_nginx 想要 ohai ~> 4.0)来解决这个问题 depsolver 帮助将我的包装食谱降级为一个太旧的版本,以至于我使用 uw-imapd 而不是 dovecot,它从 dovecot 中删除了 ohai 约束并使 depsolver 快乐,同时让我很伤心,因为 Ubuntu 甚至还没有发布 uw-imapd年了。解决这个问题的一种方法是更加明确地将食谱限制为带有 pin 的最新版本。不过,您也可以简单地将那些未使用的版本从您的 chef-server 中转储出来,这样它们就无法用于 depsolving。