knife bootstrap
Узел — это любое физическое, виртуальное или облачное устройство, которое настраивается и поддерживается экземпляром 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)
Параметры
Примечание
Общие параметры подключения
-
-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 URLURL пользовательского скрипта установки.
-
-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_IPURL или 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).
Примечание
Запуск без валидатора
Файл 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на 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/