Chef - Thử nghiệm Sách nấu ăn
Trong trường hợp sách nấu ăn được triển khai trực tiếp và chạy trên máy chủ sản xuất, thì có nhiều khả năng sách nấu ăn có thể bị hỏng trong quá trình sản xuất. Cách tốt nhất để ngăn điều này xảy ra là thử nghiệm sách nấu ăn trong môi trường thiết lập.
Sau đây là các bước để kiểm tra.
Step 1 - Cài đặt sách nấu ăn bằng lệnh sau.
vipin@laptop:~/chef-repo $ knife cookbook site install <cookbook name>
Step 2 - Chạy các lệnh kiểm tra sách nấu dao trên sách nấu ăn đang hoạt động.
vipin@laptop:~/chef-repo $ knife cookbook test VTest
checking ntp
Running syntax check on ntp
Validating ruby files
Validating templates
Step 3 - Phá vỡ một cái gì đó trong sách nấu ăn và kiểm tra lại.
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 - Chạy lại lệnh thử dao.
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:
Phương pháp làm việc
Kiểm tra sách nấu ăn Knife thực hiện kiểm tra cú pháp Ruby trên tất cả các tệp Ruby trong sách nấu ăn cũng như tất cả các mẫu ERB. Nó lặp qua các tệp Ruby và chạy Ruby–cchống lại mỗi người trong số họ. Ruby–c kiểm tra cú pháp của tập lệnh và thoát mà không chạy nó.
Sau khi xem qua tất cả các tệp Ruby, bài kiểm tra sách dạy nấu dao sẽ đi qua tất cả các mẫu và đường dẫn ERB, phiên bản dự phòng được tạo bởi –x thông qua Ruby –c.
Hạn chế
Kiểm tra sách dạy nấu ăn dao chỉ thực hiện một cú pháp đơn giản kiểm tra các tệp Ruby và các mẫu ERB. Chúng tôi có thể tiếp tục thử nghiệm hoàn toàn bằng cách sử dụng ChefSpec và bếp thử nghiệm.