Spec-Zone.ru › Chef 16

kitchen.yml

[edit on GitHub]

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

  • Определяется в файле 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-16.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-18.04- name:centos-8- name:debian-10suites:- name:defaultrun_list:- recipe[apache::httpd]excludes:- debian-10

В этом файле используется Vagrant в качестве драйвера, что не требует дополнительной настройки, поскольку это драйвер по умолчанию, используемый Test Kitchen, chef-zero как провайдер и один (по умолчанию) набор тестов, который выполняется на Ubuntu 16.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://www.chef.io/chef/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 Переопределить платформу. <auto detected>
platform_version Переопределить платформу платформы. <auto detected>
architecture Переопределить архитектуру платформы. <auto detected>

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

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, все команды выполняются через запланированную задачу. Это может устранить ошибки доступа «запрещено», связанные с двойной аутентификацией, взаимодействием с обновлениями 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, https_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 Хеш пар key-value, определяющий настройки, которые должны быть внесены в виртуальную машину 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-16.04
- name: ubuntu-18.04
- name: centos-7
- name: centos-8
- name: debian-10

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

platforms:
- name: ubuntu-16.04
  driver:
    box: bento/ubuntu-16.04
- name: ubuntu-18.04
  driver:
    box: bento/ubuntu-18.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-1604- name:ubuntu-1804suites:- 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-16.04- name:ubuntu-18.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 Infra Server, включая два сервера переднего плана, один сервер заднего плана и два дополнения (Chef Push Jobs и консоль управления Chef). Блок platforms использует раздел attributes для определения атрибутов, специфичных для сервера Chef, которые используются всеми тремя наборами тестов:

driver:name:vagrantprovisioner:name:chef_zeroplatforms:- name:ubuntu-16.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