【问题标题】:better way to reload chef cookbook after updating it更新后重新加载厨师食谱的更好方法
【发布时间】:2014-11-09 04:17:26
【问题描述】:

每次我对我正在编写的食谱进行更改(它是提供者的一个分支)以使其进入我的流浪运行时,我必须:

  1. 删除Berksfile.lock
  2. 删除.berskhelf文件夹
  3. 运行vagrant provision 获取新文件(但出错)
  4. 运行vagrant reload 让它重新挂载共享文件夹(并修复之前的错误)
  5. 运行 vagrant provision 以实际运行我的食谱,看看会发生什么

必须有更好的方法,有人可以告诉我吗?还是我唯一的解决方案是制作一个批处理文件来完成所有这些工作?

编辑:我刚刚制作了一个批处理脚本来完成所有这些,但我仍然觉得我做错了所以有人可以回答吗?

批处理脚本:

del -f .\Berksfile.lock
del -f %HOME%\.berkshelf

vagrant provision
vagrant reload
vagrant provision

【问题讨论】:

  • 你为什么要这么做?只需让它在厨师的控制下,用刀上传更改到你的食谱,然后用厨师客户端下载更改
  • 我在本地运行它,我将我的食谱推送到 github 并在安装时从那里获取它,问题是如果没有所有这些步骤,厨师拒绝安装更新版本。
  • 如果你在本地运行它,你应该仍然推出cookbook,你可以将它作为dev-version上传,然后用knife下载并安装它。
  • 您甚至不必在开发过程中将其推送到某个地方。只是一个vagrant provision。你可能想试试vagrant-berkshelf 插件。

标签: chef-infra


【解决方案1】:

假设您使用的是 path 源说明符(尽管从您的 cmets 看来,您可能正在使用 gitgithub,这确实是非最佳的)您需要做的就是重新-运行供应步骤。通常,您永远不必删除锁定文件(更改source 行时例外),并且您永远不应该删除.berkshelf 文件夹,这相当于删除$GEM_HOME 以强制升级。如果您在请求重新加载时遇到问题,请仔细检查您是否拥有最新的 vagrant-berkshelf 插件。

【讨论】:

    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多