узел ножа
Узел — это любое устройство: физическое, виртуальное, облачное, сетевое и т. д., которое управляется 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'
добавление в список задач
Список задач определяет всю информацию, необходимую Chef для настройки узла в нужное состояние. Список задач:
- упорядоченный список ролей и/или рецептов, которые выполняются в точном порядке, определённом в списке задач; если рецепт указан более одного раза в списке задач, Chef Infra Client не выполнит его дважды
- всегда специфичен для узла, на котором он выполняется; узлы могут иметь список задач, идентичный списку задач, используемому другими узлами
- хранится как часть объекта узла на сервере Chef
- поддерживается с помощью knife и затем загружается со рабочего места на сервер Chef Infra или поддерживается с помощью Chef Automate
Используйте аргумент run_list add для добавления элементов списка задач (ролей или рецептов) к узлу.
Список задач должен быть в одном из следующих форматов: полное имя, кулинарная книга или по умолчанию. И роли, и рецепты должны быть в кавычках, например:
"role[NAME]"
или
"recipe[COOKBOOK::RECIPE]"
Используйте запятую для разделения ролей и рецептов при добавлении более одного элемента в список задач:
"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 добавляет необязательную функцию в пакет Microsoft Installer (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-apply — входящие в состав 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 Добавить элемент списка задач после указанного элемента.
-
-b ITEM,--before ITEM Добавить элемент списка задач перед указанным элементом.
Примечание
Примеры
В следующих примерах показано, как использовать эту подкоманду knife:
Добавление роли
Для добавления роли в список задач введите:
knife node run_list add NODE_NAME 'role[ROLE_NAME]'
Добавление ролей и рецептов
Для добавления ролей и рецептов в список задач введите:
knife node run_list add NODE_NAME 'recipe[COOKBOOK::RECIPE_NAME],recipe[COOKBOOK::RECIPE_NAME],role[ROLE_NAME]'
Добавление рецепта с FQDN
Для добавления рецепта в список задач с использованием полного имени, введите:
knife node run_list add NODE_NAME 'recipe[COOKBOOK::RECIPE_NAME]'
Добавление рецепта с помощью кулинарной книги
Для добавления рецепта в список задач с использованием формата кулинарной книги, введите:
knife node run_list add NODE_NAME 'COOKBOOK::RECIPE_NAME'
Добавление рецепта по умолчанию
Для добавления рецепта по умолчанию кулинарной книги в список задач, введите:
knife node run_list add NODE_NAME 'COOKBOOK'
удаление из списка задач
Используйте аргумент run_list remove для удаления элементов списка запуска (ролей или рецептов) из узла. Рецепт должен быть в одном из следующих форматов: полное имя, кулинарная книга или по умолчанию. Как роли, так и рецепты должны быть в кавычках, например: '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:
Удаление роли
Для удаления роли из списка запуска введите:
knife node run_list remove NODE_NAME 'role[ROLE_NAME]'
Удаление списка запуска
Для удаления рецепта из списка запуска с использованием полных имён, введите:
knife node run_list remove NODE_NAME 'recipe[COOKBOOK::RECIPE_NAME]'
run_list set
Используйте аргумент run_list set для установки списка запуска для узла. Рецепт должен быть в одном из следующих форматов: полное имя, кулинарная книга или по умолчанию. Как роли, так и рецепты должны быть в кавычках, например: "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 (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-apply — встроенные в 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
Используйте аргумент show для отображения информации об узле.
Синтаксис
Этот аргумент имеет следующий синтаксис:
knife node show NODE_NAME (options)
Параметры
Этот аргумент имеет следующие параметры:
-
-a ATTR,--attribute ATTR Атрибут(ы) для отображения.
-
-F json,--format=json Отобразить вывод в формате JSON.
-
-l,--long Отобразить все атрибуты в выводе.
-
-m,--medium Отобразить обычные атрибуты в выводе.
-
-r,--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
Показать список запуска
Для просмотра списка запуска для узла с именем 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/