Spec-Zone.ru › Chef 18

О Knife

[редактировать на GitHub]

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.

При выполнении этой команды проверяются файлы сертификатов (*.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-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