显然,Chef 最棒的一点就是可以通过菜谱,尤其是通过包装菜谱方法重新使用经过验证的组件。
但是,如何选择要包装的食谱呢?有些例子浪费了我很多时间。
一份包含配置 erb 的食谱,该 erb 带有硬编码的过时(而不仅仅是弃用)标志。服务拒绝配置文件。注意:据我所知,除非您克隆并维护整个内容,否则包装更正的模板 erb 并非易事。
一本检查 Ubuntu 版本是否高于 9.0.4 的手册,似乎对该版本的操作不做任何操作,并且引用了过时的 /etc/event.d/ 目录。
cookbook 与 runit 或 bluepill 等流程监控工具耦合性很强。如果您首选的工具不在列表中,而您又无法进行调整,那么这也会造成麻烦。
到目前为止,我一直倾向于使用supermarket.chef.io 的烹饪书,这些烹饪书大多都管用。不过,我想要的服务的烹饪书似乎无人维护,而且可供采用。
一些想法:
检查最近的 github 提交/最后更新时间。但是,如果它正常工作怎么办?那么它不应该被更新。
星星。但是,如果星星都是很久以前发行的,而食谱是最新的,该怎么办?
检查未关闭的 github 问题。可能会更好。
提前查看配方和属性。不过,如果您已经知道目标软件的设置,效果会更好。
查看贡献者的数量并评估它是否是一个快速的附带项目或者是否可能保持维护。
运行它并查看错误类型。我上面挑选的那些错误在我看来就像没有跟踪操作系统或它们所管理的程序的最近更新的食谱,但没有基于属性的灵活性来允许它。
有没有评级网站?谷歌搜索后我找到了美食烹饪网站
抱歉,我意识到这个问题本质上很宽泛。但可以肯定的是,如果重复使用是 Chef 生态系统的目标,那么明智地选择最好的社区食谱进行包装是最终用户成功的关键因素。除了使用 Chef 本身的任何技术技能之外。
你是怎么做到的?你的启发法是什么?
Github 上有大量模仿的食谱,这让我认为这是不是一个已解决的问题。
答案1
就我个人而言,我首先会查看超市的下载量,然后直接查看 github 页面。如果源代码不在公共版本控制中,我就会继续。
当浏览代码时,我只是快速浏览了一下并问自己以下问题:
a)这本食谱只做一件事吗?
如果它是一本安装应用程序的手册,那这就是我想要它做的全部。我不希望它扰乱系统的其余部分。(例如:触摸物理磁盘、ebs 卷等...)
b)如果我使用这个食谱,它是否可以扩展
如果它是公开资源的库手册,我希望这些资源能够对其使用的任何子资源提供足够的控制。我无法忍受为狭窄用例创建模板的资源,但不允许我充分修改模板源或模板变量。
如果这是一本基于菜谱的食谱,那么我希望大多数相关部分都可以通过属性进行配置。我并不介意包装食谱,但如果我可以设置一些属性,而不是花太多精力包装其他资源,我会更高兴。