Chef - Menguji Buku Masak

Jika buku masak langsung disebarkan dan dijalankan di server produksi, ada kemungkinan besar buku masak tersebut dapat rusak dalam produksi. Cara terbaik untuk mencegah hal ini terjadi adalah, menguji buku masak di lingkungan penyetelan.

Berikut langkah-langkah pengujiannya.

Step 1 - Instal buku masak menggunakan perintah berikut.

vipin@laptop:~/chef-repo $ knife cookbook site install <cookbook name>

Step 2 - Jalankan perintah tes buku masak pisau pada buku masak yang berfungsi.

vipin@laptop:~/chef-repo $ knife cookbook test VTest  
checking ntp 
Running syntax check on ntp 
Validating ruby files 
Validating templates

Step 3 - Pecahkan sesuatu di buku masak dan uji lagi.

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

Step 4 - Jalankan kembali perintah uji pisau.

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:

Metode Kerja

Tes buku masak Knife menjalankan pemeriksaan sintaks Ruby pada semua file Ruby di dalam buku masak serta semua templat ERB. Ia melakukan loop melalui file Ruby dan menjalankan Ruby–cmelawan mereka masing-masing. Rubi–c memeriksa sintaks skrip dan berhenti tanpa menjalankannya.

Setelah melalui semua file Ruby, tes buku masak pisau melewati semua template dan pipa ERB, versi redundan yang dibuat oleh –x melalui Ruby –c.

Batasan

Uji buku masak Knife hanya melakukan pemeriksaan sintaks sederhana pada file Ruby dan template ERB. Kami dapat melanjutkan pengujian sepenuhnya dengan menggunakan ChefSpec dan dapur uji.