В случае, если поваренная книга непосредственно развернута и запущена на рабочем сервере, высока вероятность того, что поваренная книга может выйти из строя на производстве. Лучший способ предотвратить это — протестировать кулинарную книгу в среде установки.
Ниже приведены шаги для тестирования.
Шаг 1 — Установите кулинарную книгу, используя следующую команду.
vipin@laptop:~/chef-repo $ knife cookbook site install <cookbook name>
Шаг 2 — Запустите команды проверки поваренной книги ножа на рабочей поваренной книге.
vipin@laptop:~/chef-repo $ knife cookbook test VTest checking ntp Running syntax check on ntp Validating ruby files Validating templates
Шаг 3 — сломайте что-нибудь в кулинарной книге и протестируйте снова.
vipin@laptop:~/chef-repo $ subl cookbooks/VTest/recipes/default.rb ... [ node['ntp']['varlibdir'] node['ntp']['statsdir'] ].each do |ntpdir| directory ntpdir do owner node['ntp']['var_owner'] group node['ntp']['var_group'] mode 0755 end end
Шаг 4 — Запустите команду проверки ножа снова.
vipin@laptop:~/chef-repo $ knife cookbook test ntp checking ntp Running syntax check on ntp Validating ruby files FATAL: Cookbook file recipes/default.rb has a ruby syntax error: FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error, unexpected tIDENTIFIER, expecting ']' FATAL: node['ntp']['statsdir'] ].each do |ntpdir| FATAL: ^ FATAL: cookbooks/ntp/recipes/default.rb:25: syntax error, unexpected ']', expecting $end FATAL: node['ntp']['statsdir'] ].each do |ntpdir| FATAL:
Метод работы
Тест поваренной книги ножа выполняет проверку синтаксиса Ruby для всех файлов Ruby в поваренной книге, а также для всех шаблонов ERB. Он просматривает файлы Ruby и запускает Ruby –c для каждого из них. Ruby –c проверяет синтаксис скрипта и завершает работу без его запуска.
После прохождения всех файлов Ruby, тест поваренной книги ножа проходит через все шаблоны и каналы ERB, избыточную версию, созданную с –x по Ruby –c .
Ограничения
Тест поваренной книги ножа выполняет только простую проверку синтаксиса для файлов Ruby и шаблонов ERB. Мы можем начать тестирование, используя ChefSpec и тестовую кухню.