Spec-Zone.ru › Chef 18

knife bootstrap

[редактировать на GitHub]

Узел — это любое физическое, виртуальное или облачное устройство, которое настраивается и поддерживается экземпляром 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)

Параметры

Примечание

Ознакомьтесь со списком общих параметров, доступных для этой (и всех) подкоманд и плагинов 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

Количество секунд ожидания подтверждения каждой операции подключения во время выполнения 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).

Примечание

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

При запуске беспорольного 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:

  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