我不确定这是否是您要查找的内容,但您可以通过 访问配方中的所有服务器配置search
,例如:
search(:node, 'recipes:"recipe#2"')
然后遍历结果以访问节点配置。
一个例子,用于填充/etc/hosts
。我正在使用knife-ec2,我不确定kitchen-ec2 是否提供所有这些属性。
食谱/default.rb
template "/etc/hosts" do
source "etc/hosts.erb"
owner "root"
group "root"
mode "0644"
variables(:servers => search(:node, "chef_environment:#{node.chef_environment}"),
:region => node['ec2']['placement_availability_zone'].match(/(\w*\-\w*\-\d*).*/)[1])
end
模板/默认/etc/hosts.erb
<% @servers.each do |n| %>
<% if n["ec2"] %>
<% region = n["ec2"]["placement_availability_zone"].match(/(\w*\-\w*\-\d*).*/)[1] %>
<% if region == @region && n["ec2"]["local_ipv4"] %>
<%= n["ec2"]["local_ipv4"] -%> <%= n.name -%> <%= n["ec2"]["hostname"] -%>
<% elsif n["ec2"]["public_ipv4"] %>
<%= n["ec2"]["public_ipv4"] -%> <%= n.name -%> <%= n["ec2"]["public_hostname"] -%>
<% end %>
<% end %>
<% end %>