Trong đầu bếp, làm cách nào để truy cập các thuộc tính trong tệp vai trò?


13

Tôi có thể đặt các thuộc tính trong các tệp vai trò như tài liệu nhưng tôi không thể truy cập các thuộc tính đã được đặt bởi sách nấu ăn mà tôi đang sử dụng.

Ví dụ: trong /roles/appserver.rb:

name "appserver"

run_list(%w{
  recipe[tomcat::default]
})

default_attributes(
  :tomcat => {
    :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir]
  }
)

Những gì tôi nhận được là một đầu bếp ngoại lệ cho biết không thể tìm thấy phương thức / biến 'nút'.

Cảm ơn

Câu trả lời:


12

Bạn không thể. Vai trò Ruby DSL được chuyển đổi từ Ruby sang JSON khi bạn tải vai trò lên máy chủ bằng dao. Đối tượng nút không có sẵn, vì nó không được xử lý trong bối cảnh chạy Chef.

Thay vào đó, nếu bạn muốn kết hợp các thuộc tính nút, bạn nên làm điều đó trong một công thức, ví dụ:

"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"

0

Bạn có thể sử dụng thực tế require_relative 'base_role_file' bên trong một vai trò và tệp yêu cầu này có thể đặt một số biến toàn cục để bạn sử dụng. Khá hack.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.