2013-05-30 10 views
5

mogę aktualnie pobrać jeden atrybut węzła w czasie poprzez knife search node tak:nóż: uzyskanie dwóch (lub więcej) przypisuje się udać

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 

Chcę odzyskać dwa atrybuty jednocześnie za pomocą jednego wywołania , coś takiego:

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

Oczywiście to nie działa, uzyskano tylko jeden atrybut. Ponieważ nie mam prawie żadnej wiedzy o kuchni/nożu, czy ktoś mógłby mi powiedzieć, jak to zrobić, lub w inny sposób, aby to osiągnąć.

Odpowiedz

4

Zacząłem się zastanawiać, jak napisać własną wtyczkę nożową, ale to była przesada. knife exec rozwiązać ten problem raczej elegancko i prosto:

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

I łatwo rozszerzyć to na tak wiele atrybutów, które jest wymagane - wystarczy zachować dodając N [Attrib] do zamknięcia..

Powiązane problemy