Puppet:如何从代理加载文件

Puppet : How to load file from agent

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

但是,当我通过 puppet 运行 触发清单时,我意识到它期望在 master 而不是 agent 上找到文件!

$some_var = file("path_to_file")

如何解决此问题以便它从代理加载文件?

确实函数只在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