2013-05-30 11 views
5

を行く1の属性:ナイフ:2つ(またはそれ以上)を得ることは、私は現在、このような<code>knife search node</code>を経由して一度にノードの一つの属性を取得することができ

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 

私は、単一の呼び出しを経由して、同時に2つの属性を取得したいですこのようなもの:

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

もちろん、これは機能しません。属性は1つだけです。私はほとんどシェフやナイフの知識がないので、誰かがこれを行う方法やこれを達成するための他の方法を教えてもらえますか?

答えて

4

私は自分自身のナイフプラグインを書く方法を見始めたが、それは残酷だった。 knife execはかなりエレガントかつ簡単にこの問題を解決:

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

そして、それは必要な数の属性にこれを拡張するのは簡単です - 単にn個を追加し続ける[ATTRIB]を閉鎖します。

関連する問題