нож: получение двух (или более) атрибутов за один раз

В настоящее время я могу получить один атрибут узла за раз через 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

конечно, это не работает, получается только один атрибут. Поскольку у меня почти нет знаний шеф-повара/ножа, кто-нибудь может дать мне знать, как это сделать или каким-то другим способом достичь этого.

2 ответов


Я начал смотреть, как написать свой собственный плагин ножа, но это было перебором. knife exec решил эту проблему довольно элегантно и просто:

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

и это легко расширить на столько атрибутов, сколько требуется-просто продолжайте добавлять n.[ATTRIB]к закрытию.


на сегодняшний день (шеф-повар: 12.19.36) ваш второй запрос действительно работает (и вы можете добавить столько атрибутов, сколько пожелаете):

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