Spec-Zone.ru › Chef 17

kitchen.yml

[править на GitHub]

Используйте Test Kitchen, чтобы автоматически тестировать данные кулинарных книг на любых комбинациях платформ и наборов тестов:

  • Определяются в файле kitchen.yml
  • Используют архитектуру плагинов драйверов
  • Поддерживают тестирование кулинарных книг на многих облачных провайдерах и технологиях виртуализации
  • Поддерживают все распространённые фреймворки тестирования, используемые сообществом Ruby
  • Используют комплексный набор базовых образов, предоставленных Bento

Используйте файл kitchen.yml для определения того, что необходимо для запуска Test Kitchen, включая драйверы, провайдеры, платформы и наборы тестов.

Примечание

В данном разделе подробно описаны функции, входящие в состав Chef Workstation. Подробнее о Test Kitchen см. на странице https://kitchen.ci/docs/getting-started/introduction/.

Синтаксис

Базовая структура файла kitchen.yml:

driver:name:driver_nameprovisioner:name:provisioner_nameverifier:name:verifier_nametransport:name:transport_nameplatforms:- name:platform-versiondriver:name:driver_name- name:platform-versionsuites:- name:suite_namerun_list:- recipe[cookbook_name::recipe_name]attributes:{foo:"bar"}excludes:- platform-version- name:suite_namedriver:name:driver_namerun_list:- recipe[cookbook_name::recipe_name]attributes:{foo:"bar"}includes:- platform-version

где:

  • driver_name — имя драйвера, который будет использоваться для создания экземпляров платформ, используемых при тестировании кулинарных книг. Это драйвер по умолчанию для всех платформ и наборов тестов кроме случаев, когда платформа или набор тестов явно указывают driver, чтобы переопределить драйвер по умолчанию для этой платформы или набора; драйвер, указанный для набора, переопределяет драйвер, заданный для платформы

  • provisioner_name — способ моделирования Chef Infra Client во время тестирования. chef_zero и chef_solo — наиболее распространённые провайдеры, используемые для тестирования кулинарных книг

  • verifier_name — указывает, какое приложение использовать при запуске тестов, например, inspec

  • transport_name — указывает транспорт для выполнения команд удалённо на тестовом экземпляре. winrm — транспорт по умолчанию для Windows. Транспорт ssh — по умолчанию для всех остальных операционных систем.

  • platform-version — имя платформы, на которой Test Kitchen будет выполнять тестирование кулинарных книг, например, ubuntu-20.04 или centos-7; в зависимости от платформы могут потребоваться дополнительные сведения о драйвере, например, имена экземпляров и URL-адреса, используемые с облачными платформами, такими как OpenStack или Amazon EC2

  • platforms может определять атрибуты Chef Infra Server, общие для набора наборов тестов

  • suites — набор наборов тестов, при этом каждый suite_name определяет аспект кулинарной книги, который необходимо протестировать. Каждый suite_name должен указать список для выполнения, например:

    run_list:
      - recipe[cookbook_name::default]
      - recipe[cookbook_name::recipe_name]
    
  • Каждый suite_name блок может указывать attributes как хеш: { foo: "bar" }

  • Блок suite_name может использовать excludes и includes для исключения/включения одной (или нескольких) платформ. Например:

    excludes:
       - platform-version
       - platform-version       # for additional platforms
    

Пример простого файла kitchen.yml:

driver:name:vagrantprovisioner:name:chef_zeroplatforms:- name:ubuntu-20.04- name:centos-8- name:debian-10suites:- name:defaultrun_list:- recipe[apache::httpd]excludes:- debian-10

Этот файл использует HashiCorp Vagrant в качестве драйвера, для которого не требуется дополнительная настройка, поскольку это драйвер по умолчанию, используемый Test Kitchen, chef-zero в качестве провайдера и единственный (по умолчанию) набор тестов, который выполняется на Ubuntu 20.04 и CentOS 7.

Настройки провайдеров

