我写了一个执行许多任务的清单。第一个任务是将文件的内容加载到变量中。该文件将存在于目标节点(或受管节点或运行Puppet代理的节点)上。
但是,当我通过木偶运行触发清单时,我意识到它希望在主服务器上找到该文件,而不是代理!
$some_var = file("path_to_file")
如何修复此问题以便从代理加载文件?
答案 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
不是一个非常庞大的文件。