检查文件是否存在木偶模板

时间:2015-06-05 17:44:48

标签: ruby puppet

我尝试检查运行puppet agent的客户端上是否存在文件。 在我的木偶大师身上,我有一个像这样的template.erb:

<% if File.exists?('/usr/bin/lwp-request') %>SCRIPTWHITELIST="/usr/bin/lwp-request"<% end %>

我的rkhunter模块需要我的模板中的这个小代码。 结果始终为false,但文件存在。

如果我在puppet master上添加文件,结果为true。所以ruby代码似乎是在master上执行的。

如果客户端上存在文件,我如何检查我的模板?

在傀儡2.7.5和2.8.1上进行测试。

由于

2 个答案:

答案 0 :(得分:1)

编译清单和模板时,有关节点的唯一信息是节点在请求目录时发送的Facts

如果您需要来自节点的其他信息,则需要添加Custom Fact来检索所需的信息(例如文件是否存在)。然后,您可以在模板中使用自定义事实。

答案 1 :(得分:0)

在人偶模块中创建自定义事实lib/facter/lwp.rb

Facter.add(:lwp_request_exists) do
  setcode do
    File.exists?('/usr/bin/lwp-request')
  end
end

然后在erb模板中使用类似的内容:

<% if $::lwp_request_exists -%>
some code...
<% end -%>