在Ubuntu EC2实例上无法通过Ansible安装PM2服务

我正在使用Ansible在EC2 / Ubuntu实例上创buildpm2服务。 以下是脚本。 当我运行它时,PM2被安装并且服务被启用。 当我运行pm2列表时,我没有看到服务,但我可以grep它(ps aux | grep节点),看看它正在运行。 它也似乎是pm2的影子副本正在运行和加载应用程序,但我似乎无法控制它。

 - 主机:通信
   sudo:是的
  任务:
     -  npm:name = pm2 global = yes
     -  name:configurationpm2在启动时重新启动
       shell:pm2 startup ubuntu>&/ dev / null chdir =〜/ executable = / bin / bash
       sudo:是的
       sudo_user:root
     - 命令:sudo env PATH = $ PATH:/ usr / bin pm2启动ubuntu -u ubuntu
       sudo:是的
     - 命令:/ usr / bin / pm2保存
     - 命令:/ usr / bin / pm2 start /home/ubuntu/something/app.js  - 命名

这个剧本不是幂等的, shell任务会在每次运行剧本的时候运行,你需要为这个任务提供一个creates参数。

在当前版本的PM2中:

 var scriptFile = '/etc/init.d/pm2-init.sh', script = cst.UBUNTU_STARTUP_SCRIPT; 

而且, sudo的使用是多余的,因为它已经在上面全局指定了,默认情况下sudoroot ,所以这也是多余的。

另外,一旦服务有init脚本,最好使用service模块来pipe理它。