概括:

概括:

概括:

我在使用“从文件中获取刀数据包”时遇到了问题,其中刀无法识别从远程 git repo 中拉下的 .json 数据包文件。

背景:

我目前正在尝试从 chef-solo 使用过渡到 chef 服务器,同时使用来自我们远程 git repo 的食谱、数据包和其他 chef 信息。

我目前已下载了我们的 git repo 副本,并在 knife.rb 中设置了食谱路径和数据包路径。我还加载了食谱,进行了调整等。

细节:

当尝试通过执行“knife data bag add from file FOLDER FILE”来加载我们的 .json 数据包时,它看起来似乎有效,直到我执行“knife data bag list”时,它才显示为空白。所以我决定尝试在最后添加编辑选项,看看正在加载什么(如果是的话)。这是我收到的错误:

knife data bag from file local_settings test.json -e nano
ERROR: Could not find or open file 'test.json' in current directory or in 'data_bags/local_settings/test.json'

数据包文件确实存在,位于经过测试、可正常工作的 json 文件中的正确位置。我有时也会收到一条错误消息,提示“无法打开数据包“local_settings”。

我显然希望将数据包路径保存在适当的 git repo 文件夹中,以便能够在更集中的位置(我们的 git repo,而不是 chef 服务器)跟踪更改。

任何解决方案、建议或正确的方向的指示都将受到赞赏。

答案1

我认为使用-e nano选项是无效的knife data bag from file(尽管命令行帮助暗示不是这样),但应该忽略它。该错误意味着 knife 找不到您指定的 json 文件。当您说该项目位于正确位置时,它到底在哪里?请注意,knife 将查找相对于您当前目录的位置,而不是您的 chef-repo。

修复该问题后,您将遇到另一个问题 - 您需要先创建数据包,然后才能向其中添加项目。knife data bag list创建后,它应立即显示在输出中:

 $ knife data bag create local_settings
Created data_bag[local_settings]
 $ knife data bag list
  local_settings

“knife 数据包”的文档可以在这里找到:http://wiki.opscode.com/display/chef/Managing+Data+Bags+With+Knife

答案2

我照做了knife data bag list,但结果一片空白。

这意味着数据包local_settings尚未创建。

因此,应该创建它:

$> knife data bag create local_settings
Created data_bag[local_settings]

然后它应该出现在服务器的数据包列表中:

$> knife data bag list
  local_settings

然后就可以上传{{test.json}}数据包文件了。

此外,这里还有关于实际发生情况的一些很好的解释:[CHEF 维基百科上的链接]

相关内容