Cập nhật: đầu bếp-solo không còn là công cụ "riêng biệt" từ đầu bếp-khách hàng. Từ documentation:
chef-solo is a command that executes chef-client in a way that does not require the Chef server in order to converge cookbooks. chef-solo uses chef-client’s Chef local mode, and does not support the following functionality present in chef-client/server configurations
Sự thay đổi này đã được thực hiện trong Chef version 12.11, đáp ứng đầy đủ community RFC. Điều này đã được phát hành vào ngày 8 tháng 6 năm 2016. Hành vi cũ, được mô tả dưới đây (mặc dù từ 4 năm trước vào thời điểm này), có sẵn với đối số --legacy-mode
đến chef-solo
.
Đối với các mới nhất và cập nhật thông tin về Chef Solo, vui lòng đọc the official documentation
câu trả lời ban đầu của tôi là dưới đây:
Chef (solo hoặc khách hàng) không "chạy" tất cả các sách dạy nấu ăn .
Nó tải tất cả các file của sách dạy nấu ăn của Ruby trong các thư mục sau đây, theo thứ tự này:...
- thư viện/rb
- các nhà cung cấp/* RB
- nguồn/* * RB
- thuộc tính/rb *.
- định nghĩa/*. RB
Sau đó, nó tải tất cả các công thức có trong danh sách chạy mở rộng của nút.Với chef-solo
, điều này xuất phát từ tệp JSON được cung cấp với -j
hoặc có thể được thực hiện trong tệp thuộc tính - tuy nhiên, tệp sau không được dùng nữa và không được khuyến nghị.
Bất kỳ công thức nào được bao gồm bởi những công thức trong danh sách chạy mở rộng qua include_recipe
cũng được tải. Đầu bếp tải công thức nấu ăn bằng cách đánh giá chúng như mã Ruby. Khi nó gặp mã ruby mà nó nhận ra là một tài nguyên, hoặc một định nghĩa, nó thêm tài nguyên vào Bộ sưu tập tài nguyên, một mã băm được lập chỉ mục theo thứ tự số của tất cả các tài nguyên. Các định nghĩa là đặc biệt, trong đầu bếp đó thêm các tài nguyên mà chúng chứa, không phải bản thân định nghĩa, vào Bộ sưu tập tài nguyên. Tài nguyên của công thức nấu ăn bao gồm thông qua include_recipe
được chèn vào vị trí, sau đó Chef tiếp tục trong công thức bao gồm.
Khi đầu bếp đã xử lý tất cả các công thức nấu ăn cho tất cả các tài nguyên của mình, bộ sưu tập tài nguyên sẽ thực hiện hành động được chỉ định trên mỗi đơn hàng theo thứ tự đã được thêm vào bộ sưu tập.
Tôi khuyên bạn nên đọc tài liệu về quy trình này. Nó áp dụng cho Chef Solo; chỉ là phần mà sách dạy nấu ăn được tải xuống từ máy chủ bị bỏ qua.
Để đảm bảo rằng chỉ những công thức nấu ăn mà bạn muốn kiểm tra được kiểm tra, bao gồm chúng trong danh sách thực thi của nút thông qua một tập tin JSON. Nó trông giống như thế này:
{ "run_list": ["recipe[mything]", "recipe[anotherthing]"] }
Danh sách này chạy chỉ là một mảng, và các mặt hàng có thể recipe[cookbookname]
hoặc role[somerole]
. Bạn có thể đọc thêm về cách sử dụng Vai trò với Đầu bếp Solo trên tài liệu Chef Solo.
Nếu bạn có hệ thống những thay đổi được thực hiện khi Chef đang tải các thành phần sách dạy nấu ăn (các tập tin ruby trong mỗi sách dạy nấu ăn), sau đó "Bạn đang làm nó sai" (tm) và nên refactor những điều cần được thực hiện trong một nguồn tài nguyên được gọi là từ một công thức.
tất cả các liên kết bị phá vỡ – freedev