我正在使用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的使用是多余的,因为它已经在上面全局指定了,默认情况下sudo是root ,所以这也是多余的。
另外,一旦服务有init脚本,最好使用service模块来pipe理它。