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, которая должна быть установлена на целевом узле 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).

Примечание

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

При запуске операции загрузки без валидатора вывод будет похож на:

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/workstation/knife_bootstrap/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API