Test Kitchen может настроить провайдер chef-zero с помощью следующих установок, специфичных для Chef:

Настройка Описание
attributes Атрибуты Chef для использования в наборе
chef_client_path Только провайдер Chef Infra Client.
chef_metadata_url Эта настройка будет устаревшей в будущих версиях.
chef_omnibus_install_options Используется для указания пакета для установки. Возможные значения: -P chef (для Chef Infra Client) и -P chef-workstation (для Chef Infra Client, входящего в состав Chef Workstation). Используйте -n для указания ночной сборки. Например: -P chef-workstation или -n -P chef-workstation. Эта настройка будет устаревшей в будущих версиях. Вместо этого см. настройки product_name, product_version, и channel
chef_omnibus_root Значение по умолчанию: /etc/opt для UNIX и Linux, $env:systemdrive\\opscode\\chef для Microsoft Windows.
chef_omnibus_url URL скрипта install.sh, который установит Chef Infra Client на тестируемую машину. Значение по умолчанию: https://omnitruck.chef.io/install.sh. Эта настройка будет устаревшей в будущих версиях.
chef_solo_path Только провайдер chef-solo.
chef_zero_host Только провайдер Chef Infra Client.
chef_zero_port Только провайдер Chef Infra Client. Порт, на котором chef-zero должен прослушивать.

client_rb

Только провайдер Chef Infra Client. Список установок файла client.rb. Например:

client_rb:
log_level: :warn
clients_path Относительный путь к каталогу, в котором хранятся данные клиента. Эти данные должны быть определены в формате JSON.
cookbook_files_glob Шаблон файла (glob), который соответствует файлам, рассматриваемым как часть кулинарной книги. (Как правило, это значение не нужно изменять по умолчанию.)
data_path Используется для указания пути, из которого файлы, не относящиеся к кулинарной книге, копируются в экземпляр Kitchen.
data_bags_path Относительный путь к каталогу, в котором определены пакеты данных и элементы пакетов данных. Эти данные должны быть структурированы так, как если бы они находились в chef-repo.
deprecations_as_errors Установить в true, чтобы обрабатывать предупреждения об устаревании как сообщения об ошибках.
driver Используется для указания драйвера для платформы. Это переопределит драйвер по умолчанию.
enforce_idempotency Используется с multiple_converge > 1. Установите в true для принудительного завершения работы test-kitchen, если последний сходится имеет какие-либо обновлённые ресурсы.
encrypted_data_bag_secret_key_path Путь к файлу ключа RSA, используемому для расшифровки зашифрованных элементов пакетов данных.
environments_path Относительный путь к каталогу, в котором хранятся данные среды. Эти данные должны быть определены в формате JSON.
http_proxy Прокси-сервер для HTTP-соединений.
https_proxy Прокси-сервер для HTTPS-соединений.
no_proxy Список хост-шаблонов, разделённых запятыми, которые следует исключить из проксирования.
install_msi_url Альтернативный URL для пакета MSI Windows, который установит Chef Infra Client на тестируемую машину. Эта настройка будет устаревшей в будущих версиях. Используйте настройку download_url вместо этого.
json_attributes Только провайдер Chef Infra Client.
log_file
multiple_converge Количество попыток схождения узла. По умолчанию 1.
nodes_path Относительный путь к каталогу, в котором находятся данные узла. Эти данные должны быть определены в формате JSON.
require_chef_omnibus Используйте для установки последней версии Chef Infra Client на узел. Установите значение true для установки последней версии, false для отказа от установки Chef Infra Client (предполагается, что он уже установлен на коробке), или спецификатор версии, например, 15.3.12 для установки определённой версии, или просто 15 для установки последнего пакета 15.x. Когда установлено true или номер версии, можно использовать chef_omnibus_url для указания URL install.sh, который устанавливает указанную версию Chef Infra Client. Значение по умолчанию: true. Эта настройка будет устаревшей в будущих версиях. См. настройки product_version и install_strategy.
roles_path Относительный путь к каталогу, в котором находятся данные ролей. Эти данные должны быть определены в формате JSON.
root_path Каталог, в котором Kitchen будет подготавливать всё содержимое на целевом узле. Этот каталог должен быть достаточно большим для хранения всего содержимого и иметь права на запись. (Как правило, это значение не нужно изменять по умолчанию.) Значение по умолчанию: /tmp/kitchen.
ruby_bindir Только провайдер Chef Infra Client.
run_list
solo_rb Только провайдер chef-solo.
retry_on_exit_code Принимает массив кодов завершения, чтобы указать, что kitchen должен повторить команду схождения. Значение по умолчанию: [35, 213].
max_retries Количество попыток повторения схождения до передачи состояния ошибки. Значение по умолчанию: 1.
wait_for_retry Количество секунд, которые нужно ждать между попытками схождения. Значение по умолчанию: 30.

