在bash资源中使用chef数组属性

时间:2016-04-29 15:19:39

标签: ruby bash shell chef chef-recipe

我的node['server']['ipaddress']属性包含3个ip地址,如下所示:

node['server']['ipaddress']=["10.211.241.21", "10.211.241.20", "10.211.241.22"]

我现在正尝试在chef bash资源中使用上述值

bash 'configure_engine_discovery' do
  code <<-EOH
  echo `docker run --server ipaddress1 --server ipaddress2 --server ipaddress3 --update`
  EOH
end

可能有超过3个ipaddresses,我想让上面的bash命令更加动态,这样我就不需要每次都更改bash,它可以容纳任意数量的服务器ips

1 个答案:

答案 0 :(得分:2)

试试这个:

server_specs = node['server']['ipaddress'].map { |s| "--server #{s}" }.join(' ')
command = "docker run #{server_specs} --update"
echo command

顺便说一下,为什么不是以复数形式命名的密钥ipaddresses而不是ipaddress?这让读者感到困惑。