如何访问木偶清单中的环境variables?

如何在傀儡清单中访问环境variables(来自puppet守护进程的环境)?

我想我们需要更多关于你想要实现的信息… Facter默认暴露了FACTER_环境variables:

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使用给定的path或用户(对于exec?)?

从我可以告诉Puppet没有任何Bash环境variables运行。 它似乎从Facter获得了所有的环境。 这里有一个脚本来导入你的常规envvars作为Facter envvars。

如果你想要木偶大师的环境,你需要使用服务器端function。 因为因素得到客户的事实。

$ RUBYLIB /傀儡/分析器/function/ env.rb:

 module Puppet::Parser::Functions newfunction(:env) do |args| variable = args[0] ENV[variable] end end 

在您的清单中使用它,如:

 $blah = env("PATH") 

在Puppet企业2.5.1中,您可以通过/ etc / env访问它。

还要检查你的/etc/puppetlabs/puppet/puppet.conf是否有正确的环境 – 它应该看起来像这样:

 [production] modulepath = /etc/puppetlabs/puppet/environments/production/modules:/opt/puppet/share/puppet/modules manifest = /etc/puppetlabs/puppet/environments/production/manifests/site.pp 

答案有点令人失望:你不能(除非你增强Puppet或Facter)。 我最近写了一篇关于这个主题的简短博客文章: 在Puppet中访问环境variables

一个简短的总结:Facter正在每个Puppet代理系统上运行。 只需增强Facter来收集所有环境variables,然后在Puppet清单中访问它们。

希望有所帮助!