处理食谱

时间:2017-03-08 07:59:38

标签: chef berkshelf

我使用berkshelf来处理我的cookbook依赖项。为了在我的服务器上上传我的食谱:

berks upload --force
  1. 这是最好的选择吗?
  2. 我试图删除/删除这个我的cookbook表单服务器。我找不到任何berks remove/delete cookbook命令。我试图使用knife delete cookbook。我收到了下一条消息:
  3.   

    错误:尝试使用相对路径' berk'当前目录在存储库路径之外时。   错误:当前的工作目录是' D:/ projects / living / vagrant / production / berk / berk'。

    我该怎么处理?

2 个答案:

答案 0 :(得分:0)

使用强制模式可以有效地禁用冻结上传的保护,这是不推荐的,或者我们不会将其作为Berkshelf的默认设置。冻结的食谱意味着将来会上传到相同的版本号,以确保上传的食谱内容不会从您的下方更改。在Test Kitchen之前的糟糕时期,在测试cookbook时必须上传到开发人员或暂存Chef Server,因此我们不希望每次都需要版本冲突以简化。冻结模式用于“真实”上传,这通常是Berks正在做的事情。

StephenKing指出,knife cookbook delete是删除cookbook的正确方法,但你应该很少这样做。你提到的错误是因为你的刀具配置很乱。

答案 1 :(得分:0)

要管理我的cookbook版本,我正在使用用bash编写的构建工具来包装knifeberks命令,以便引导和配置节点。部分原因是工具是自动更新食谱版本并将其上传到厨师服务器。

v=`grep version cookbooks/$1/metadata.rb`
v=${v#*version}
v=${v#*\'}
v=${v%*\'}
echo $v
VERSION="${v%.*}.$((${v##*.}+1))"
echo $VERSION
sed "s/$v/$VERSION/g" cookbooks/$1/metadata.rb > output.txt
mv output.txt cookbooks/$1/metadata.rb

然后你传递./version_updater.sh my_cookbook,你会有增加的版本。