Как я могу получить список узлов, у которых есть определенная роль?
Его можно было получить примерно так:
for node in `knife node list`; do
[[ -n "`knife node show $node | grep $ROLE_NAME`" ]] && echo $node
done
Есть ли способ сделать это с помощью ножа без накладных расходов?
Выход есть:
knife search node "roles:$ROLE_NAME"
Заголовок из «поиска ножа» выводится в stderr, поэтому вы можете использовать
knife search "role:$ROLE_NAME" -i 2>/dev/null
чтобы просто вернуть список узлов. Полезно, если вы хотите обернуть это в оператор for:
for n in $(knife search "role:$ROLE_NAME" -i 2>/dev/null); do
// do something here
done