О ноже
knife — это командная утилита, предоставляющая интерфейс между локальным chef-repo и сервером Chef Infra. knife помогает пользователям управлять:
- узлами
- кулинарными книгами и рецептами
- ролями, средами и пакетами данных
- ресурсами в различных облачных средах
- установкой Chef Infra Client на узлы
- поиском индексированных данных на сервере Chef Infra
Быстрое справочное руководство по Knife предоставляет всеобъемлющее быстрое справочное руководство по командам knife. Вы можете просмотреть обзор или загрузить исходные файлы.
| Тема | Описание |
|---|---|
| Настройка ножа | Настройка knife для взаимодействия с сервером Chef Infra и инфраструктурой вашей организации. |
| Общие параметры ножа | Общие параметры, доступные для всех подкоманд knife. |
| config.rb | Общие параметры для файла config.rb (knife.rb) |
| Дополнительные настройки config.rb | Дополнительные параметры для вашего файла config.rb |
Подкоманды ножа
knife включает набор встроенных подкоманд, которые работают вместе, чтобы предоставить всю функциональность, необходимую для выполнения конкретных действий с любым объектом в организации, включая кулинарные книги, узлы, роли, пакеты данных, среды и пользователей.
Синтаксис команды knife
Все подкоманды knife имеют следующий синтаксис:
knife subcommand [ARGUMENT] (options)
Каждая подкоманда имеет свой набор аргументов и параметров.
Примечание
-u PORT_LIST (где PORT_LIST — это список локальных и публичных UDP-портов через запятую) или -F FORMAT (где FORMAT определяет формат вывода, либо summary, text, json, yaml, или pp). Эти переменные часто требуют конкретных значений, уникальных для каждой организации.Встроенные подкоманды
| Подкоманда | Описание |
|---|---|
| knife_bootstrap | Используйте подкоманду `knife bootstrap`, чтобы выполнить операцию инициализации, которая установит Chef Infra Client на целевую систему. Операция инициализации должна указать IP-адрес или FQDN целевой системы. |
| knife_client | Используйте подкоманду `knife client`, чтобы управлять списком API-клиентов и их связанными парами открытых ключей RSA. Это позволяет выполнять запросы на аутентификацию на сервере Chef Infra Server любым субъектом, использующим API сервера Chef Infra Server, таким как Chef Infra Client и knife. |
| knife configure | Используйте подкоманду `knife configure`, чтобы создать файлы [client.rb](/config_rb_client/) и [config.rb](/workstation/config_rb/), чтобы их можно было распространить на рабочие станции и узлы. |
| knife cookbook | Используйте подкоманду `knife cookbook`, чтобы взаимодействовать с кулинарными книгами, которые находятся на сервере Chef Infra Server или в локальном репозитории chef-repo. |
| knife data bag | Используйте подкоманду `knife data bag`, чтобы управлять произвольными хранилищами глобально доступных данных JSON. |
| knife delete | Используйте подкоманду `knife delete`, чтобы удалить объект из сервера Chef Infra Server. Эта подкоманда работает аналогично `knife cookbook delete`, `knife data bag delete`, `knife environment delete`, `knife node delete` и `knife role delete`, но с одним глаголом (и одним действием). |
| knife deps | Используйте подкоманду `knife deps`, чтобы определить зависимости для узла, роли или кулинарной книги. |
| knife diff | Используйте подкоманду `knife diff`, чтобы сравнить различия между файлами и каталогами на сервере Chef Infra Server и в репозитории chef-repo. Например, чтобы сравнить файлы на сервере Chef Infra Server перед загрузкой или скачиванием файлов с помощью подкоманд `knife download` и `knife upload`, или чтобы убедиться, что определенные файлы в нескольких производственных средах одинаковы. Эта подкоманда аналогична команде `git diff`, которая может быть использована для сравнения того, что содержится в chef-repo с тем, что синхронизировано с репозиторием Git. |
| knife download | Используйте подкоманду `knife download`, чтобы загрузить роли, кулинарные книги, среды, узлы и пакеты данных с сервера Chef Infra Server в текущую рабочую директорию. Она может быть использована для резервного копирования данных на сервере Chef Infra Server, проверки состояния одного или нескольких файлов или для извлечения изменений, которые пользователи могут внести в файлы на сервере Chef Infra Server, например, если пользователь внес изменение, минуя систему управления версиями. Эта подкоманда часто используется вместе с `knife diff`, которая может быть использована для просмотра того, какие изменения будут загружены, а затем с `knife upload`, которая делает обратное действие `knife download`. |
| knife edit | Используйте подкоманду `knife edit`, чтобы изменить объекты на сервере Chef Infra Server. Эта подкоманда работает аналогично `knife cookbook edit`, `knife data bag edit`, `knife environment edit`, `knife node edit` и `knife role edit`, но с одним глаголом (и одним действием). |
| knife environment | Используйте подкоманду `knife environment`, чтобы управлять средами в одной организации на сервере Chef Infra Server. |
| knife exec | Используйте подкоманду `knife exec`, чтобы выполнить скрипты Ruby в контексте полностью настроенного Chef Infra Client. Используйте эту подкоманду для выполнения скриптов, которые будут обращаться к серверу Chef Infra Server только один раз (или очень редко) или в любой момент, когда операция не требует полного использования библиотеки подкоманд knife. |
| knife list | Используйте подкоманду `knife list`, чтобы просмотреть список объектов на сервере Chef Infra Server. Эта подкоманда работает аналогично `knife cookbook list`, `knife data bag list`, `knife environment list`, `knife node list` и `knife role list`, но с одним глаголом (и одним действием). |
| knife node | Используйте подкоманду `knife node`, чтобы управлять узлами, которые существуют на сервере Chef Infra Server. |
| knife raw | Используйте подкоманду `knife raw`, чтобы отправить запрос REST на конечную точку в API сервера Chef Infra Server. |
| knife recipe list | Используйте подкоманду `knife recipe list`, чтобы просмотреть все рецепты на сервере Chef Infra Server. Регулярное выражение может быть использовано для ограничения результатов рецептами, которые соответствуют определенному шаблону. Регулярное выражение должно быть в кавычках и не быть окружено косыми чертами (/). |
| knife role | Используйте подкоманду `knife role`, чтобы управлять ролями, которые связаны с одним или несколькими узлами на сервере Chef Infra Server. |
| knife search | Используйте подкоманду `knife search`, чтобы выполнить запрос поиска для получения информации, которая индексируется на сервере Chef Infra Server. |
| knife serve | Используйте подкоманду `knife serve`, чтобы запустить постоянный chef-zero по отношению к локальному chef-repo. (chef-zero — это легкий сервер Chef Infra Server, который работает в памяти на локальной машине.) Это то же самое, что запуск исполняемого файла Chef Infra Client с параметром `--local-mode`. Путь `chef_repo_path` определяется автоматически, и сервер Chef Infra Server будет привязан к первому доступному порту между `8889` и `9999`. `knife serve` выведет URL локального сервера Chef Infra Server, чтобы его можно было добавить в файл config.rb. |
| knife show | Используйте подкоманду `knife show`, чтобы просмотреть подробности одного (или нескольких) объекта на сервере Chef Infra Server. Эта подкоманда работает аналогично `knife cookbook show`, `knife data bag show`, `knife environment show`, `knife node show` и `knife role show`, но с одним глаголом (и одним действием). |
| knife ssh | Используйте подкоманду `knife ssh`, чтобы вызвать команды SSH (параллельно) на подмножестве узлов в организации, основываясь на результатах [запроса поиска](/chef_search/), выполненного на сервере Chef Infra Server. |
| knife ssl check | Используйте подкоманду `knife ssl check`, чтобы проверить конфигурацию SSL для сервера Chef Infra Server или местоположения, указанного URL или URI. Недействительные сертификаты не будут использоваться OpenSSL. При выполнении этой команды проверяются файлы сертификатов ( Предупреждение Когда проверка SSL-сертификата удаленного сервера отключена, Chef Infra Client выведет предупреждение, подобное «Проверка SSL HTTPS-запросов отключена. HTTPS-соединения по-прежнему зашифрованы, но Chef Infra Client не может обнаружить поддельные ответы или атаки типа «человек посередине». Чтобы настроить SSL для Chef Infra Client, установите |
| knife ssl fetch | Используйте подкоманду `knife ssl fetch`, чтобы скопировать SSL-сертификаты с HTTPS-сервера в каталог `trusted_certs_dir`, который используется knife и Chef Infra Client для хранения доверенных SSL-сертификатов. Когда эти сертификаты соответствуют имени хоста удаленного сервера, запуск `knife ssl fetch` — единственный необходимый шаг для проверки удаленного сервера, к которому обращается либо knife, либо Chef Infra Client. Предупреждение Пользователь несет ответственность за проверку подлинности каждого SSL-сертификата перед его загрузкой в каталог |
| knife status | Используйте подкоманду `knife status`, чтобы отобразить краткое резюме узлов на сервере Chef Infra Server, включая время последнего успешного выполнения Chef Infra Client. |
| knife tag | Используйте подкоманду `knife tag`, чтобы применить метки к узлам на сервере Chef Infra Server. |
| knife supermarket | Используйте подкоманду knife supermarket для взаимодействия с кулинарными книгами, которые доступны в Chef Supermarket. Для любых действий в сообществе, записывающих данные на этот сайт, требуется учетная запись пользователя. Следующие аргументы не требуют учетной записи пользователя: download, search, install, и list. |
| knife upload | Используйте подкоманду `knife upload`, чтобы загрузить данные на сервер Chef Infra Server из текущей рабочей директории в репозитории chef-repo. С помощью этой подкоманды можно загрузить следующие типы данных:
(Роли и среды, хранящиеся в формате Ruby данных, не будут загружены.) Эта подкоманда часто используется вместе с |
| knife user | Используйте подкоманду `knife user`, чтобы управлять списком пользователей и их связанными парами открытых ключей RSA. |
| knife xargs | Используйте подкоманду `knife xargs`, чтобы получить шаблоны из стандартного ввода, загрузить их в формате JSON, выполнить команду по отношению к загруженному JSON и затем загрузить любые изменения. |
Подкоманды глаголов
knife включает набор подкоманд, построенных вокруг общих глаголов: delete, deps, diff, download, edit, list, show, upload, xargs. Эти подкоманды позволяют knife выполнять команды, взаимодействующие с любым объектом, хранящимся в chef-repo или на сервере Chef Infra. Некоторые важные принципы, лежащие в основе этой группы подкоманд:
- Команда, работающая с каждым объектом в chef-repo. Подкоманды определяют желаемое действие (глагол) и каталог, в котором этот объект находится (
clients,cookbooks/,data_bags/,environments/,nodes,roles/, иusers). Например:download cookbooks/ - Команда, работающая с определенными объектами на сервере Chef Infra, включая
acls,groups, иcontainers - Использование сервера Chef Infra как файловой системы, позволяющей chef-repo на сервере Chef Infra вести себя как зеркало chef-repo на рабочей станции. На сервере Chef Infra будут храниться те же объекты, что и в локальном chef-repo. Для внесения изменений в файлы на сервере Chef Infra достаточно загрузить файлы с сервера Chef Infra или загрузить файлы из chef-repo
- Контекст, из которого выполняется команда, имеет значение. Например, при работе в каталоге
roles/, knife будет знать, с чем работает. Введитеknife show base.json, и knife вернёт базовый роуль с сервера Chef Infra. Из корня chef-repo введитеknife show roles/base.json, чтобы получить тот же результат - Можно отправлять параллельные запросы на сервер Chef Infra, и они настраиваются на основе каждой команды
Поиск с подстановкой
Шаблон поиска с подстановкой может использоваться для поиска подстрок, которые заменяют ноль (или более) символов. Существует два типа шаблонов поиска с подстановкой:
- Вопросительный знак ("?") может использоваться для замены ровно одного символа (при условии, что этот символ не является первым)
- Звёздочка ("*") может использоваться для замены любого количества символов (включая ноль)
Шаблоны поиска с подстановкой должны быть экранированы (с помощью обратного слэша), чтобы сама подстановка достигла сервера Chef Infra. Если они не экранированы, подстановка расширяется в фактические имена файлов, и knife не будет знать, что подстановка должна использоваться. Например, если на сервере Chef Infra есть пакеты данных с именами aardvarks, anagrams, и arp_tables, а на локальной файловой системе только aardvarks и anagrams, экранирование шаблона поиска с подстановкой по сравнению с его отсутствием даст разные результаты:
knife list data_bags/a\*
запрашивает у сервера Chef Infra всё, начинающееся с буквы «a», и вернёт:
aardvarks/ anagrams/ arp_tables/
Но следующее:
knife list data_bags/a*
вернёт:
aardvarks/ anagrams/
Что эквивалентно вводу:
knife list data_bags/aardvarks data_bags/anagrams
для возврата:
aardvarks/ anagrams/
Плагины knife
Функциональность knife можно расширить с помощью плагинов, которые работают так же, как встроенные подкоманды (включая общие параметры). Плагины knife написаны для взаимодействия с распространёнными поставщиками облачных сервисов, для упрощения общих задач Chef и для помощи в рабочих процессах Chef.
Установка плагинов
Плагины knife поставляются как RubyGems и устанавливаются в установку Chef Workstation с помощью команды chef:
chef gem install PLUGIN_NAME
После установки вам также необходимо пересчитать список команд knife, выполнив:
knife rehash
Плагины knife, поддерживаемые Chef
Chef поддерживает следующие плагины, которые поставляются с Chef Workstation:
knife-aclknife-azureknife-ec2knife-googleknife-lparknife-opcknife-openstackknife-pushknife-rackspaceknife-reportingknife-vcenterknife-windows
Плагины knife, разработанные сообществом
Плагины knife, разработанные членами сообщества Chef, можно найти в Supermarket по адресу Плагины knife.
© 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/