使用来自ruby的刀命令而不用bash

时间:2016-06-06 13:10:05

标签: ruby chef knife

我正在尝试从我的ruby脚本中删除以下bash命令:

nodes = "knife search 'chef_environment:#{env} AND recipe:#{microservice}' -i 2>&1 | tail -n 2"
node = %x[ #{nodes} ].split 
node.each do |n|
  puts n
end

并用以下内容替换它:

node = Chef::Knife.search("chef_environment:#{env} AND recipe:#{microservice}").split

这可能吗?是否有关于ruby中的Chef :: knife库以及如何使用它的文档?

1 个答案:

答案 0 :(得分:0)

要访问厨师服务器,您可以尝试使用ridley gem,它也是Berkshelf使用的,因此通常是最新的。

用法示例可能是:

ridley = Ridley.from_chef_config('/path/to/knife.rb')
ridley.search(:node, "chef_environment:#{env} AND recipe:#{microservice}")

有关其选项的更详细说明,请参阅gem的文档。