如何在 Puppet 清单中访问环境变量(来自 Puppet 守护进程的环境)?
答案1
我认为我们需要更多有关您要实现的目标的信息... Facter 默认公开 FACTER_ 环境变量:
https://docs.puppetlabs.com/guides/faq.html#can-i-access-environment-variables-with-facter
$ FACTER_FOO="bar"
$ export FACTER_FOO
$ facter | grep 'foo'
foo => bar
但是对于$PATH或$USER...为什么不明确告诉puppet使用给定的路径或用户(对于exec?)?
答案2
如果您想要 puppetmaster 的环境,则需要使用服务器端函数。因为 facter 会为您提供客户端事实。
$RUBYLIB/puppet/解析器/函数/env.rb:
module Puppet::Parser::Functions
newfunction(:env) do |args|
variable = args[0]
ENV[variable]
end
end
在您的清单中使用它,例如:
$blah = env("PATH")
答案3
据我所知,Puppet 运行时不需要任何 Bash 环境变量。它似乎从 Facter 获取所有环境。有一个脚本这里将常规环境变量导入为 Facter 环境变量。
答案4
答案有点令人失望:你不能(除非你增强 Puppet 或 Facter)。我最近写了一篇关于这个主题的简短博客文章: 在 Puppet 中访问环境变量
简短摘要:Facter 在每个 Puppet 代理系统上运行。只需增强 Facter 即可收集所有环境变量,然后您可以在 Puppet 清单中访问它们。
希望有帮助!