узел ножа
Узел — это любое устройство (физическое, виртуальное, облачное, сетевое и т. д.), которое управляется 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
Список выполнения определяет всю необходимую информацию для Chef, чтобы настроить узел в нужное состояние. Список выполнения:
- Упорядоченный список ролей и/или рецептов, которые выполняются в точном порядке, определенном в списке выполнения; если рецепт появляется в списке выполнения более одного раза, Chef Infra Client не будет запускать его дважды
- Всегда специфичен для узла, на котором он выполняется; узлы могут иметь список выполнения, идентичный списку выполнения, используемому другими узлами
- Хранится как часть объекта узла на сервере Chef
- Поддерживается с помощью knife и затем загружается со рабочего места на сервер Chef Infra, или поддерживается с помощью Chef Automate
Используйте аргумент run_list add для добавления элементов списка выполнения (ролей или рецептов) к узлу.
Список выполнения должен быть в одном из следующих форматов: полное имя, cookbook или по умолчанию. И роли, и рецепты должны быть заключены в кавычки, например:
"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.
Например:
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]'
Добавление рецепта с cookbook
Чтобы добавить рецепт в список выполнения, используя формат cookbook, введите:
knife node run_list add NODE_NAME 'COOKBOOK::RECIPE_NAME'
Добавление рецепта по умолчанию
Чтобы добавить рецепт по умолчанию cookbook в список выполнения, введите:
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 из командной строки Windows строка должна быть заключена в одинарные кавычки (' '). Например:
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 Package (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/knife_node/