Spec-Zone.ru › Chef 16

knife bootstrap

[edit on GitHub]

Узел — это любое физическое, виртуальное или облачное устройство, которое настраивается и поддерживается экземпляром Chef Infra Client. Настройка выполняет установку Chef Infra Client на целевую систему, чтобы она могла работать как клиент и настраивает узел для связи с сервером Chef Infra Server. Существует два способа сделать это:

  • Запустите команду knife bootstrap с рабочей станции.
  • Выполните автономную установку для настройки с самого узла без необходимости подключения SSH или WinRM.

Используйте подкоманду knife bootstrap для выполнения операции настройки, которая устанавливает Chef Infra Client на целевую систему. Операция настройки должна указать IP-адрес или FQDN целевой системы.

Учитываемые моменты:

  • Knife скопирует содержимое каталога ~/.chef/client.d на вашей локальной рабочей станции в каталог client.d на устройстве, которое настраивается с помощью команды knife bootstrap. Также можно установить параметр client_d_dir в файле config.rb для указания произвольного каталога вместо ~/.chef/client.d, и содержимое этого каталога будет скопировано на настраиваемое устройство. Все конфигурационные файлы внутри каталога client.d будут скопированы в каталог /etc/chef/client.d на настраиваемой системе.
  • Сертификаты SSL с локального сервера Chef Infra можно автоматически скопировать в каталог /trusted_certs_dir на вашей локальной рабочей станции, выполнив knife ssl fetch. Эти сертификаты используются во время операций knife для связи с сервером Chef Infra Server.
  • По умолчанию knife bootstrap попытается использовать ssh для подключения к целевому узлу. Используйте -o для указания другого протокола, например, winrm для узлов Windows.

Синтаксис

У этой подкоманды следующий синтаксис:

knife bootstrap FQDN_or_IP_ADDRESS (options)

Параметры

Примечание

Просмотрите список общих параметров, доступных для этой (и всех) подкоманд и плагинов knife.

Общие параметры подключения

-U USERNAME, --connection-user USERNAME

Аутентификация на целевом узле с помощью этой учетной записи пользователя.

-P PASSWORD, --connection-password PASSWORD

Аутентификация на целевом узле с помощью этого пароля.

-p PORT, --connection-port PORT

Порт на целевом узле для подключения.

-o PROTOCOL, --connection-protocol PROTOCOL

Протокол для подключения к целевому узлу. Доступны ssh или winrm. ssh — по умолчанию.

-W SECONDS, --max-wait SECONDS

Максимальное время ожидания установления первоначального подключения.

--session-timeout SECONDS

Количество секунд ожидания подтверждения каждой операции подключения во время выполнения настройки.

Параметры подключения WinRM

--winrm-ssl-peer-fingerprint FINGERPRINT

Отпечаток сертификата SSL, ожидаемый от целевого узла.

-f CA_TRUST_PATH, --ca-trust-file CA_TRUST_PATH

Файл доверия к сертификату центру сертификации (CA), используемый для SSL-транспорта.

--winrm-no-verify-cert

Не проверять сертификат SSL целевого узла для WinRM.

--winrm-ssl

Использовать SSL в подключении WinRM.

-w AUTH-METHOD, --winrm-auth-method AUTH-METHOD

Метод аутентификации WinRM для использования.

--winrm-basic-auth-only

Для аутентификации WinRM в режиме basic при использовании метода аутентификации ‘ssl’.

-R KERBEROS_REALM, --kerberos-realm KERBEROS_REALM

Сфера Kerberos, используемая для аутентификации.

-S KERBEROS_SERVICE, --kerberos-service KERBEROS_SERVICE

Сервис Kerberos, используемый для аутентификации.

Параметры подключения SSH

-G GATEWAY, --ssh-gateway GATEWAY

SSH туннель или шлюз, который используется для запуска действия настройки на машине, недоступной с рабочей станции.

--ssh-gateway-identity SSH_GATEWAY_IDENTITY

Файл SSH-ключей, используемый для аутентификации шлюза.

-A, --ssh-forward-agent

Включить SSH-переадресацию агента.

-i IDENTITY_FILE, --ssh-identity-file IDENTITY_FILE

Файл SSH-ключей, используемый для аутентификации. Рекомендуется аутентификация на основе ключей.

ssh_verify_host_key, --ssh-verify-host-key VALUE

Проверка хост-ключа. По умолчанию ‘всегда’

Параметры установки Chef

--bootstrap-version VERSION

Версия Chef Infra Client для установки.

--bootstrap-install-command COMMAND

