如何将找到的每个值映射到另一个变量

时间:2016-04-27 09:53:39

标签: ruby chef

我想制作一个厨师食谱,我坚持这一步:

members = search("node", "recipe:redis AND chef_environment:#{node.chef_environment}") || []
members.each do |node|
  puts "#{node["ipaddress"]}"
end

这是有效的,并返回找到的三台服务器的IP地址。 但我想将每个找到的VALUE(ip地址)分配给变量,因为我将运行如下命令:

execute 'command' do
  command "redis-trib.rb create --replicas 1 #{node1}:6379 #{node2}:6379 #{node3}:6379 #{node1}:6380 #{node2}:6380 #{node3}:6380"
end

1 个答案:

答案 0 :(得分:5)

您可以这样做:

nodes = members.map do |node|
          node["ipaddress"]
        end

然后像这样使用它:

execute 'command' do
  command "redis-trib.rb create --replicas 1 #{nodes[0]}:6379 #{nodes[1]}:6379 #{nodes[2]}:6379 #{nodes[0]}:6380 #{nodes[1]}:6380 #{nodes[2]}:6380"
end