О Knife
knife — это командная строка, предоставляющая интерфейс между локальным chef-repo и сервером Chef Infra. knife помогает управлять:
- узлами
- кулинариями и рецептами
- ролями, средами и пакетами данных
- ресурсами в различных облачных средах
- установкой Chef Infra Client на узлы
- поиском индексированных данных на сервере Chef Infra
Knife Quick Reference предоставляет всеобъемлющее справочное руководство по командам knife. Вы можете просмотреть обзор или скачать исходные файлы.
| Тема | Описание |
|---|---|
| Настройка Knife | Настройка knife для взаимодействия с сервером Chef Infra вашей организации и инфраструктурой. |
| Общие параметры Knife | Общие параметры, доступные для всех подкоманд knife. |
| config.rb | Общие параметры для файла config.rb (knife.rb) |
| Дополнительные параметры config.rb | Дополнительные параметры для вашего файла config.rb |
Подкоманды Knife
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/) и файлов учетных данных, чтобы их можно было распространить на рабочие станции и узлы. |
| 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-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/