我的Chef数据包项目在哪里?

Ste*_*Loo 11 chef-infra knife databags

我试图使用以下命令从chef-repo目录中创建一个Chef数据包:

knife data bag create users deployer
Run Code Online (Sandbox Code Playgroud)

我收到了回复:

Created data_bag[users]
Created data_bag_item[deployer]
Run Code Online (Sandbox Code Playgroud)

但我无法找到数据包用户及其数据包项目.它不在data_bags文件夹中或我可以看到的任何其他位置.如果我做了

knife data bag show users
Run Code Online (Sandbox Code Playgroud)

它会显示数据包项目名称.所以它必须保存在某个地方.文档告诉我数据包应该在chef-repo - > data_bags - > users文件夹中.但我的data_bags文件夹似乎是空的.那么我刚刚创建的数据包在哪里?

set*_*rgo 14

使用Chef,您的本地计算机(称为"工作站")与远程Chef服务器之间存在差异.在您的情况下,该knife命令在远程Chef服务器上创建了数据包.

我理解这可能会产生误导.数据包只不过是包含一个或多个.json文件的文件夹.通常,您可以在工作站上手动生成此结构(使用GUI或终端).

因此,在您的示例中,只需创建您描述的文件夹(chef-repo -> data_bags -> users),然后chef-repo/data_bags/users/deployer.json使用cookbook描述的模式创建文件.

  • 感谢您的解释.我回过头来重读文档,果然它确实说"创建参数用于向服务器添加数据包**".不知怎的,我错过了.无论如何,我不得不说,对于厨师菜鸟来说,这可能有点令人困惑. (3认同)
  • 我们所有的文档都是GitHub上的开源软件.Chef的技术作家很想听到这种反馈(Twitter上的@chefdocs). (2认同)

小智 12

当你使用

刀数据包创建用户部署者

刀在chef-server上创建数据包.它不适用于您当地的厨师工作站.但您可以在本地工作站上下载此数据包.只需使用以下命令即可

刀下载data_bags

此命令将在chef-repo/data_bags/users/deployer.json中下载数据包. 您可以直接更新此JSON文件.完成后,请记住再次使用" 刀上传 " 上传此数据包.