Spec-Zone.ru › Chef 17

Настройка Knife

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

knife — это командная утилита, которая обеспечивает интерфейс между локальным chef-repo и сервером Chef Infra. Командная утилита knife должна быть настроена для взаимодействия с сервером Chef Infra, а также с любой другой инфраструктурой в вашей организации.

Для настройки knife для взаимодействия с сервером Chef Infra в первый раз выполните knife configure для создания файла учетных данных Chef Infra в ~/.chef/credentials.

Предыдущие настройки Chef Infra рекомендовали настройку knife с файлом config.rb. Настройка knife с config.rb всё ещё действительна, но только для работы с одним сервером Chef Infra и одной организацией Chef Infra.

mkdir ~/.chef
touch ~/.chef/config.rb
New-Item -Path "c:\" -Name ".chef" -ItemType "directory"
New-Item -ItemType "file" -Path "c:\.chef\config.rb"

Конфигурация config.rb может включать произвольный код Ruby для расширения конфигурации за пределами статических значений. Это может использоваться для загрузки переменных окружения с рабочей станции. Это позволяет написать один файл config.rb, который может использоваться всеми пользователями в вашей организации. Этот единственный файл также может быть добавлен в ваш chef-repo, что позволит пользователям загружать разные файлы config.rb в зависимости от того, из какого chef-repo они выполняют команды. Это особенно полезно, когда каждый chef-repo указывает на другой сервер Chef или организацию.

Пример config.rb:

current_dir = File.dirname(__FILE__)
  user = ENV['CHEF_USER'] || ENV['USER']
  node_name                user
  client_key               "#{ENV['HOME']}/chef-repo/.chef/#{user}.pem"
  chef_server_url          "https://api.opscode.com/organizations/#{ENV['ORGNAME']}"
  syntax_check_cache_path  "#{ENV['HOME']}/chef-repo/.chef/syntax_check_cache"
  cookbook_path            ["#{current_dir}/../cookbooks"]
  cookbook_copyright       "Your Company, Inc."
  cookbook_license         "Apache-2.0"
  cookbook_email           "cookbooks@yourcompany.com"

  # Amazon AWS
  knife[:aws_access_key_id] = ENV['AWS_ACCESS_KEY_ID']
  knife[:aws_secret_access_key] = ENV['AWS_SECRET_ACCESS_KEY']

Поддержка профилей с Chef 13.7

Профили Knife упрощают переключение между серверами Chef Infra или между организациями на одном сервере Chef Infra. Профили Knife — это альтернатива config.rb — вы не можете использовать их оба.

Настройте профили knife, добавив их в файл .chef/credentials в вашем домашнем каталоге на вашей рабочей станции. Файл credentials имеет формат TOML. Каждый профиль перечислен как отдельная таблица с именем вашего выбора и сопровождается key = value парами. Ключи соответствуют любому параметру, разрешённому в файле config.rb.

Пути к файлам, такие как client_key или validator_key, являются относительными по отношению к ~/.chef , если вы не предоставили абсолютный путь. Определите клиентов с помощью client_name (предпочтительно) или node_name.

Сохраните данные учетных данных для использования в режиме целевого сервера (chef-client --target switch.example.org) в качестве отдельного профиля в файле учетных данных. Используйте имя DNS целевого сервера в качестве имени профиля и заключите его в одинарные кавычки, если имя содержит точку. Например: ['switch.example.org']. Ключи, являющиеся допустимыми параметрами конфигурации, передаются в train, такие как port.

# Example .chef/credentials file
[default]
client_name = "barney"
client_key = "barney_rubble.pem"
chef_server_url = "https://api.chef.io/organizations/bedrock"

# a 'config context' such as knife can be is configured as a separate table
[default.knife]
ssh_user = 'ubuntu' # this would have been knife[:ssh_user] in your config.rb
aws_profile = 'engineering'
use_sudo = true

# a client_key may also be specified inline as in this example
[dev]
client_name = "admin"
client_key = """
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCqGKukO1De7zhZj6EXAMPLEKEY
...ABC123=
-----END RSA PRIVATE KEY-----
"""
validator_key = "test-validator.pem"
chef_server_url = "https://api.chef-server.dev/organizations/test"

['web.preprod']
client_name = "brubble"
client_key = "preprod-brubble.pem"
chef_server_url = "https://preprod.chef-server.dev/organizations/preprod"

['switch.example.org']
user = "cisco"
password = "cisco"
enable_password = "cisco"

Существует четыре способа выбрать используемый профиль, упорядоченные по приоритету:

  1. Передайте параметр --profile команде knife, например knife node list --profile dev.
  2. Установите имя профиля в переменной окружения CHEF_PROFILE.
  3. Запишите имя профиля в файл ~/.chef/context.
  4. В противном случае knife использует профиль «default».

Настройка Knife

Поддержка knife config с Chef 14.4

