Spec-Zone.ru › Chef 16

О ноже

[править на GitHub]

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.

При выполнении этой команды проверяются файлы сертификатов (*.crt и/или *.pem), которые находятся в каталоге /.chef/trusted_certs, чтобы убедиться, что они имеют действительные свойства сертификата X.509. Возвращается предупреждение, если сертификаты не имеют действительных свойств сертификата X.509 или если каталог /.chef/trusted_certs не содержит сертификатов.

Предупреждение

Когда проверка SSL-сертификата удаленного сервера отключена, Chef Infra Client выведет предупреждение, подобное «Проверка SSL HTTPS-запросов отключена. HTTPS-соединения по-прежнему зашифрованы, но Chef Infra Client не может обнаружить поддельные ответы или атаки типа «человек посередине». Чтобы настроить SSL для Chef Infra Client, установите ssl_verify_mode в значение :verify_peer (рекомендуется) или verify_api_cert в значение true в файле client.rb.

knife ssl fetch Используйте подкоманду `knife ssl fetch`, чтобы скопировать SSL-сертификаты с HTTPS-сервера в каталог `trusted_certs_dir`, который используется knife и Chef Infra Client для хранения доверенных SSL-сертификатов. Когда эти сертификаты соответствуют имени хоста удаленного сервера, запуск `knife ssl fetch` — единственный необходимый шаг для проверки удаленного сервера, к которому обращается либо knife, либо Chef Infra Client.

Предупреждение

Пользователь несет ответственность за проверку подлинности каждого SSL-сертификата перед его загрузкой в каталог /.chef/trusted_certs. knife будет использовать любой сертификат в этом каталоге так, как будто он является на 100% доверенным и подлинным SSL-сертификатом. knife не сможет определить, был ли какой-либо сертификат в этом каталоге изменен, подделан, вредоносен или иным образом вреден. Поэтому крайне важно, чтобы пользователи предприняли соответствующие шаги перед загрузкой сертификатов в этот каталог.

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. С помощью этой подкоманды можно загрузить следующие типы данных:
  • Кулинарные книги
  • Пакеты данных
  • Роли, хранящиеся в формате JSON
  • Среды, хранящиеся в формате JSON

(Роли и среды, хранящиеся в формате Ruby данных, не будут загружены.) Эта подкоманда часто используется вместе с knife diff, которая может быть использована для просмотра того, какие изменения будут загружены, а затем с knife download, которая делает обратное действие knife upload.

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-acl
  • knife-azure
  • knife-ec2
  • knife-google
  • knife-lpar
  • knife-opc
  • knife-openstack
  • knife-push
  • knife-rackspace
  • knife-reporting
  • knife-vcenter
  • knife-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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API