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 можно автоматически скопировать в каталог
/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 в режиме 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 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 FILEJSON-файл, который должен быть добавлен к первому запуску 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_JSONJSON-строка, содержащая список хранилищ и элементов, которые необходимо обновить. –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).
Примечание
Запуск без валидатора
Файл 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 с использованием 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/