Npm 厨师脚本资源:用户上下文是如何工作的?

Npm 厨师脚本资源:用户上下文是如何工作的?,npm,permissions,chef-infra,centos7,pm2,Npm,Permissions,Chef Infra,Centos7,Pm2,我正在尝试使用Chef 12以非root用户(特别是使用nginx用户)的身份安装pm2和pm2 logrotate 我在全球安装了pm2 [root@~] npm install -g pm2 然后我注册了pm2启动脚本以作为nginx用户运行 [root@~] pm2 startup -u nginx --hp /home/nginx systemd 然后我想为作为nginx用户运行的pm2进程安装pm2 logrotate [root@~] pm2 startup -u nginx

我正在尝试使用Chef 12以非root用户(特别是使用nginx用户)的身份安装pm2和pm2 logrotate

我在全球安装了pm2

[root@~] npm install -g pm2
然后我注册了pm2启动脚本以作为nginx用户运行

[root@~] pm2 startup -u nginx --hp /home/nginx systemd  
然后我想为作为nginx用户运行的pm2进程安装pm2 logrotate

[root@~] pm2 startup -u nginx --hp /home/nginx systemd  
以下工作:正确安装pm2 logrotate,并旋转/home/nginx/.pm2/logs下的日志

script "pm2_logrotate" do
  interpreter 'bash'
  code <<-EOH
    su nginx -c "pm2 install pm2-logrotate@2.4.0"
  EOH
end
脚本“pm2_logrotate”do
解释器“bash”

code问题在于,当Chef将用户更改为
nginx
时,它不会导出bash在启动时设置的一些环境变量,在这种情况下可能是
$HOME
。您可以通过以下方法解决此问题:

script "pm2_logrotate" do
  interpreter 'bash'
  user "nginx"
  environment 'HOME' => Dir.home(user)
  code <<-EOH
    pm2 install pm2-logrotate@2.4.0
  EOH
end
脚本“pm2_logrotate”do
解释器“bash”
用户“nginx”
环境“主页”=>目录主页(用户)

代码谢谢,我下周会试试,我要离开几天。