Используйте команду knife config для управления вашими профилями knife.

Перечислите свои профили с помощью команды knife config list-profiles.

Например:

knife config list-profiles

Возвращает что-то вроде:

## Profile              Client   Key                          Server
 default             barney   ~/.chef/barney_rubble.pem    https://api.chef.io/organizations/bedrock
 dev                 admin    ~/.chef/admin.pem            https://api.chef-server.dev/organizations/test
 web.preprod         brubble  ~/.chef/preprod-brubble.pem  https://preprod.chef-server.dev/organizations/preprod
 switch.example.org  btm      ~/.chef/btm.pem              https://localhost:443

Строка, начинающаяся со звездочки, является текущим выбранным профилем. Для изменения текущего профиля выполните команду knife config use-profile NAME, которая запишет имя профиля в файл ~/.chef/context.

Выполнение knife config get-profile выводит имя текущего выбранного профиля.

Если вам нужно устранить неполадки с настройками, вы можете проверить значение, используемое knife, с помощью команды knife config get KEY, например:

knife config get chef_server_url
Loading from credentials file /home/barney/.chef/credentials
chef_server_url: https://api.chef-server.dev/organizations/test

Файл конфигурации config.rb

Файл config.rb содержит настройки для командной утилиты knife и всех установленных плагинов knife. См. документацию config.rb для получения полного списка параметров конфигурации.

Приоритет пути загрузки

Файл config.rb загружается каждый раз при вызове команды knife в следующем порядке загрузки:

  • Из указанного места с флагом --config
  • Из указанного места с переменной окружения $KNIFE_HOME , если она установлена
  • Из файла config.rb в текущем рабочем каталоге, например, ./config.rb
  • Из файла config.rb в каталоге .chef в текущем рабочем каталоге, например, ./.chef/config.rb
  • Из файла config.rb в каталоге .chef, расположенном на один каталог выше текущего рабочего каталога, например, ../.chef/config.rb
  • Из ~/.chef/config.rb (платформы macOS и Linux) или c:\Users\<username>\.chef (платформа Microsoft Windows)

Примечание

В Microsoft Windows файл config.rb расположен по адресу: %HOMEDRIVE%:%HOMEPATH%\.chef (например, c:\Users\<username>\.chef). В скрипте для Microsoft Windows используйте: %USERPROFILE%\chef-repo\.chef.

Конфигурация config.rb в репозитории Chef

Используйте команду knife configure для генерации вашего начального файла config.rb в вашем домашнем каталоге. См. knife configure для получения подробностей.

Настройка текстового редактора

Некоторые команды knife, такие как knife data bag edit, требуют редактирования информации как данных JSON с помощью текстового редактора. Например, следующая команда:

knife data bag edit admins admin_name

открывает текстовый редактор с данными, похожими на:

{
  "id": "admin_name"
}

Затем внесите изменения в этот файл:

{
  "id": "Justin C."
  "description": "I am passing the time by letting time pass over me ..."
}

Тип текстового редактора, используемого knife, можно настроить, добавив запись в ваш файл config.rb или установив переменную окружения EDITOR. Например, для настройки knife на открытие текстового редактора vim добавьте следующее в ваш файл config.rb:

knife[:editor] = "/usr/bin/vim"

Когда путь к файлу в Microsoft Windows заключён в двойные кавычки (« «), тот же обратный слэш (\) , который используется для определения разделителя пути к файлу, также используется в Ruby для определения управляющего символа. Файл config.rb — это файл Ruby; поэтому разделители пути к файлам должны быть экранированы. Кроме того, пробелы в пути к файлу должны быть заменены на ~1 , чтобы длина каждого раздела в пути к файлу не превышала 8 символов. Например, если выбранным текстовым редактором является EditPad Pro и он расположен по следующему пути:

C:\\Program Files (x86)\EditPad Pro\EditPad.exe

настройка в файле config.rb будет похожей на:

knife[:editor] = "C:\\Progra~1\\EditPa~1\\EditPad.exe"

Один из способов обойти проблему с двойными и одинарными кавычками — поместить одинарные кавычки снаружи двойных. Например, для Notepad++:

knife[:editor] = '"C:\Program Files (x86)\Notepad++\notepad++.exe" -nosession -multiInst'

для Sublime Text:

knife[:editor] = '"C:\Program Files\Sublime Text 2\sublime_text.exe" --wait'

для TextPad:

knife[:editor] = '"C:\Program Files (x86)\TextPad 7\TextPad.exe"'

и для vim:

knife[:editor] = '"C:\Program Files (x86)\vim\vim74\gvim.exe"'

Использование кавычек

Команда текстового редактора не может содержать пробелы, которые не заключены в кавычки. Команда может быть введена с двойными кавычками (« «) или одинарными кавычками (' ‘), но это должно делаться последовательно, как показано в примерах выше.

© 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_setup/

Spec-Zone.ru

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