Выполнение пользовательской последовательности команд установки для Chef Infra Client. Этот параметр нельзя использовать в той же команде с --bootstrap-curl-options или --bootstrap-wget-options.

--bootstrap-curl-options OPTIONS

Произвольные параметры, которые будут добавлены к команде настройки при использовании cURL. Этот параметр нельзя использовать в той же команде с --bootstrap-install-command.

--bootstrap-wget-options OPTIONS

Произвольные параметры, которые будут добавлены к команде настройки при использовании GNU Wget. Этот параметр нельзя использовать в той же команде с --bootstrap-install-command.

--bootstrap-preinstall-command COMMANDS

Пользовательские команды, выполняемые перед установкой Chef Infra Client.

--bootstrap-url URL

URL пользовательского скрипта установки.

-m URL, --msi-url URL

Расположение MSI Chef Infra Client. Шаблоны по умолчанию будут отдавать предпочтение загрузке из этого расположения. MSI будет загружен с chef.io, если не указан.

--sudo

Выполнение операции настройки с sudo.

--sudo-preserve-home

Сохранение среды HOME пользователя без прав root.

--use-sudo-password

Выполнение операции настройки с sudo; укажите пароль с помощью параметра -P (или --ssh-password).

-t TEMPLATE, --bootstrap-template TEMPLATE

Используемый шаблон настройки. Это может быть имя шаблона настройки — например, chef-full — или полный путь к шаблону Embedded Ruby (ERB), который определяет пользовательскую настройку. Значение по умолчанию: chef-full, который устанавливает Chef Infra Client с помощью установщика Chef Infra на всех поддерживаемых платформах.

Параметры прокси

--bootstrap-no-proxy NO_PROXY_URL_or_IP

URL или IP-адрес, который указывает местоположение, которое не должно быть проксировано во время настройки.

--bootstrap-proxy PROXY_URL

Сервер прокси для узла, который является целевым узлом операции настройки.

--bootstrap-proxy-pass PROXY_PASS

Пароль аутентификации прокси для настраиваемого узла.

--bootstrap-proxy-user PROXY_USER

Имя пользователя аутентификации прокси для настраиваемого узла.

Параметры узла

-N NAME, --node-name NAME

Уникальный идентификатор узла.

Примечание

Этот параметр необходим для настройки без валидатора.
-E ENVIRONMENT, --environment ENVIRONMENT

Имя среды, которая должна быть применена.

-r RUN_LIST, --run-list RUN_LIST

Список ролей и/или рецептов, разделяемых запятыми, которые необходимо применить.

--secret SECRET

Ключ шифрования, который используется для значений, содержащихся в элементе пакета данных.

--secret-file FILE

Путь к файлу, содержащему ключ шифрования.

--hint HINT_NAME[=HINT_FILE]

Подсказка Ohai, которая должна быть установлена на целевой узел настройки. Обратитесь к документации Ohai для получения дополнительной информации. HINT_FILE — это имя JSON-файла. HINT_NAME — это имя подсказки в JSON-файле. Используйте несколько параметров --hint для указания нескольких подсказок.

-j JSON_ATTRIBS, --json-attributes JSON_ATTRIBS

JSON-строка, которая добавляется к первому запуску Chef Infra Client.

--json-attribute-file FILE

JSON-файл, который должен быть добавлен к первому запуску Chef Infra Client.

--[no-]fips

Позволяет OpenSSL принудительно применять проверку безопасности FIPS во время выполнения Chef Infra Client.

--policy-group POLICY_GROUP

Имя группы политик, которая существует на сервере Chef Infra.

--policy-name POLICY_NAME

Имя политики, определённой настройкой имени в файле Policyfile.rb.

Параметры chef-vault

--bootstrap-vault-file VAULT_FILE

Путь к JSON-файлу, содержащему список хранилищ и элементов, которые необходимо обновить.

--bootstrap-vault-item VAULT_ITEM

Одно хранилище и элемент для обновления в виде vault:item.

--bootstrap-vault-json VAULT_JSON

JSON-строка, содержащая список хранилищ и элементов, которые необходимо обновить. –bootstrap-vault-json ‘{ “vault1”: [“item1”, “item2”], “vault2”: “item2” }’

Параметры проверки ключей

--[no-]host-key-verify

Использовать --no-host-key-verify для отключения проверки ключа хоста. Значение по умолчанию: --host-key-verify.

--[no-]node-verify-api-cert

Проверьте сертификат SSL на сервере Chef Infra. Когда true, Chef Infra Client всегда проверяет сертификат SSL. Когда false, Chef Infra Client использует значение ssl_verify_mode для определения, требует ли сертификат SSL проверки. Если этот параметр не указан, используется настройка verify_api_cert в файле конфигурации.

