узел ножа
Узел — это любое устройство (физическое, виртуальное, облачное, сетевое и т. д.), находящееся под управлением Chef Infra.
Используйте подкоманду knife node для управления узлами, существующими на сервере Chef Infra.
Примечание
удаление по образцу
Используйте аргумент bulk delete для удаления одного или нескольких узлов, соответствующих шаблону, определенному регулярным выражением. Регулярное выражение должно быть заключено в кавычки и не должно быть окружено косыми чертами (/).
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node bulk delete REGEX
Опции
У этой команды нет специфических опций.
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Удаление узлов по образцу
Используйте регулярное выражение для определения шаблона, используемого для удаления узлов:
knife node bulk delete "^[0-9]{3}$"
Введите Y для подтверждения удаления.
создание
Используйте аргумент create для добавления узла на сервер Chef Infra. Данные узла хранятся в формате JSON на сервере Chef Infra.
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node create NODE_NAME
Опции
У этой команды нет специфических опций.
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Создание узла
Для добавления узла с именем node1, введите:
knife node create node1
В $EDITOR введите данные узла в формате JSON:
{
"normal": {
},
"name": "foobar",
"override": {
},
"default": {
},
"json_class": "Chef::Node",
"automatic": {
},
"run_list": [
"recipe[zsh]",
"role[webserver]"
],
"chef_type": "node"
}
После завершения сохраните файл.
удаление
Используйте аргумент delete для удаления узла с сервера Chef Infra. Если используется Chef Client 12.17 или более поздней версии, вы можете удалить несколько узлов с помощью этой подкоманды.
Примечание
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node delete NODE_NAME
Опции
У этой команды нет специфических опций.
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Удаление узла
Для удаления узла с именем node1, введите:
knife node delete node1
редактирование
Используйте аргумент edit для редактирования данных узла на сервере Chef Infra. Данные узла хранятся в формате JSON на сервере Chef Infra.
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node edit NODE_NAME (options)
Опции
Этот аргумент имеет следующие опции:
-
-a,--all -
Отображение узла в $EDITOR. По умолчанию атрибуты по умолчанию, переопределения или автоматические не отображаются.
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Редактирование узла
Для редактирования данных узла с именем node1, введите:
knife node edit node1 -a
Обновите данные роли в формате JSON:
{
"normal": {
},
"name": "node1",
"override": {
},
"default": {
},
"json_class": "Chef::Node",
"automatic": {
},
"run_list": [
"recipe[devops]",
"role[webserver]"
],
"chef_type": "node"
}
После завершения сохраните файл.
установка среды
Используйте аргумент environment set для установки среды для узла без редактирования объекта узла.
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node environment_set NODE_NAME ENVIRONMENT_NAME (options)
Опции
У этой команды нет специфических опций.
Примеры
Нет.
из файла
Используйте аргумент from file для создания узла, используя существующие данные узла в качестве шаблона.
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node from file FILE
Опции
У этой команды нет специфических опций.
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Создание узла из файла JSON
Для добавления узла, используя данные из файла JSON:
knife node from file "PATH_TO_JSON_FILE"
список
Используйте аргумент list для просмотра всех узлов, существующих на сервере Chef Infra.
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node list (options)
Опции
Этот аргумент имеет следующие опции:
-
-w,--with-uri -
Отображение соответствующих URI.
Примечание
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Просмотр списка узлов
Для проверки списка узлов, зарегистрированных на сервере Chef Infra, введите:
knife node list
что вернёт что-то подобное:
i-12345678
rs-123456
установка политики
Используйте аргумент policy set для установки группы политик и имени политики для узла.
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node policy set NODE POLICY_GROUP POLICY_NAME
Примеры
Установите группу политик и имя политики для узла с именем test-node,:
knife node policy set test-node 'test-group' 'test-name'
добавление run-list
Run-list определяет всю информацию, необходимую Chef для настройки узла в желаемое состояние. Run-list:
- Представляет собой упорядоченный список ролей и/или рецептов, которые выполняются в точном порядке, указанном в run-list; если рецепт появляется в run-list более одного раза, Chef Infra Client не выполнит его дважды
- Всегда специфичен для узла, на котором он выполняется; узлы могут иметь run-list, идентичный run-list, используемому другими узлами
- Хранится как часть объекта узла на сервере Chef
- Поддерживается с помощью knife и затем загружается со рабочего стола на сервер Chef Infra, или поддерживается с помощью Chef Automate
Используйте аргумент run_list add для добавления элементов run-list (ролей или рецептов) к узлу.
Run-list должен быть в одном из следующих форматов: полный путь, кулинария или по умолчанию. И роли, и рецепты должны быть в кавычках, например:
"role[NAME]"
или
"recipe[COOKBOOK::RECIPE]"
Используйте запятую для разделения ролей и рецептов при добавлении более одного элемента в run-list:
"recipe[COOKBOOK::RECIPE],COOKBOOK::RECIPE,role[NAME]"
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node run_list add NODE_NAME RUN_LIST_ITEM (options)
Предупреждение
При выполнении knife в Microsoft Windows строка может интерпретироваться как шаблон подстановок, когда кавычки отсутствуют в команде. Количество кавычек зависит от оболочки, из которой выполняется команда.
При выполнении knife из командной строки, строка должна быть окружена одинарными кавычками (' '). Например:
knife node run_list set test-node 'recipe[iptables]'
При выполнении knife из Windows PowerShell, строка должна быть окружена тройными одинарными кавычками (''' '''). Например:
knife node run_list set test-node '''recipe[iptables]'''
Примечание
Выпуск Chef Client 12.4 добавляет дополнительную функцию к пакету MSI (Microsoft Installer Package) для Chef. Эта функция позволяет передавать строки в кавычках из командной строки Windows PowerShell без необходимости в тройных одинарных кавычках (''' '''). Эта функция устанавливает модуль Windows PowerShell (обычно в C:\opscode\chef\modules), который также добавляется к переменной среды PSModulePath. Эта функция по умолчанию отключена. Чтобы активировать эту функцию, выполните следующую команду из Windows PowerShell:
Import-Module chef
или добавьте Import-Module chef к профилю Windows PowerShell, расположенному по адресу:
~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Этот модуль экспортирует командлеты, имеющие то же имя, что и инструменты командной строки — chef-client, knife — встроенные в Chef.
Например:
knife exec -E 'puts ARGV' """&s0meth1ng"""
теперь:
knife exec -E 'puts ARGV' '&s0meth1ng'
и:
knife node run_list set test-node '''role[ssssssomething]'''
теперь:
knife node run_list set test-node 'role[ssssssomething]'
Чтобы удалить эту функцию, выполните следующую команду из Windows PowerShell:
Remove-Module chef
Опции
Этот аргумент имеет следующие опции:
-
-a ITEM,--after ITEM -
Добавление элемента run-list после указанного элемента run-list.
-
-b ITEM,--before ITEM -
Добавление элемента run-list перед указанным элементом run-list.
Примечание
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Добавление роли
Для добавления роли в run-list, введите:
knife node run_list add NODE_NAME 'role[ROLE_NAME]'
Добавление ролей и рецептов
Для добавления ролей и рецептов в run-list, введите:
knife node run_list add NODE_NAME 'recipe[COOKBOOK::RECIPE_NAME],recipe[COOKBOOK::RECIPE_NAME],role[ROLE_NAME]'
Добавление рецепта с FQDN
Для добавления рецепта в run-list с использованием полного имени домена, введите:
knife node run_list add NODE_NAME 'recipe[COOKBOOK::RECIPE_NAME]'
Добавление рецепта с кулинарией
Для добавления рецепта в run-list, используя формат кулинарии, введите:
knife node run_list add NODE_NAME 'COOKBOOK::RECIPE_NAME'
Добавление рецепта по умолчанию
Для добавления рецепта по умолчанию кулинарии в run-list, введите:
knife node run_list add NODE_NAME 'COOKBOOK'
Удаление из run_list
Используйте аргумент run_list remove для удаления элементов run-list (ролей или рецептов) с узла. Рецепт должен быть в одном из следующих форматов: полное имя, название кулинарной книги или значение по умолчанию. И роли, и рецепты должны быть в кавычках, например: 'role[ROLE_NAME]' или 'recipe[COOKBOOK::RECIPE_NAME]'. Для удаления нескольких ролей и рецептов используйте запятую для разделения, как в этом примере: 'recipe[COOKBOOK::RECIPE_NAME],COOKBOOK::RECIPE_NAME,role[ROLE_NAME]'.
Синтаксис
У этого аргумента следующий синтаксис:
knife node run_list remove NODE_NAME RUN_LIST_ITEM
Параметры
У этой команды нет специфических параметров.
Примечание
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Удаление роли
Чтобы удалить роль из run-list, введите:
knife node run_list remove NODE_NAME 'role[ROLE_NAME]'
Удаление run-list
Чтобы удалить рецепт из run-list, используя полное имя, введите:
knife node run_list remove NODE_NAME 'recipe[COOKBOOK::RECIPE_NAME]'
Установка run-list
Используйте аргумент run_list set для установки run-list для узла. Рецепт должен быть в одном из следующих форматов: полное имя, название кулинарной книги или значение по умолчанию. И роли, и рецепты должны быть в кавычках, например: "role[ROLE_NAME]" или "recipe[COOKBOOK::RECIPE_NAME]". Для установки нескольких ролей и рецептов используйте запятую для разделения, как в этом примере: "recipe[COOKBOOK::RECIPE_NAME],COOKBOOK::RECIPE_NAME,role[ROLE_NAME]".
Синтаксис
У этого аргумента следующий синтаксис:
knife node run_list set NODE_NAME RUN_LIST_ITEM
Предупреждение
При выполнении knife в Microsoft Windows строка может интерпретироваться как шаблон подстановочных знаков, если кавычки не указаны в команде. Количество кавычек зависит от оболочки, из которой выполняется команда.
При выполнении knife из командной строки, строка должна быть заключена в одинарные кавычки (' '). Например:
knife node run_list set test-node 'recipe[iptables]'
При выполнении knife из Windows PowerShell, строка должна быть заключена в тройные одинарные кавычки (''' '''). Например:
knife node run_list set test-node '''recipe[iptables]'''
Примечание
Выпуск Chef Client 12.4 добавляет необязательную функцию в пакет MSI Chef. Эта функция позволяет передавать строки в кавычках из командной строки Windows PowerShell без необходимости использовать тройные одинарные кавычки (''' '''). Эта функция устанавливает модуль Windows PowerShell (обычно в C:\opscode\chef\modules), который также добавляется в переменную среды PSModulePath. Эта функция по умолчанию отключена. Чтобы включить её, выполните следующую команду в Windows PowerShell:
Import-Module chef
или добавьте Import-Module chef в профиль Windows PowerShell по адресу:
~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Этот модуль экспортирует командлеты с такими же названиями, как и командные инструменты — chef-client, knife — встроенные в Chef.
Например:
knife exec -E 'puts ARGV' """&s0meth1ng"""
теперь:
knife exec -E 'puts ARGV' '&s0meth1ng'
и:
knife node run_list set test-node '''role[ssssssomething]'''
теперь:
knife node run_list set test-node 'role[ssssssomething]'
Чтобы отключить эту функцию, выполните следующую команду в Windows PowerShell:
Remove-Module chef
Параметры
У этой команды нет специфических параметров.
Примеры
Нет.
Вывод информации
Используйте аргумент show для отображения информации об узле.
Синтаксис
У этого аргумента следующий синтаксис:
knife node show NODE_NAME (options)
Параметры
У этого аргумента есть следующие параметры:
-
-a ATTR,--attribute ATTR -
Атрибут (или атрибуты) для отображения.
-
-F json,--format=json -
Отобразить вывод в формате JSON.
-
-l,--long -
Отобразить все атрибуты в выводе.
-
-m,--medium -
Отобразить стандартные атрибуты в выводе.
-
-r,--run-list -
Отобразить только run-list.
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Вывод всех данных об узлах
Чтобы просмотреть все данные для узла с именем build, введите:
knife node show build
что вернёт:
Node Name: build
Environment: _default
FQDN:
IP:
Run List:
Roles:
Recipes:
Platform:
Вывод основной информации об узлах
Чтобы вывести основную информацию об узле, укороченную и отформатированную:
knife node show NODE_NAME
Вывод всех данных об узлах, укорочено
Чтобы вывести всю информацию об узле, отформатированную:
knife node show -l NODE_NAME
Вывод атрибутов
Чтобы отобразить один атрибут узла:
knife node show NODE_NAME -a ATTRIBUTE_NAME
где ATTRIBUTE_NAME - что-то вроде kernel или platform.
Чтобы отобразить вложенный атрибут:
knife node show NODE_NAME -a ATTRIBUTE_NAME.NESTED_ATTRIBUTE_NAME
где ATTRIBUTE_NAME - что-то вроде kernel и NESTED_ATTRIBUTE_NAME - что-то вроде machine.
Вывод FQDN
Чтобы получить FQDN для узла с именем i-12345678, введите:
knife node show i-12345678 -a fqdn
что вернёт:
fqdn: ip-10-251-75-20.ec2.internal
Вывод run-list
Чтобы отобразить run-list для узла с именем dev, введите:
knife node show dev -r
Вывод в формате JSON
Чтобы просмотреть информацию в формате JSON, используйте общий параметр -F; для узла с именем devops используйте команду:
knife node show devops -F json
Другие доступные форматы включают text, yaml, и pp.
Вывод в сыром формате JSON
Чтобы отобразить информацию об узле в сыром формате JSON, используйте параметр -l или --long:
knife node show -l -F json NODE_NAME
и/или:
knife node show -l --format=json NODE_NAME
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/workstation/knife_node/