2013-05-30 78 views
5

在同一時間通過knife search node這樣我目前可以獲取節點的一個屬性:刀:獲得兩個(或更多)的屬性在一個去

knife search node "chef_environment:production AND name:i-7a421114" -a cloud.public_hostname 
# RESULT: 
i-7a421114: 
cloud.public_hostname: ec2-104-214-107-198.compute-1.amazonaws.com 

knife search node "chef_environment:production AND name:i-7a421114" -a cloud.local_hostname 
# RESULT: 
i-7a421114: 
cloud.local_hostname: ip-10-60-146-201.ec2.internal 

我想通過一個調用同時檢索兩個屬性,像這樣:

knife search node "chef_environment:production AND name:i-7a421114" -a cloud.public_hostname -a cloud.local_hostname 

當然,這不起作用,只有一個屬性獲得。由於我幾乎沒有廚師/刀的知識,有人可以讓我知道如何做到這一點,或其他方式來實現這一點。

回答

4

我開始研究如何編寫我自己的刀插件,但這是過度殺傷。 knife exec解決了這個問題,而典雅,簡單地說:

knife exec -E 'nodes.find(:name => "i-7a421114") { |n| puts "#{n.cloud.public_hostname} - #{n.cloud.local_hostname}" }' 

而且很容易將其擴展到所需數量的屬性 - 只要不斷加入N [ATTRIB]將關閉。

相關問題