2012-04-25 47 views
7

Tôi có một máy chủ được quản lý bởi Chef. Tôi cần truy cập một số giá trị nằm trong túi dữ liệu sách nấu ăn từ tập lệnh không do Đầu bếp quản lý.Làm cách nào để truy cập các giá trị hiện tại từ túi dữ liệu Chef?

/* API REST đầu bếp cho phép truy cập các giá trị túi dữ liệu như máy chủ Chef xem. Đây không phải là điều tôi muốn. Mỗi lần chạy chef-client có thể giới thiệu một số thay đổi được điều phối, bao gồm các thay đổi trong túi dữ liệu. Nếu dữ liệu trên máy chủ đã thay đổi nhưng chef-client không chạy cục bộ, thiết lập cục bộ và túi dữ liệu phía máy chủ có thể không đồng bộ. */

tôi thấy hai giải pháp:

  • Parse/nhập khẩu các tập tin dữ liệu túi dưới /var/cache/chef/cookbooks/<book-name> vì nó more or less normal Ruby.
  • Bên trong công thức, đổ dữ liệu có liên quan từ túi dữ liệu vào một tệp đơn giản có thể truy cập từ tập lệnh của tôi.

Có các tùy chọn nào tốt hơn không?

+0

Có lý do nào khiến bạn không thể làm những gì bạn muốn trong công thức đầu bếp không? –

+0

@Jordan: không; điều này có thể được thực hiện từ công thức vì dường như là lựa chọn dễ dàng duy nhất. câu trả lời được chấp nhận đề xuất. – 9000

Trả lời

7

Dumping dữ liệu từ nút băm hoặc túi dữ liệu vào một tệp riêng biệt là một cách giao tiếp tốt giữa máy chủ đầu bếp và tập lệnh chạy trên nút. Nếu tập lệnh của bạn có thể phân tích cú pháp JSON thì tập lệnh đó thực sự dễ dàng:

file "/etc/script.json" do 
    owner "root" 
    group "root" 
    mode 0644 
    content node[:whatever].to_json 
end 

Sử dụng giao diện REST đầu bếp có vẻ quá mức và mò mẫm trong/var/cache/đầu bếp chỉ là thô lỗ. (-:

Các vấn đề liên quan