【问题标题】:Handling cookbooks处理食谱
【发布时间】:2017-07-28 16:49:50
【问题描述】:

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

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

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

我该怎么办?

【问题讨论】:

  • --force 的某些命令曾经是最佳选择吗? :D
  • 使用 knife cookbook delete 从 Chef 服务器中删除食谱。

标签: chef-infra berkshelf


【解决方案1】:

使用强制模式可以有效地禁用对冻结上传的保护,不建议这样做,否则我们不会将其设为 Berkshelf 中的默认设置。冻结的食谱意味着将阻止以后上传到相同的版本号,确保上传的食谱的内容不会因您而改变。在测试厨房之前的糟糕日子里,在测试食谱时必须上传到开发或登台的厨师服务器是很常见的,所以为了简单起见,我们不希望每次都需要版本提升。冻结模式适用于“真实”上传,这通常是 Berks 所做的。

正如 StephenKing 所指出的,knife cookbook delete 是删除食谱的正确方法,但您应该很少这样做。您提到的错误是因为您的刀配置对您很不利。

【讨论】:

  • 感谢@coderanger。为什么我需要使用berkshelf 来上传食谱而我需要使用knife 来删除它?
  • 我已经能够从服务器中删除我的食谱。不过,我也想删除它的所有依赖项......有什么想法吗?
  • 因为 berks 不是通用 API 工具,而且递归删除还不够普遍,无法为它们提供专用工具。
【解决方案2】:

为了管理我的食谱版本,我使用了用 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 并且你将获得递增的版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多