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.

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