Эти настройки можно добавить в раздел provisioner файла kitchen.yml при использовании провайдера chef-zero или chef-solo.

Новые настройки провайдера

Новое Настройка Описание Значение по умолчанию Заменяет
product_name chef или chef-workstation. Эта настройка должна быть указана для использования новых настроек. Использование этой настройки переопределяет поведение по умолчанию Test Kitchen, основанное на настройке require_chef_omnibus. chef_omnibus_install_options
product_version Номер версии продукта. Поддерживаются частичные номера версий. latest require_chef_omnibus
channel Имя репозитория артефактов. stable, current или unstable. stable chef_omnibus_install_options
install_strategy Стратегия установки продукта. once (Не устанавливать, если обнаружена установка продукта), always или skip. once require_chef_omnibus
download_url Прямой URL пакета. Поддерживаются все платформы. install_msi_url
checksum Необязательная настройка при использовании download_url. Проверяет контрольную сумму SHA256 после загрузки.
platform Переопределить платформу. <автоопределяется>
platform_version Переопределить платформу платформы. <автоопределяется>
architecture Переопределить архитектуру платформы. <автоопределяется>
always_update_cookbooks Обновляет policyfile.lock.json при внесении изменений в кулинарную книгу. Поддерживает true или false <автоопределяется>

Настройки транспорта

Kitchen может настроить транспорт с помощью следующих настроек для перевозок ssh или winrm.

Настройка Описание
connection_retries Максимальное количество попыток повторной попытки после неудачной попытки открытия подключения. По умолчанию 5.
connection_retry_sleep Количество секунд ожидания до попытки установить новое соединение после сбоя.
max_wait_until_ready Максимальное количество попыток определения готовности тестового экземпляра к приёму команд. По умолчанию 600.
password Пароль, используемый для аутентификации на тестовом экземпляре.
port Порт, используемый для подключения к тестовому экземпляру. По умолчанию 22 для транспорта ssh и 5985 или 5986 для winrm с использованием http или https соответственно.
username Имя пользователя, используемое для аутентификации на тестовом экземпляре. По умолчанию administrator для транспорта winrm и root для транспорта ssh. Некоторые драйверы могут изменить это значение по умолчанию.

Эти настройки могут быть добавлены в раздел transport файла kitchen.yml, когда транспорт — SSH:

Настройка Описание
compression Использовать ли сжатие. По умолчанию false.
compression_level По умолчанию 6, если compression равно true.
connection_timeout По умолчанию 15.
keepalive По умолчанию true.
keepalive_interval По умолчанию 60.
max_ssh_sessions Максимальное количество параллельных сессий SSH.
ssh_key Путь к файлу идентификатора ключа SSH.

Эти настройки могут быть добавлены в раздел transport файла kitchen.yml, когда транспорт — WinRM:

