I would like to Puppet to install the node modules which is specified in the Node.js project package.json. But the Puppet agent is run under the root account while the project is owned by another Linux user. The Puppet exec type allows you the specific the running user but it would not include the environmental variables like the $HOME. Those variables have to be set when calling the exec type just like follow.
exec { "install node modules of a nodejs project": cwd => "/home/ykyuen/nodejs-project", command => "npm install", user => "ykyuen", environment => ["HOME=/home/ykyuen"], }
If you need to set more than one environmental variable, just add them in an array format.
environment => ["HOME=/home/ykyuen", "FOO=foo"],
Done =)
Reference: Puppet Docs: Type Reference – Exec