编写Puppet提供程序时,有两种方法可以访问资源的属性:resource
变量和@property_hash
变量。我正在尝试在setter中使用属性foo
,并使用resource[:foo]
启动。这样做
puppet apply
并且在执行
时有效puppet resource thing thingname
但如果我尝试
puppet resource thing thingname foo=Foo
然后resource[:foo]
未设置。 @property_hash[:foo]
具有正确的价值。
我可以在foo
中致电new
之前打印出self.instances
的价值,这两种情况都是正确的。
This article显示resource
遍布整个地方。它位于一个名为flush
的函数中,因此我更改了所有设置器以使用flush
,但仍未设置resource[:foo]
。
我可以使用@property_hash[:foo]
,但是一位同事发现在创建资源时这不起作用 - 在我的情况下不是问题,因为资源只是管理不创建 - 但我真的需要理解这一点妥善避免将来出现问题。我应该何时使用resource
以及何时@property_hash
?为什么resource
在那个例子中工作但不适合我呢?