Настройка Описание
elevated Когда true, все команды выполняются через запланированную задачу. Это может устранить ошибки «Access denied» связанные с двойной аутентификацией, взаимодействием с обновлениями Windows и установкой некоторых MSI, таких как SQL Server и .NET runtimes. По умолчанию false.
elevated_password Пароль, используемый идентификатором, выполняющим запланированную задачу. Может быть null в случае учетных записей сервиса. По умолчанию password.
elevated_username Идентификатор, под которым выполняется задача. Может также быть установлен для учетных записей служб, таких как System. По умолчанию username.
rdp_port Порт, используемый при создании подключений rdp для команд kitchen login. По умолчанию 3389.
winrm_transport Тип транспорта, используемого winrm, как описано здесь. По умолчанию negotiate. ssl и plaintext также являются допустимыми значениями.

Работа с прокси

Переменные окружения http_proxy, https_proxy, и ftp_proxy учитываются Test Kitchen для прокси. Файл client.rb считывается для поиска настроек конфигурации прокси. Если http_proxy, ftp_proxy, и ftp_proxy указаны в файле client.rb, Chef Infra Client сконфигурирует переменную ENV на основе этих (и связанных) настроек. Например:

http_proxy 'http://proxy.example.org:8080'
http_proxy_user 'myself'
http_proxy_pass 'Password1'

будет установлено:

ENV['http_proxy'] = 'http://myself:Password1@proxy.example.org:8080'

Test Kitchen также поддерживает http_proxy и https_proxy в файле kitchen.yml. Вы можете установить их вручную или прочитать из переменных среды:

driver:name:vagrantprovisioner:name:chef_zero# Set proxy settings manually, orhttp_proxy:'http://user:password@server:port'https_proxy:'http://user:password@server:port'# Read from local environment variableshttp_proxy:<%= ENV['http_proxy'] %>https_proxy:<%= ENV['https_proxy'] %>

Это не установит переменные среды прокси для приложений, отличных от Chef. Плагин Vagrant vagrant-proxyconf можно использовать для установки переменных среды прокси для приложений внутри виртуальной машины.

Настройки Chef Infra Client

Файл kitchen.yml может определять настройки, специфичные для Chef Infra Client, такие как необходимость установки установщика Chef или URL, с которого скачивается Chef Infra Client, или переопределение настроек в файле client.rb:

provisioner:name:chef_zero *or* chef_solorequire_chef_omnibus:truechef_omnibus_url:https://www.chef.io/chef/install.sh...suites:- name:configrun_list:...attributes:chef_client:load_gems:chef-handler-updated-resources:require_name:"chef/handler/updated_resources"config:log_level:":debug"ssl_verify_mode:":verify_peer"start_handlers:[{class:"SimpleReport::UpdatedResources", arguments:[]}]report_handlers:[{class:"SimpleReport::UpdatedResources", arguments:[]}]exception_handlers:[{class:"SimpleReport::UpdatedResources", arguments:[]}]ohai:disabled_plugins:["passwd"]

где:

  • require_chef_omnibus используется для обеспечения того, что установщик Chef будет использован для установки Chef Infra Client на все экземпляры платформ; require_chef_omnibus также может быть установлено в latest, что означает, что для тестирования кулинарной книги будет использована самая последняя версия Chef Infra Client для данной платформы
  • chef_omnibus_url используется для указания URL, с которого скачивается Chef Infra Client
  • Все attributes для набора тестов config содержат специфические настройки client.rb для использования с этим набором тестов

Настройки драйвера

Могут потребоваться настройки конфигурации, специфичные для драйвера. Используйте блок, аналогичный:

driver:name:driver_nameoptional_settings:values

Можно указать специфические optional_settings: values.

Bento

Bento — проект Chef Software, который создаёт базовые тестовые виртуальные машины VirtualBox, Parallels и VMware для нескольких операционных систем для использования с Test Kitchen. По умолчанию Test Kitchen использует базовые образы, предоставляемые Bento, хотя могут быть созданы и пользовательские образы с помощью HashiCorp Packer.

Драйверы

Test Kitchen использует архитектуру плагинов драйверов, чтобы Test Kitchen мог тестировать экземпляры на провайдерах облачных сервисов, таких как Amazon EC2, Google Compute Engine и Microsoft Azure. Вы также можете тестировать на нескольких локальных гипервизорах, таких как VMware, Hyper-V или VirtualBox.

