Chef infra 当使用开源厨师烹饪书时,我们应该在Berksfile中克隆或引用吗?

Chef infra 当使用开源厨师烹饪书时,我们应该在Berksfile中克隆或引用吗?,chef-infra,chef-recipe,Chef Infra,Chef Recipe,假设我正在建立我/我的公司烹饪书收藏,我想使用Github提供的很棒的社区烹饪书 我有两个选择 通过在我的Berksfile中添加一行(cookbook'graphite',git:'git://github.com/hw-cookbooks/graphite.git' ) 本地副本-将食谱克隆到my/my_company_cookbooks文件夹中,并保留对其的本地引用 每种策略似乎都有优点和缺点 Github的优点 没有本地副本 由作者轻松完成修复 Github缺点 -我如何确定我的制作

假设我正在建立我/我的公司烹饪书收藏,我想使用Github提供的很棒的社区烹饪书

我有两个选择

  • 通过在我的Berksfile中添加一行(cookbook'graphite',git:'git://github.com/hw-cookbooks/graphite.git' )
  • 本地副本-将食谱克隆到my/my_company_cookbooks文件夹中,并保留对其的本地引用
  • 每种策略似乎都有优点和缺点

    Github的优点

    • 没有本地副本
    • 由作者轻松完成修复
    Github缺点 -我如何确定我的制作食谱完全依赖于我在登台时测试的食谱版本。作者可能会忘记在修改代码的同时修改cookbook版本。然后,未经测试的代码更改将到达我的生产环境

    本地副本价值 我可以100%确定地测试并投入生产,调试更容易

    本地副本

    • 如何获得菜谱的更新副本(再次克隆?)
    • 我会在git回购中进行git回购
    • 通过本地拷贝,其他cookbook开发者可以修改克隆的cookbook,这使得在github上发布新版cookbook时更难同步
    在这方面有什么想法或最佳做法吗

    感谢您引用以下内容:

    GitHub位置

    从1.0.0版开始,您现在可以使用GitHub速记来指定 地点

    食谱“工件”,github:“RiotGames/工件食谱”,标签: “0.9.8”给出了这个例子,来自RiotGames的工件烹饪书 工件cookbook存储库中的组织,标记为0.9.8 将被克隆到Berk货架上

    我假设这消除了github的缺点,那么您现在就没有理由不使用它了。

    引用:

    GitHub位置

    从1.0.0版开始,您现在可以使用GitHub速记来指定 地点

    食谱“工件”,github:“RiotGames/工件食谱”,标签: “0.9.8”给出了这个例子,来自RiotGames的工件烹饪书 工件cookbook存储库中的组织,标记为0.9.8 将被克隆到Berk货架上


    我假设这消除了github的缺点,那么您现在就没有理由不使用它了。

    如果可能,可以从社区“超市”存储库中购买烹饪书。例如,以下内容将检索graphite的最新版本:

    source 'https://supermarket.chef.io'
    
    cookbook "graphite"
    
    文档显示,本食谱由以下人员管理:

    为什么??从源代码存储库中使用cookbooks时,将同一版本的替代副本加载到chef服务器的风险很小


    嗯?请解释

    以以下场景为例:

  • 厨师长开发人员对他的烹饪书做了一个小改动,但没有增加烹饪书的版本号1.1
  • 你把你认为是烹饪书1.1版的东西拉下来
  • chef开发者对cookbook做了更实质性的更改,但仍然没有增加版本号(因为他还没有准备好发布) 您的chef服务器现在有一个版本1.1的副本,与版本控制系统中的最新版本1.1不匹配

    要使问题复杂化,您需要显式运行“berks更新”,然后强制将菜谱重新加载到您的厨师服务器(记住Berkself冻结菜谱),以解决此问题。。。。。这可能会成为一个非常重要的问题,我已经不止一次被它烧焦了(奇怪的是,超市里没有openstack烹饪书)

    在一天结束时,如果您与其他开发团队是直呼其名的,则从源代码处消费:-)如果您渴望稳定性,另一个解决方案是仅从Git标记处消费,这是加载到chef supermarket中的烹饪书所遵循的最佳实践

    厨师超市提供的是厨师烹饪书的发布管理流程。Git应该跟踪cookbook中文件的所有更改。但它无法检测烹饪书何时准备发布。这是开发人员的工作,如果他的行为和遵循合理的工作流程,他将标记他的代码,然后将其推送到某种存储库中供第三方下载。超市提供的就是这种加工和储存设施。这是你的朋友,我强烈建议你使用它:-)


    对你的长篇大论表示歉意!治疗:-)

    在可能的情况下,从社区“超市”储存库中购买食谱。例如,以下内容将检索graphite的最新版本:

    source 'https://supermarket.chef.io'
    
    cookbook "graphite"
    
    文档显示,本食谱由以下人员管理:

    为什么??从源代码存储库中使用cookbooks时,将同一版本的替代副本加载到chef服务器的风险很小


    嗯?请解释

    以以下场景为例:

  • 厨师长开发人员对他的烹饪书做了一个小改动,但没有增加烹饪书的版本号1.1
  • 你把你认为是烹饪书1.1版的东西拉下来
  • chef开发者对cookbook做了更实质性的更改,但仍然没有增加版本号(因为他还没有准备好发布) 您的chef服务器现在有一个版本1.1的副本,与版本控制系统中的最新版本1.1不匹配

    要使问题复杂化,您需要显式运行“berks更新”,然后强制将菜谱重新加载到您的厨师服务器(记住Berkself冻结菜谱),以解决此问题。。。。。这可能会成为一个非常重要的问题,我已经不止一次地被它烧焦了(奇怪的是openstack烹饪书)