2013-06-30 28 views
11

Tôi đang đấu tranh với công thức nấu ăn đầu bếp cho một hộp âm đạo. Tôi đang sử dụng đầu bếp-solo.Có thể gỡ lỗi công thức nấu ăn đầu bếp từ hộp không?

Tôi không thoải mái với Ruby (tôi chưa bao giờ sử dụng nó trước đây), vì vậy quá trình viết công thức nấu ăn của tôi rất dài nếu tôi phải làm vagrant provision mỗi lần.

Có cách nào để gỡ lỗi một công thức cụ thể không? Ngay cả từ vỏ máy ảo.

Tôi đã thấy rằng chef-shell tồn tại (http://docs.opscode.com/chef_shell.html), và tôi có thể khởi chạy (nó hoạt động) khi tôi ở trong máy ảo, nhưng tôi không thể hiểu cách tải công thức nấu ăn của mình và kiểm tra chúng.

Trả lời

4

Bạn có thể sử dụng đầu bếp-solo trực tiếp từ vỏ bên trong máy ảo của bạn nhưng điều này đòi hỏi một cấu trúc tập tin khác với những gì bạn có cho lang thang rồi.

Nó trông hơi giống như những gì được thực hiện here:

  • Bạn cần thư mục sách dạy nấu ăn của bạn
  • Bạn cần một tập tin .json chứa tất cả dữ liệu của bạn mà nằm trong chef.json trong Vagrantfile bạn
  • Và bạn cần một đoạn mã ruby ​​của trình bao bọc/khởi động như một từ bài viết ở trên.

Nói chung, hãy thử tìm kiếm các hướng dẫn giải thích đầu bếp độc lập mà không có Vagrant.

+0

hoạt động. thanx! – apelliciari

8

Ngoài các đầu vào ở trên, đó là Execllent ;-)

runing chef-solo trong chế độ gỡ lỗi (cho phép kết xuất debug) chắc chắn sẽ giúp đỡ.

Ví dụ

chef-solo -c solo.rb -j node.json -l debug

+0

cảm ơn cho việc thêm – apelliciari

+0

kiểm tra thư mục/tmp/có nên được biên soạn âm thanh solo.rb json cấu hình mà bạn có thể sử dụng – ahmy

5

Nếu bạn chạy đầu bếp-độc tấu bên trong Vagrant lập luận thêm tùy chỉnh (đối với khai thác gỗ/gỡ lỗi) có thể được tiêm từ Vagrantfile như thế này:

Vagrant.configure("2") do |config| 
    # ... 
    config.vm.provision :chef_solo do |chef| 
     chef.arguments = '-l debug' 
     # ... 
    end 
end 
+0

Hình như 'chef.arguments' không được ghi trong tài liệu v1 và v2 ... –

29

Các hợp cách để kích hoạt đầu ra gỡ lỗi trong nhà cung cấp đầu bếp mơ hồ hiện tại là với chef.log_level, không phải bằng đầu bếp-solo theo cách thủ công hoặc với chef.arguments:

Vagrant.configure("2") do |config| 
    # ... 
    config.vm.provision :chef_solo do |chef| 
    chef.log_level = :debug 
    # ... 
    end 
end