Примечание

Chef Workstation включает в себя множество распространённых драйверов Test Kitchen.

У большинства драйверов есть настройки конфигурации, специфичные для драйвера, которые необходимо добавить в файл kitchen.yml, прежде чем Test Kitchen сможет использовать эту платформу при тестировании кулинарных книг. Сведения об этих настройках, специфичных для драйвера, можно найти в соответствующей документации.

Некоторые популярные драйверы:

Плагин драйвера Описание
kitchen-azurerm Драйвер для Microsoft Azure.
kitchen-cloudstack Драйвер для CloudStack.
kitchen-digitalocean Драйвер для DigitalOcean. Этот драйвер поставляется в Chef Workstation.
kitchen-dokken Драйвер для Docker. Этот драйвер поставляется в Chef Workstation.
kitchen-dsc Драйвер для Windows PowerShell Desired State Configuration (DSC).
kitchen-ec2 Драйвер для Amazon EC2. Этот драйвер поставляется в Chef Workstation.
kitchen-google Драйвер для Google Compute Engine. Этот драйвер поставляется в Chef Workstation.
kitchen-hyperv Драйвер для Microsoft Hyper-V Server. Этот драйвер поставляется в Chef Workstation.
kitchen-openstack Драйвер для OpenStack. Этот драйвер поставляется в Chef Workstation.
kitchen-rackspace Драйвер для Rackspace.
kitchen-vagrant Драйвер для HashiCorp Vagrant. Этот драйвер поставляется в Chef Workstation.

kitchen-vagrant

Драйвер kitchen-vagrant для Kitchen генерирует один Vagrantfile для каждого экземпляра Kitchen в изолированной директории. Драйвер kitchen-vagrant поддерживает VirtualBox и VMware Fusion, требует Vagrant 1.1.0 (или выше) и является драйвером по умолчанию для Test Kitchen.

Ниже приведены атрибуты, используемые для настройки kitchen-vagrant для Chef:

Атрибут Описание
box Обязательно. Используется для указания бокса, на котором будет выполняться Vagrant. Значение по умолчанию: вычисляется из имени платформы экземпляра.
box_check_update Используется для проверки обновлений бокса. Значение по умолчанию: false.
box_url Используется для указания URL, по которому находится настроенный бокс. Значение по умолчанию: вычисляется из имени платформы экземпляра, но только в случае провайдера Vagrant на базе VirtualBox или VMware.
communicator Используется для переопределения настройки config.vm.communicator в Vagrant. Например, когда базовый бокс — это операционная система Microsoft Windows, в которой не установлен и не активирован SSH, Vagrant не сможет загрузиться без пользовательского файла Vagrant. Значение по умолчанию: nil (предполагает доступность SSH).
customize Хэш пар ключ-значение, определяющий настройки, которые должны быть внесены в виртуальную машину Vagrant. Например: customize: memory: 1024 cpuexecutioncap: 50.
guest Используется для указания настройки config.vm.guest в файле Vagrant по умолчанию.
gui Используется для активации графического интерфейса для определенной платформы. Передаётся настройке config.vm.provider в Vagrant, но только в случае провайдера Vagrant на базе VirtualBox или VMware.
network Используется для указания массива настроек сети, которые должны быть применены к виртуальной машине. Значение по умолчанию: []. Например: network: - ["forwarded_port", {guest: 80, host: 8080}] - ["private_network", {ip: "192.168.33.33"}].
pre_create_command Используется для запуска команды непосредственно перед vagrant up --no-provisioner.
provider Используется для указания провайдера Vagrant. Это значение должно соответствовать имени провайдера в Vagrant.
provision Используется для настройки Vagrant при создании экземпляра. Это полезно, если операционная система требует настройки во время настройки. Значение по умолчанию: false.
ssh_key Используется для указания файла закрытого ключа, используемого для аутентификации SSH.
synced_folders Используется для указания набора синхронизированных папок на каждом экземпляре Vagrant. Пути источника относительны к корневому пути Kitchen. Значение по умолчанию: []. Например: synced_folders: - ["data/%{instance_name}", "/opt/instance_data"] - ["/host_path", "/vm_path", "create: true, type: :nfs"].
vagrantfile_erb Используется для указания альтернативной шаблона Vagrant Embedded Ruby (ERB), который будет использоваться этим драйвером.
vagrantfiles Массив путей к одному (или нескольким) файлам Vagrant, которые будут объединены с файлом Vagrant по умолчанию. Пути могут быть абсолютными или относительными к файлу kitchen.yml.
vm_hostname Используется для указания внутреннего имени хоста для экземпляра. Это не требуется при подключении к виртуальной машине Vagrant. Установите это в false, чтобы предотвратить отображение этого значения в файле Vagrant по умолчанию. Значение по умолчанию: вычисляется из имени платформы экземпляра.

