如何访问 Puppet 清单中的环境变量?

如何访问 Puppet 清单中的环境变量?

如何在 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 清单中访问它们。

希望有帮助!

相关内容