获取每个Chef服务器节点的特定IP地址

时间:2013-01-16 16:28:27

标签: ruby chef

请原谅,因为我不熟悉Chef&红宝石。这应该是一个简单的问题。跟随Jason Grimes's Tutorial

如何删除 localhost ,而是在下面的代码中使用Chef节点的特定IP地址?

# Get a list of web servers
webservers = node['roles'].include?('webserver') ? [{'ipaddress' => 'localhost'}] : search(:node, "role:webserver AND chef_environment:#{node.chef_environment}")

我可以代替替换 webservers = search(:node, "role:webserver AND chef_environment:#{node.chef_environment}")
因为IP_address是automatic attribute according to OpscodeStackOverflow question

不幸的是,我不太明白我将如何测试这一点以确保否则我会进行测试。谢谢!

1 个答案:

答案 0 :(得分:2)

是的,你是对的。

webservers = search(:node, "role:webserver AND chef_environment:#{node.chef_environment}")

然后webservers将是一个节点数组,您将能够通过

获得IP
webservers[index]['ipaddress']