Chef infra chef shell命令的扩展帮助
我们正在运行Chef v 11.12.2 在chef shell中,键入“help”将返回可用命令的列表,然后提供使用特定命令作为帮助和参数的帮助:Chef infra chef shell命令的扩展帮助,chef-infra,Chef Infra,我们正在运行Chef v 11.12.2 在chef shell中,键入“help”将返回可用命令的列表,然后提供使用特定命令作为帮助和参数的帮助: SNIP | cookbooks | Find and edit cookbooks | cookbooks.all | list all cookbooks | cookbooks.show | load a cookbook by name | cookbooks.tran
SNIP
| cookbooks | Find and edit cookbooks
| cookbooks.all | list all cookbooks
| cookbooks.show | load a cookbook by name
| cookbooks.transform | edit all cookbooks via a code block and save them
SNIP
Use help(:command) to get detailed help with individual commands
=> :ucanhaz_halp
虽然当我试图为“coobooks”命令找到帮助时,我得到的只是以前得到的:
chef > help (:cookbooks)
Command: cookbooks
================================================================================
Find and edit cookbooks
================================================================================
=> :ucanhaz_halp
chef >
我的问题是,我做的一切都对吗
获得扩展帮助的正确方式是什么
您知道有哪种资源详细解释了所有这些命令吗
我已经看到了很多关于如何使用chef shell的示例,但是没有一个提到使用cookbook*命令
公文
https://docs.chef.io/debug.html
不要对可用的命令说太多
更新:
这就是我需要它的原因:我正在尝试对烹饪书中的一些ruby代码进行故障排除。我想在客户端模式下启动chef shell,然后编辑缓存的烹饪书(不在服务器上!),然后在菜谱之间添加断点,并在ruby代码块中插入“binding.pry”。这个节点有一个很大的运行列表,所以我很乐意将它限制在一组特定的食谱中。烹饪书很大程度上依赖于数据包,所以为了使事情更简单,我想使用chef客户端模式,而不是其他模式或chef zero 目前看来我无法更改运行列表。在chef客户端模式下,它已预填充 虽然命令似乎不言自明,但我无法让它们工作:
chef > cookbooks.transform
ArgumentError: wrong number of arguments (0 for 1) from
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/shell/model_wr??apper.rb:62:in transform' from (irb):9
...
尝试将ntp指定为示例食谱:
chef > cookbooks.transform 'ntp'
Net::HTTPServerException: 404 "Object Not Found" from
/opt/chef/embedded/lib/ruby/1.9.1/net/http.rb:2633:in error!'
...
我们必须记住chef shell是一个REPL,它是加载chef Lib的irb。 所有这些命令都是ruby方法,它们接受参数并返回值。 因此,最好的帮助(以及示例)可以在下面的源代码注释中找到: 在我的本地安装中,文件位于此处 /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/shell/ext.rb 这些命令可以帮助您操作表示烹饪书/节点/环境/数据包等的ruby对象,但不能操作文件。所以你可以在技术上做内存编辑。 我发现chef shell特别有帮助的一件事是导出数据包或一些项目:
File.new('databags/databagname/itemname.json','w').puts databags('databagname').show('itemname').raw_data.to_json
你到底想做什么?很难给出这样的线索,这些命令是自解释的(在运行列表烹饪书上工作),我正在尝试对烹饪书中的一些ruby代码进行故障排除。我想在客户端模式下启动chef shell,然后编辑缓存的烹饪书(不在服务器上!),然后在菜谱之间添加断点,并在ruby代码块中插入“binding.pry”。这个节点有一个很大的运行列表,所以我很乐意将它限制在一组特定的食谱中。烹饪书在很大程度上依赖于数据包。为了让事情更简单,我想使用chef客户端模式,而不是其他模式和chef zero。目前看来我无法更改运行列表。在chef客户端模式下,它已经被预填充。虽然命令似乎不言自明,但我无法让它们工作:
chef>cookbooks.transform ArgumentError:from/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.2/lib/chef/shell/model_wrapper.rb:62:in
transform'from(irb):9 ... chef>cookbooks.transform'ntp'Net::HTTPServerException:404“找不到对象”来自/opt/chef/embedded/lib/ruby/1.9.1/Net/http.rb:2633:inerror!'。。。chef>cookbooks('ntp')。transform
如果您想在缓存one上工作,请使用chef zero模式,缓存为repo,我不能确保我是正确的,但我非常确定一个-o cookbook
作为参数就可以了。我会在明天的工作中查看你的问题,但是如果你能将你的问题与你的愿望和你尝试过的帽子联系起来,那么对未来的读者来说,这将比一堆评论更好。谢谢Tensibai,-o得到chef client的支持,而不是chef shell的支持