![如何访问 Puppet 清单中的环境变量?](https://linux22.com/image/509862/%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%20Puppet%20%E6%B8%85%E5%8D%95%E4%B8%AD%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%EF%BC%9F.png)
如何在 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 清单中访问它们。
希望有帮助!