Tôi đang xây dựng một kiểu tùy chỉnh và tôi không thể để có được quyền truy cập vào các hiera phạm vi từ một defaultto khốiTiếp cận hiera phạm vi từ Múa rối kiểu tùy chỉnh
module Puppet
require 'puppet/parser/functions/hiera'
newtype(:my_type) do
ensurable
newparam(:myparam) do
defaultto { Puppet::Parser::Functions.hiera('myparam') }
end
newproperty(:value) do
desc "Value of the item."
end
end
end
Nhưng tôi nhận được
Error: undefined method `hiera' for Puppet::Parser::Functions:Module
tôi đang thực sự sử dụng Múa rối 3.8 và phân tích cú pháp tương lai
là một workaround, chúng tôi sử dụng
$my_vals = hiera_hash('mytype_vals')
create_resource(my_type, $myvals, {myparam => hiera('myparam')})
đó làm việc tốt, nhưng my_type
đối tượng dự kiến sẽ được khởi tạo bất cứ nơi nào trong danh mục, một myparam
dự kiến sẽ được giống nhau trên tất cả các trường. Vì vậy, không cần phải khai báo nhiều giá trị mặc định.
cách tiếp cận khác sẽ được đặt
My_type{
myparam => hiera('myparam')
}
Trong manifest nút. Điều đó cũng có thể làm điều này, nhưng chúng tôi đang phát triển một mô-đun, và biểu hiện chính nằm ngoài phạm vi của chúng tôi
Tôi không thể giải thích được vấn đề "phương pháp chưa xác định", nhưng tôi không nghĩ cách tiếp cận này (1) có ý nghĩa hoặc (2) có thể hiệu quả cho bạn ngay cả khi bạn có thể thực hiện cuộc gọi Hiera. Nói chủ yếu sau này, loại của bạn cần phải được đánh giá cả trên tổng thể * và trên tác nhân *; trong trường hợp thứ hai, bạn (có thể) không có sẵn Hiera để vẽ. –
Đối với điểm thứ hai, chúng tôi sử dụng một kiến trúc vô chủ, và sử dụng con rối áp dụng, do đó, các nút có quyền truy cập vào thông tin hiera của họ. Lần đầu tiên, tôi sẽ cố gắng giải thích trường hợp sử dụng của chúng tôi trong câu hỏi –