2015-08-28 35 views
0

這裏就是我想要實現:如何拆分Chef .erb文件中的AWS OpsWork輸出字符串。

我有下面的語句廚師ERB文件:

<% node[:opsworks][:layers][:mylayer][:instances].each do |private_ip| %> 
- "<%= private_ip %>" 
<% end %> 

這是產生輸出:

"["mylayer2", {"public_dns_name"=>nil, 
"private_dns_name"=>"ip-10-0-1-157.us-west-1.compute.internal", 
"backends"=>2, "ip"=>nil, 
"private_ip"=>"10.0.1.157",  
"instance_type"=>"t2.micro", 
"status"=>"online", 
"id"=>"ba33dad5-c294-44ab-bdb5-d292e02e0658", 
"aws_instance_id"=>"i-a93bb169", 
"elastic_ip"=>nil, 
"created_at"=>"2015-08-26T11:58:03+00:00", 
"booted_at"=>"2015-08-26T11:58:45+00:00", 
"region"=>"us-west-1", "availability_zone"=>"us-west-1a", 
"infrastructure_class"=>"ec2"}]" 

"["mylayer1", {"public_dns_name"=>nil, 
"private_dns_name"=>"ip-10-0-1-253.us-west-1.compute.internal", 
"backends"=>2, "ip"=>nil, 
"private_ip"=>"10.0.1.253", 
"instance_type"=>"t2.micro", 
"status"=>"online", 
"id"=>"be6e9645-ef12-416b-9401-e7379c3f85e1", 
"aws_instance_id"=>"i-b90c9b79", 
"elastic_ip"=>nil, 
"created_at"=>"2015-08-28T08:39:42+00:00", 
"booted_at"=>"2015-08-28T08:41:05+00:00", 
"region"=>"us-west-1", 
"availability_zone"=>"us-west-1a", 
"infrastructure_class"=>"ec2"}]" 

它產生所有的實例信息,但我會n (只有專用IP)輸出:

  • 10.0.1.157
  • 10.0.1.253

請在此幫助我。

+0

我的廚師erb文件內容是:<%node [:opsworks] [:layers] [:sunjava] [:instances] .each do | private_ip | %> - 「<%= private_ip%>」 <% end %> –

回答

0

如IRC上提到,數據看起來的情況下可能是一個哈希,所以你會想抓住這兩個鍵和值,然後從值搶private_ip:

<% node[:opsworks][:layers][:mylayer][:instances].each do |instance_name, instance_data| %> 
- "<%= instance_data['private_ip'] %>" 
<% end %> 
0

看起來像是通過遍歷實例來混淆自己,並且在你這樣做時調用每一個private_ip。試試這個:

<% node[:opsworks][:layers][:mylayer][:instances].each do |instance| %> 
- "<%= instance['private_ip'] %>" 
<% end %> 
+0

它不工作:主廚::密新::模板:: TemplateError上線#4(符號的不隱式轉換成整數): 2:storm.zookeeper .servers: 3:<%node [:opsworks] [:layers] [:sunjava] [:instances] .each do | instance | %> 4: - 「<%= instance [:private_ip]%>」 5:<% end %> 6: –

+0

仍然 - 相同的錯誤:Chef :: Mixin :: Template :: TemplateError(沒有將字符串隱式轉換爲整數)在線#4: 2:storm.zookeeper.servers: 3:<%node [:opsworks] [:layers] [:sunjava] [:instances] .each do | instance | %> 4: - 「<%=實例[ 'private_ip']%>」 5:<% end %> 6: (erubis):4:在'[]」 (erubis):4:在'塊( 2級)在評估' (erubis):3:在'每個' (erubis):3:在'塊中評估' –

+0

任何人都可以在這裏幫我。 –