概括:
我在使用“从文件中获取刀数据包”时遇到了问题,其中刀无法识别从远程 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 维基百科上的链接]。