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, которая должна быть установлена на целевом узле bootstrap. См. документацию 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 и любые 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.
При запуске операции загрузки без валидатора вывод будет похож на:
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на URLinstall.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/workstation/knife_bootstrap/