--node-ssl-verify-mode MODE

Установите режим проверки для HTTPS-запросов. Доступные варианты: none или peer.

Используйте none для отключения проверки SSL-сертификатов.

Используйте peer для проверки всех SSL-сертификатов, включая подключения к серверу Chef Infra, подключения к S3 и любые HTTPS-URL-адреса remote_file, используемые в Chef Infra Client run. Это рекомендуемое значение.

Параметры отладки

-V -V

Запустите начальный запуск Chef Infra Client с уровнем логов debug (например, chef-client -l debug).

-V -V -V

Запустите начальный запуск Chef Infra Client с уровнем логов trace (например, chef-client -l trace).

Примечание

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

Запуск без валидатора

Файл ORGANIZATION-validator.pem обычно добавляется в каталог .chef на рабочей станции. Когда узел запущен с этой рабочей станции, ORGANIZATION-validator.pem используется для аутентификации вновь созданного узла на сервере Chef Infra во время начального запуска Chef Infra Client. Возможен запуск узла с использованием файла USER.pem вместо ORGANIZATION-validator.pem. Это называется «запуском без валидатора».

Чтобы создать узел с помощью файла USER.pem, просто удалите файл ORGANIZATION-validator.pem на рабочей станции. Например:

rm -f /home/lamont/.chef/myorg-validator.pem

а затем внесите следующие изменения в файл config.rb:

  • Удалите настройку validation_client_name
  • Измените настройку validation_key на значение, которое не является путем к существующему файлу ORGANIZATION-validator.pem. Например: /nonexist.

Пока на рабочей станции, с которой будет инициирован запуск без валидатора, присутствует файл USER.pem, операция запуска пройдёт и будет использовать файл USER.pem вместо файла ORGANIZATION-validator.pem.

При выполнении операции запуска без валидатора knife bootstrap вывод будет похож на:

desktop% knife bootstrap 10.1.1.1 -N foo01.acme.org \
  -E dev -r 'role[base]' -j '{ "foo": "bar" }' \
  --ssh-user vagrant --sudo
Node foo01.acme.org exists, overwrite it? (Y/N)
Client foo01.acme.org exists, overwrite it? (Y/N)
Creating new client for foo01.acme.org
Creating new node for foo01.acme.org
Connecting to 10.1.1.1
10.1.1.1 Starting first Chef Client run...
[....etc...]

Примечание

Параметр --node-name необходим для запуска без валидатора.

Режим FIPS

Федеральные стандарты обработки информации (FIPS) — это стандарт компьютерной безопасности правительства США, определяющий требования к криптографии. Текущая версия стандарта — FIPS 140-2. Chef Infra Client можно настроить так, чтобы OpenSSL выполнял проверку безопасности FIPS во время работы Chef Infra Client. Это отключит криптографию, явно запрещенную в программном обеспечении FIPS, включая определенные шифры и алгоритмы хеширования. Любая попытка использовать запрещенную криптографию приведет к возникновению исключения Chef Infra Client во время выполнения.

Примечание

Chef использует хеши MD5 для уникальной идентификации файлов, хранящихся на сервере Chef Infra. MD5 используется только для генерации уникального идентификатора хеша и не используется для каких-либо криптографических целей.

Примечания о режиме FIPS:

  • Может быть включён для узлов, работающих на платформах Microsoft Windows и Enterprise Linux
  • Должен быть включён только для сред, которые требуют соответствия FIPS 140-2

Запуск узла с использованием режима FIPS

knife bootstrap 192.0.2.0 -P vanilla -x root -r 'recipe[apt],recipe[xfs],recipe[vim]' --fips

что отобразит примерно следующее:

OpenSSL FIPS 140 mode enabled
...
192.0.2.0 Chef Infra Client finished, 12/12 resources updated in 78.942455583 seconds

Пользовательские шаблоны

Шаблон chef-full по умолчанию использует установщик Chef. Для большинства операций запуска, независимо от платформы целевого узла, использование дистрибутива chef-full является лучшим подходом для установки Chef Infra Client на целевой узел. В некоторых ситуациях может потребоваться пользовательский шаблон.

