用puppet设置环境变量

我正在尝试找出用puppet设置一些环境变量的最佳方法。

我可以使用exec,只是export VAR=blah 。 但是,这只会持续到本届会议。 我还想过将它添加到文件的末尾,比如bashrc。 然而,我不认为有一种可靠的方法可以检查它是否已经准备就绪; 所以它最终会被添加到每一轮木偶中。

我会看看这个相关的问题 。

/etc/profile.d中的*.sh脚本是在用户登录时读取的(如post所说,同时/etc/profile来源)

因此,在/etc/profile.d放置的任何脚本中export变量将可供您的用户使用。

然后,您可以使用file资源来确保此操作是幂等的 。 例如:

 file { "/etc/profile.d/my_test.sh": content => 'export MYVAR="123"' } 

或者是无效结果的替代方法:

 if [[ ! grep PINTO_HOME /root/.bashrc | wc -l > 0 ]] ; then echo "export PINTO_HOME=/opt/local/pinto" >> /root/.bashrc ; fi 

此选项允许在pinto应用程序的存在使其变为warrented时设置此环境变量,而不必组成用户的.bash_profile无论哪些应用程序可能在盒子上结束。

如果你把它添加到你的bashrc,你可以通过这样做检查它是否在ENV哈希中

 ENV[VAR] 

哪个会返回=>“blah”

如果你看一下Github的Boxen,他们会从〜/ .profile中获取一个脚本(/opt/boxen/env.sh)。 这个脚本运行一堆东西,包括:

 for f in $BOXEN_HOME/env.d/*.sh ; do if [ -f $f ] ; then source $f fi done 

反过来,这些脚本为其各自的模块设置环境变量。