Учебники

Chef — Тестирование поваренных книг

В случае, если поваренная книга непосредственно развернута и запущена на рабочем сервере, высока вероятность того, что поваренная книга может выйти из строя на производстве. Лучший способ предотвратить это — протестировать кулинарную книгу в среде установки.

Ниже приведены шаги для тестирования.

Шаг 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 и тестовую кухню.