Spec-Zone.ru › Chef 16

knife bootstrap

[править на 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 Server могут быть скопированы в каталог /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 проверки подлинности по умолчанию при использовании метода «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 Server.

--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 Server. При 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 Server, подключения к S3 и любые HTTPS-URL ресурсов remote_file, используемых в процессе работы Chef Infra Client. Это рекомендуемое значение.

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

-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.

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

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 с использованием файла политики и группы политики

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

Spec-Zone.ru

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