Puppet:如何从代理加载文件

时间:2017-05-04 00:44:01

标签: puppet

我写了一个执行许多任务的清单。第一个任务是将文件的内容加载到变量中。该文件将存在于目标节点(或受管节点或运行Puppet代理的节点)上。

但是,当我通过木偶运行触发清单时,我意识到它希望在主服务器上找到该文件,而不是代理!

$some_var = file("path_to_file")

如何修复此问题以便从代理加载文件?

1 个答案:

答案 0 :(得分:1)

事实上,函数只在master上执行。因此,您需要外部或自定义事实才能在节点上执行此操作。这是一个自定义事实,可以用于返回文件foo的内容:

# module_name/lib/facter/foo_content.rb
Facter.add(:foo_content) do
  setcode do
    # return content of foo as a string
    File.read('/path/to/foo')
  end
end

然后你可以这样使用它:

# facter 3
$some_var = $facts['foo_content']
# facter 2
$some_var = $::foo_content

请注意,此解决方案假定foo不是一个非常庞大的文件。

https://docs.puppet.com/facter/3.6/custom_facts.html