Getting IP Addresses in Chef 0.8


#1

In Chef 0.7 I would search the node index and collect relevant data like so:

munin_hosts = search(:node, “roles:optimize_server”).map { |host| {
“hostname” => host[“hostname”],
“fqdn” => host[“fqdn”],
“domain” => host[“domain”],
“ipaddress” => host[“ipaddress”],
“interfaces” => host[“network”][“interfaces”]
}
}

In Chef 0.8, I went to this:
munin_hosts = search(:node, “run_list:role\[optimize_server\]”).map { |host| {
“hostname” => host[“hostname”],
“fqdn” => host[“fqdn”],
“domain” => host[“domain”],
“ipaddress” => host[“ipaddress”],
“interfaces” => host[“network”][“interfaces”]
}
}

Now, in different circumstances I care about different IP addresses
which ohai rarely makes the default interface address. I would collect
addresses from individual interfaces like so:

ipaddress_raw = host[“interfaces”][“tun0”][“addresses”].invert[“inet”]

However I can’t do that in Chef 0.8 because this is now a
Chef::Attribute and it has no invert method or a to_s method.

How do I get the IP address of a particular known interface name in Chef 0.8.16?

Bryan