用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
反过来,这些脚本为其各自的模块设置环境变量。