Драйвер kitchen-vagrant может предсказывать имя бокса для Vagrant и URL для скачивания, опубликованные Chef. Например:

platforms:
- name: ubuntu-18.04
- name: ubuntu-20.04
- name: centos-7
- name: centos-8
- name: debian-10

что сгенерирует конфигурационный файл, похожий на:

platforms:
- name: ubuntu-18.04
  driver:
    box: bento/ubuntu-18.04
- name: ubuntu-20.04
  driver:
    box: bento/ubuntu-20.04
# ...

Примеры

В следующих примерах показаны фактические файлы kitchen.yml, используемые в поддерживаемых Chef кулинарных книгах.

Chef, Chef Workstation

Следующий пример демонстрирует настройки провайдера, необходимые для установки Chef Workstation и использования версии Chef, встроенной в Chef Workstation, для схождения узла.

Для установки последней версии Chef Workstation:

provisioner:...chef_omnibus_install_options:-P chef-workstationchef_omnibus_root:/opt/chef-workstation

а для установки определенной версии Chef Workstation:

provisioner:...chef_omnibus_install_options:-P chef-workstationchef_omnibus_root:/opt/chef-workstationrequire_chef_omnibus:0.9

Платформа Microsoft Windows

Следующий пример демонстрирует настройки платформы для платформы Microsoft Windows:

platforms:- name:eval-win2012r2-standardos_type:windowstransport:name:winrmelevated:true

Если name начинается с win, то значения по умолчанию os_type устанавливаются в windows. Транспорт winrm является стандартным для операционных систем Windows. Здесь elevated равно true, что выполняет команды Windows через запланированную задачу для имитации локального пользователя.

Кулинарная книга Chef Infra Client

Следующий файл kitchen.yml является частью кулинарной книги chef-client и гарантирует правильную настройку Chef Infra Client.

driver:name:vagrantprovisioner:name:chef_zeroplatforms:- name:centos-8- name:fedora-latest- name:ubuntu-1804- name:ubuntu-2004suites:- name:service_initrun_list:- recipe[minitest-handler]- recipe[chef-client::config]- recipe[chef-client_test::service_init]- recipe[chef-client::init_service]attributes:{}- name:service_runitrun_list:- recipe[minitest-handler]- recipe[runit]- recipe[chef-client_test::service_runit]- recipe[chef-client::runit_service]attributes:{}- name:service_upstartrun_list:- recipe[minitest-handler]- recipe[chef-client_test::service_upstart]- recipe[chef-client::upstart_service]excludes:["centos-5.9"]attributes:{}- name:cronrun_list:- recipe[minitest-handler]- recipe[chef-client::cron]attributes:{}- name:delete_validationrun_list:- recipe[chef-client::delete_validation]attributes:{}

Кулинарная книга chef-splunk

Следующий файл kitchen.yml является частью кулинарной книги chef-splunk и используется для обеспечения правильной установки клиента и сервера Splunk.

