узел ножа
Узел — это любое устройство (физическое, виртуальное, облачное, сетевое и т. д.), находящееся под управлением 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 добавляет необязательную функцию в пакет 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
Опции
Этот аргумент имеет следующие опции:
-
-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 добавляет необязательную функцию в пакет 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
Параметры
У этой команды нет специфических параметров.
Примеры
Нет.
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/knife_node/