当 puppet exec 作为用户时,我如何为该用户设置环境?

当 puppet exec 作为用户时,我如何为该用户设置环境?

我注意到,当我使用选项时userexec它不会采用指定用户的环境。

$ sudo -i puppet apply -e "exec { '/usr/bin/env': logoutput => true, user => nobody}" 
notice: /Stage[main]//Exec[/usr/bin/env]/returns: SHELL=/bin/bash
notice: /Stage[main]//Exec[/usr/bin/env]/returns: USER=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: USERNAME=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
notice: /Stage[main]//Exec[/usr/bin/env]/returns: MAIL=/var/mail/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: PWD=/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: HOME=/root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: LOGNAME=root
notice: /Stage[main]//Exec[/usr/bin/env]/returns: executed successfully

因此,虽然命令运行时nobody,、、等未按预期设置。有什么方法可以模拟登录 shell USER,以便按预期设置环境?HOMEexec

答案1

没有办法exec模拟登录 shell。你总是可以使用su -(如建议经过沃姆布尔)来生成一个登录 shell,但如果你想要的只是环境变量受控通过 Puppet,只需使用参数environment

答案2

当然,通过运行命令su -而不是在清单中指定用户。

相关内容