В этом случае вы можете использовать поиск по словарю, это будет немного меньше кода и более ясным.
использовать строку поискового запроса в сочетании с knife ssh
, см. Последний пример в knife search
документации :
Чтобы проверить поисковый запрос это будет использоваться в подкоманде ssh:
$ knife search node "role:web NOT name:web03"
, где запрос в предыдущем примере будет искать все серверы с ролью
web
, но не на сервере с именемweb03
. [1114 ]Поисковый запрос состоит из двух частей:
blockquote>key
иsearch pattern
. гдеkey
- это имя поля, которое находится в описании JSON индексируемого объекта на сервере Chef (роль, узел, клиент, среда или пакет данных), аsearch_pattern
определяет, что будет искать, используя из следующих шаблонов поиска: точное, подстановочный знак, диапазон или нечеткое соответствие. Ключ и search_pattern чувствительны к регистру; Ключ имеет ограниченную поддержку для сопоставления с несколькими символами подстановки, используя звездочку ("*") (и до тех пор, пока это не первый символ)., чтобы вы могли использовать строку поискового запроса с ножом ssh:
$ knife ssh "role:web NOT name:web03" "sudo chef-client" -a fqdn