搜索以在厨师中以特定格式返回节点ip列表

时间:2014-06-02 13:35:54

标签: ruby chef

我需要在一个厨师食谱中搜索,以这种特定格式返回所有节点的IP

'IP','IP',etc

到目前为止,通过搜索我得出了这个,但输出并不完全符合我想要的格式,我不知道如何更改它。

ip = Array.new

search(:node, "name:chef-node*") do |n|
  n["network"]["interfaces"]["eth1"]["addresses"].each_pair do |address,value|
    ip << address if value.has_key?("broadcast")
  end if n["network"]["interfaces"]["eth1"]
end

输出如下:

["10.22.33.33", "10.22.33.38", "10.21.33.24"]

我需要这样:

'10.210.39.231','10.209.161.18','10.210.66.240'

我将如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

ip = ["10.22.33.33", "10.22.33.38", "10.21.33.24"]

ip.map { |x| "'#{x}'" }.join(',')
# => "'10.22.33.33','10.22.33.38','10.21.33.24'"

答案 1 :(得分:1)

你有一个很好的Array或IP。只需使用方法join即可。

ip = ["10.22.33.33", "10.22.33.38", "10.21.33.24"]

ip.join(",")