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