Suponho que você tenha configurado funções para servidor da Web, servidor de banco de dados, etc.
Algo parecido com isso na receita do servidor de aplicativos:
dbservers = Array.new
search(:node, "role:database_server") do |n|
n["network"]["interfaces"]["eth0"]["addresses"].each_pair do |address,value|
dbservers << address if value.has_key?("broadcast")
end if n["network"]["interfaces"]["eth1"]
end
template "/path/to/app/config/appserver.conf" do
source 'appserver.conf.erb'
owner 'foo'
group 'bar'
mode 0644
variables :dbservers => dbservers
end
Em seguida, seu modelo terá algo como:
<% @dbservers.each do |s| -%>
connect_to_mysql_at_ip <%= s %>
<% end -%>
Pode haver uma maneira mais agradável de obter o endereço IP com o Chef 0.10. Acho que o código acima pode ter o legado do Chef 0.9, mas funciona.