Назад | Перейти на главную страницу

Получить имена узлов с определенной ролью

Как я могу получить список узлов, у которых есть определенная роль?

Его можно было получить примерно так:

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