driver:name:vagrantcustomize:memory:1024provisioner:name:chef_zeroplatforms:- name:ubuntu-18.04- name:ubuntu-20.04- name:centos-7- name:centos-8suites:- name:clientrun_list:- recipe[chef-splunk::default]- recipe[test::default]attributes:dev_mode:truesplunk:accept_license:true- name:serverrun_list:- recipe[chef-splunk::default]attributes:dev_mode:truesplunk:is_server:trueaccept_license:truessl_options:enable_ssl:true

Кулинарная книга yum

Следующий файл kitchen.yml является частью кулинарной книги yum.

driver:name:vagrantprovisioner:name:chef_zeroplatforms:- name:centos-7- name:centos-8- name:fedora-latestsuites:- name:defaultrun_list:- recipe[yum::default]- recipe[yum_test::test_repo]

Атрибуты платформы

Следующий файл kitchen.yml настраивает простую многоуровневую конфигурацию сервера Chef, включая два сервера front-end, один сервер back-end и два плагина (Chef Push Jobs и консоль управления Chef). Блок platforms использует раздел attributes для определения атрибутов, специфичных для сервера Chef, которые используются всеми тремя наборами тестов:

driver:name:vagrantprovisioner:name:chef_zeroplatforms:- name:ubuntu-18.04attributes:chef-server:api_fqdn:backend.chef-server.combackend:fqdn:backend.chef-server.comipaddress:123.456.789.0frontends:frontend1.chef-server.com:123.456.789.0frontend2.chef-server.com:123.456.789.0urls:private_chef:http://123.456.789.0/path/to/private-chef_11.1.4-1_amd64.debmanage:http://123.456.789.0/path/to/opscode-manage_1.3.1-1_amd64.debpush_jobs:http://123.456.789.0/path/to/opscode-push-jobs-server_1.1.1-1_amd64.debsuites:- name:frontend1driver:vm_hostname:frontend1.chef-server.comnetwork:- ["private_network",{ip:"123.456.789.0"}]customize:memory:2048cpus:2run_list:- recipe[chef-server::configfile]- recipe[chef-server::ntp]- recipe[chef-server::server]- recipe[chef-server::frontend]- name:frontend2driver:vm_hostname:frontend2.chef-server.comnetwork:- ["private_network",{ip:"123.456.789.0"}]customize:memory:2048cpus:2run_list:- recipe[chef-server::configfile]- recipe[chef-server::ntp]- recipe[chef-server::server]- recipe[chef-server::frontend]- name:backenddriver:vm_hostname:backend.chef-server.comnetwork:- ["private_network",{ip:"123.456.789.0"}]customize:memory:8192cpus:4run_list:- recipe[chef-server::configfile]- recipe[chef-server::ntp]- recipe[chef-server::server]- recipe[chef-server::backend]

Схождение Kitchen при перезагрузке системы

Test-Kitchen может обрабатывать перезагрузки (инициированные с помощью Chef Infra Client), устанавливая атрибуты retry_on_exit_code, max_retries и wait_for_retry в провайдере в файле kitchen.yml следующим образом:

provisioner:name:chef_zeroretry_on_exit_code:- 35# 35 is the exit code signaling that the node is rebooting- 1max_retries:1client_rb:exit_status::enabled# Opt-in to the standardized exit codesclient_fork:false# Forked instances don't return the real exit code

Примечание по узлам Linux: Команда shutdown блокирует выполнение (в отличие от Windows-варианта, который регистрирует перезагрузку и возвращает результат сразу), поэтому после истечения таймаута Chef Infra Client и узел находятся в гонке, чтобы увидеть, кто выйдет/перезагрузится первым — поэтому вы можете или не можете получить код выхода из узлов Linux. В этом случае можно добавить 1 в массив retry_on_exit_code — это должно уловить оба случая.

См. документацию YAML для установки атрибута retry_on_exit_code.

© 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/config_yml_kitchen/

Spec-Zone.ru

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