joeforker Asked: 2010-03-30 13:09:33 +0800 CST2010-03-30 13:09:33 +0800 CST 2010-03-30 13:09:33 +0800 CST 如何访问 puppet 清单中的环境变量? 772 如何访问 puppet 清单中的环境变量(从 puppet 守护程序的环境)? puppet 5 个回答 Voted jnrg 2010-03-31T22:58:58+08:002010-03-31T22:58:58+08:00 我认为我们需要有关您要实现的目标的更多信息... 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 ?)? AndrewF 2010-09-09T18:37:30+08:002010-09-09T18:37:30+08:00 如果您想要 puppetmaster 的环境,则需要为此使用服务器端功能。由于facter可以为您提供客户事实。 $RUBYLIB/puppet/parser/functions/env.rb: module Puppet::Parser::Functions newfunction(:env) do |args| variable = args[0] ENV[variable] end end 在您的清单中使用它,例如: $blah = env("PATH") user1804 2010-04-21T09:43:47+08:002010-04-21T09:43:47+08:00 据我所知,Puppet 在没有任何 Bash 环境变量的情况下运行。它似乎从 Facter 获得了所有环境。这里有一个脚本可以将您的常规环境变量导入为 Facter 环境变量。 Nalinda 2012-06-08T20:14:27+08:002012-06-08T20:14:27+08:00 在 Puppet Enterprise 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 PythonLearner 2013-06-03T10:48:36+08:002013-06-03T10:48:36+08:00 答案有点令人失望:你不能(除非你增强了 Puppet 或 Facter)。我最近写了一篇关于这个主题的简短博客文章: Accessing environment variables within Puppet 一个简短的总结:Facter 在每个 Puppet 代理系统上运行。只需增强 Facter 以收集所有环境变量,然后您就可以在 Puppet 清单中访问它们。 希望有帮助!
我认为我们需要有关您要实现的目标的更多信息... Facter 默认公开 FACTER_ 环境变量:
https://docs.puppetlabs.com/guides/faq.html#can-i-access-environment-variables-with-facter
但是对于 $PATH 或 $USER... 为什么不明确地告诉 puppet 使用给定的路径或用户(对于 exec ?)?
如果您想要 puppetmaster 的环境,则需要为此使用服务器端功能。由于facter可以为您提供客户事实。
$RUBYLIB/puppet/parser/functions/env.rb:
在您的清单中使用它,例如:
据我所知,Puppet 在没有任何 Bash 环境变量的情况下运行。它似乎从 Facter 获得了所有环境。这里有一个脚本可以将您的常规环境变量导入为 Facter 环境变量。
在 Puppet Enterprise 2.5.1 中,您可以通过 /etc/env 访问它。
还要检查你是否在你的环境中定义了正确的环境
/etc/puppetlabs/puppet/puppet.conf
——它应该看起来像这样:答案有点令人失望:你不能(除非你增强了 Puppet 或 Facter)。我最近写了一篇关于这个主题的简短博客文章: Accessing environment variables within Puppet
一个简短的总结:Facter 在每个 Puppet 代理系统上运行。只需增强 Facter 以收集所有环境变量,然后您就可以在 Puppet 清单中访问它们。
希望有帮助!