knife bootstrap
Узел — это любое физическое, виртуальное или облачное устройство, которое настраивается и поддерживается экземпляром Chef Infra Client. Запуск bootstrap устанавливает Chef Infra Client на целевую систему, чтобы она работала как клиент, и настраивает узел для связи с Chef Infra Server. Существует два способа сделать это:
- Запустите команду
knife bootstrapсо своей рабочей станции. - Выполните автономную установку для запуска bootstrap с самого узла, без необходимости подключения SSH или WinRM.
Используйте подкоманду knife bootstrap для выполнения операции bootstrap, которая устанавливает Chef Infra Client на целевую систему. Операция bootstrap должна указывать 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)
Параметры
Примечание
Общие параметры подключения
-
-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-
Количество секунд ожидания подтверждения каждой операции подключения во время выполнения bootstrap.
Параметры подключения 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-туннель или шлюз, используемый для запуска действия bootstrap на машине, недоступной с рабочей станции.
--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 -
Проверять хост-ключ. По умолчанию ‘always’
Параметры установки Chef
--bootstrap-version VERSION-
Версия Chef Infra Client для установки.
--bootstrap-install-command COMMAND-
Выполнить пользовательскую последовательность команд установки для Chef Infra Client. Этот параметр нельзя использовать в той же команде с
--bootstrap-curl-optionsили--bootstrap-wget-options. --bootstrap-curl-options OPTIONS-
Произвольные параметры, которые нужно добавить к команде bootstrap при использовании cURL. Этот параметр нельзя использовать в той же команде с
--bootstrap-install-command. --bootstrap-wget-options OPTIONS-
Произвольные параметры, которые нужно добавить к команде bootstrap при использовании 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-
Выполнить операцию bootstrap с sudo.
--sudo-preserve-home-
Сохранить среду
HOMEпользователя, не являющегося root. --use-sudo-password-
Выполнить операцию bootstrap с sudo; укажите пароль с помощью параметра
-P(или--ssh-password). -
-t TEMPLATE,--bootstrap-template TEMPLATE -
Шаблон bootstrap для использования. Это может быть имя шаблона bootstrap (например,
chef-full) или полный путь к шаблону Embedded Ruby (ERB), который определяет пользовательский bootstrap. Значение по умолчанию:chef-full, который устанавливает Chef Infra Client с помощью установщика Chef Infra на всех поддерживаемых платформах.
Параметры прокси
--bootstrap-no-proxy NO_PROXY_URL_or_IP-
URL или IP-адрес, указывающий на место, которое не должно проксироваться во время bootstrap.
--bootstrap-proxy PROXY_URL-
Сервер прокси для узла, который является целью операции bootstrap.
--bootstrap-proxy-pass PROXY_PASS-
Пароль аутентификации прокси для узла, который запускается.
--bootstrap-proxy-user PROXY_USER-
Имя пользователя аутентификации прокси для узла, который запускается.
Параметры узла
-
-N NAME,--node-name NAME -
Уникальный идентификатор узла.
Примечание
Этот параметр необходим для bootstrap без валидатора. -
-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-
Имя политики, определенное параметром 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 и любые URL-адреса HTTPS-ресурса 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).
Примечание
Беспарольный запуск
Файл 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:
-
Файл настраиваемого шаблона запуска должен находиться в каталоге
bootstrap/, который обычно находится внутри каталога~/.chef/на локальной рабочей станции. Перейдите в каталог.chefи создайте в нём каталогbootstrap.mkdir bootstrap -
Перейдите в каталог
bootstrapи создайте пустой файл шаблона; в этом примере для имени шаблона будет использоватьсяtemplate.erb.touch template.erb -
Оставаясь в каталоге
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на имя созданного шаблона. -
Обновите
template.erb, заменивomnitruck.chef.ioна URL скриптаinstall.shв вашем хранилище артефактов:install_sh="<%= knife_config[:bootstrap_url] ? knife_config[:bootstrap_url] : "http://packages.example.com/install.sh" %>" -
В вашем текстовом редакторе найдите следующую строку вблизи нижней части файла
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/