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

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

我正在使用 Ansible 在 EC2/Ubuntu 实例上创建 pm2 服务。下面是脚本。当我运行它时,PM2 已安装并启用了该服务。当我运行 pm2 list 时,我看不到该服务,但我可以 grep 它(ps aux | grep node)并看到它正在运行。似乎 pm2 的影子副本正在运行并加载应用程序,但我似乎无法控制它。

- 主办方:comm
  sudo:是的
  任务:
    -npm:名称=pm2 全局=是
    - 名称:配置 pm2 在启动时重新启动
      shell:pm2 启动 ubuntu >& /dev/null chdir=~/ executable=/bin/bash
      sudo:是的
      sudo_用户:root
    - 命令:sudo env PATH=$PATH:/usr/bin pm2 启动 ubuntu -u ubuntu
      sudo:是的
    - 命令:/usr/bin/pm2 保存
    - 命令:/usr/bin/pm2 start /home/ubuntu/something/app.js --name something

答案1

此剧本不是幂等的,shell每次运行剧本时,任务都会运行,您需要提供一个creates该任务的论点。

在里面当前版本PM2.5:

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

此外,使用sudo是多余的,因为它已经在上面全局指定,并且默认是sudoroot,所以这也是多余的。

此外,一旦有了init服务脚本,最好使用service模块来对其进行管理。

相关内容