Spec-Zone.ru › Chef 18

Настройка 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 Server.

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/knife_setup/

Spec-Zone.ru

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