在Puppet提供程序中创建资源的正确方法是什么?

时间:2018-10-19 15:30:11

标签: puppet

我目前正在编写一个充当“资源包装器”的提供程序。本质上,它需要一个名称,类型,一些参数,然后基于该名称创建资源。

我一直在使用Puppet::Resource.new(<type>, <name>, parameters: <parameters>),但似乎没有考虑Sensitive参数。

例如,我尝试创建File资源,如下所示:

Puppet::Resource.new('file', '/root/.ssh/id_rsa', parameters: params)

如果参数包含一个Sensitive值,则会给我以下错误:

Could not evaluate: Parameter content failed on File[/root/.ssh/id_ra]: 
Munging failed for value #<Sensitive [value redacted]> in class 
content: no implicit conversion of 
Puppet::Pops::Types::PSensitiveType::Sensitive into String

我需要对所有参数(敏感或不敏感)进行正确的资源创建调用吗?

编辑:由于我要完成的工作,我需要一个自定义类型和提供程序。我想管理需要可靠地知道用户主目录的资源。例如,我想管理/home/<user>/.vimrc而不必事先知道该目录是什么。新的资源类型旨在将资源与用户的主目录“包装”在一起。编写自定义类型和提供程序是我知道的唯一方法。

编辑2:我已经按照建议尝试了以下操作,以将参数标记为敏感:

params = {
  name: '/root/.ssh/id_rsa',
  owner: 'root',
  <more parameters...>
  sensitive_parameters: ['content'],
}
Puppet::Type.type('file').new params

这似乎没有任何效果(我仍然遇到相同的错误),即使看起来应该有效果(根据puppet / type.rb的源代码)。

0 个答案:

没有答案