2017-03-08 120 views
0

我正在使用berkshelf处理我的食谱依赖关系。为了上传我的服务器上我的食谱:处理食谱

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

ERROR: Attempt to use relative path 'berk' when current directory is outside the repository path. ERROR: Current working directory is 'D:/projects/living/vagrant/production/berk/berk'.

我怎么能处理呢?

+0

用'--force'命令是否是最好的选择? :D – StephenKing

+0

使用'knife cookbook delete'从主厨服务器上删除食谱。 – StephenKing

回答

0

使用强制模式有效地禁用冻结上传的保护,这是不推荐的,或者我们不会在Berkshelf中将其设置为默认值。冻结的食谱意味着未来上传到相同的版本号将被阻止,确保上传的食谱内容不会从你的下面更改。在Test Kitchen之前的恶劣日子,在测试食谱时,必须上传到开发或分级厨师服务器是非常常见的,所以我们不希望为了简单而每次都要求版本颠簸。冻结模式旨在用于“真正的”上传,这通常是Berks正在做的。

正如StephenKing指出的,knife cookbook delete是删除食谱的正确方法,但您应该很少这么做。你提到的错误是因为你的刀子配置对你而言很怪异。

+0

谢谢@coderanger。为什么我需要使用'berkshelf'来上传食谱,我需要用'knife'去除它? – Jordi

+0

我已经能够从服务器上删除我的食谱。不过,我也想删除它的所有依赖关系......任何想法? – Jordi

+0

因为berks不是一个通用的API工具,并且递归删除不够常用,所以它们不需要专门的工具。 – coderanger

0

要管理我的食谱的版本,我使用了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,您将增加版本。