Например, стандартная операция запуска полагается на подключение к Интернету для получения дистрибутива на целевой узел. Если целевой узел не имеет доступа к Интернету, можно использовать пользовательский шаблон для определения конкретного расположения дистрибутива, чтобы целевой узел мог получить к нему доступ во время операции запуска. Пример ниже покажет, как создать шаблон запуска, использующий пользовательский хранилище артефактов для пакетов Chef и скриптов установки, а также зеркало RubyGem:

  1. Файл пользовательского шаблона запуска должен находиться в каталоге bootstrap/, который обычно расположен в каталоге ~/.chef/ на локальной рабочей станции. Перейдите в каталог .chef и создайте в нём каталог bootstrap:

    mkdir bootstrap
    
  2. Перейдите в каталог bootstrap и создайте пустой файл шаблона; в этом примере будет использоваться имя шаблона template.erb:

    touch template.erb
    
  3. Оставаясь в каталоге bootstrap, выполните следующую команду для копирования конфигурации chef-full в новый шаблон:

    find /opt/chef-workstation/embedded/lib/ruby -type f -name chef-full.erb -exec cat {} \; > template.erb
    

    Эта команда ищет файл шаблона chef-full в /opt/chef-workstation/embedded/lib/ruby, а затем выводит содержимое файла в template.erb. Если вы использовали другое имя файла шаблона, замените template.erb на имя созданного вами файла шаблона.

  4. Обновите template.erb и замените omnitruck.chef.io на URL скрипта install.sh в вашем хранилище артефактов:

    install_sh="<%= knife_config[:bootstrap_url] ? knife_config[:bootstrap_url] : "http://packages.example.com/install.sh" %>"
    
  5. Оставаясь в текстовом редакторе, найдите следующую строку внизу файла template.erb:

    cat > /etc/chef/client.rb <<'EOP'
    <%= config_content %>
    EOP
    

    Ниже неё добавьте следующее, заменив gems.example.com на URL вашего зеркала gem:

    cat >> /etc/chef/client.rb <<'EOP'
    rubygems_url "http://gems.example.com"
    EOP
    

    Это добавляет соответствующую настройку rubygems_url в файл /etc/chef/client.rb , созданный во время запуска, что гарантирует использование ваших внутренних зеркал gem.

Запуск с пользовательским шаблоном

Можно использовать параметр --bootstrap-template с подкомандой knife bootstrap для указания имени файла пользовательского шаблона запуска:

knife bootstrap 123.456.7.8 -x username -P password --sudo --bootstrap-template "template"

Альтернативно, можно использовать параметр knife[:bootstrap_template] внутри config.rb для указания шаблона, который knife bootstrap будет использовать по умолчанию при запуске узла. Он должен указывать на ваш пользовательский шаблон в каталоге bootstrap:

knife[:bootstrap_template] = "#{current_dir}/bootstrap/template.erb"

Примеры

Следующие примеры демонстрируют использование этой подкоманды knife:

Запуск узла

knife bootstrap 192.0.2.0 -P vanilla -x root -r 'recipe[apt],recipe[xfs],recipe[vim]'

что отобразит примерно следующее:

...
192.0.2.0 Chef Infra Client finished, 12/12 resources updated in 78.942455583 seconds

Проверьте с помощью knife node show:

knife node show debian-buster.int.domain.org

что вернёт примерно следующее:

Node Name:   debian-buster.int.domain.org
Environment: _default
FQDN:        debian-buster.int.domain.org
IP:          192.0.2.0
Run List:    recipe[apt], recipe[xfs], recipe[vim]
Roles:
Recipes:     apt, xfs, vim, apt::default, xfs::default, vim::default
Platform:    debian 10.0
Tags:

Использование пароля SSH

knife bootstrap 192.0.2.0 -x username -P PASSWORD --sudo

Использование файла, содержащего закрытый ключ

knife bootstrap 192.0.2.0 -x username -i ~/.ssh/id_rsa --sudo

Указание параметров при использовании cURL

knife bootstrap --bootstrap-curl-options "--proxy http://myproxy.com:8080"

Указание параметров при использовании GNU Wget

knife bootstrap --bootstrap-wget-options "-e use_proxy=yes -e http://myproxy.com:8080"

Указание пользовательской последовательности команд установки

knife bootstrap --bootstrap-install-command "curl -l http://mycustomserver.com/custom_install_chef_script.sh | sudo bash -s --"

Запуск узла Windows через WinRM с использованием списка выполнения и среды

knife bootstrap -o winrm 123.456.7.8 -U username -P 'PASSWORD' --node-name NODE_NAME --run-list 'recipe[cookbook]' -E ENV_NAME

Запуск узла Windows через WinRM с использованием policyfile и группы политик

knife bootstrap -o winrm 123.456.7.8 -U username -P 'PASSWORD' --node-name NODE_NAME --policy-name PF_NAME --policy-group PG_NAME

Запуск узла Windows с сокращенным синтаксисом

knife bootstrap winrm://username:PASSWORD@123.456.7.8 --run-list 'recipe[cookbook]' -E ENV_NAME

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

Spec-Zone.ru

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