我正在使用Ansible在EC2 / Ubuntu实例上创建pm2服务.下面是脚本.当我运行它时,安装了PM2并启用了该服务.当我运行pm2列表时,我没有看到服务,但我可以grep它(ps aux | grep节点)并看到它正在运行.它似乎也像pm2的影子副本正在运行并加载应用程序,但我似乎无法控制它.
- hosts: comm sudo: yes tasks: - npm: name=pm2 global=yes - name: configure pm2 to restart on startup shell: pm2 startup ubuntu >& /dev/null chdir=~/ executable=/bin/bash sudo: yes sudo_user: root - command: sudo env PATH=$PATH:/usr/bin pm2 startup ubuntu -u ubuntu sudo: yes - command: /usr/bin/pm2 save - command: /usr/bin/pm2 start /home/ubuntu/something/app.js --name something
这个剧本不是幂等的,每次运行剧本时都会运行shell任务,你需要为该任务提供一个
creates
参数.
在PM2的current version:
var scriptFile = '/etc/init.d/pm2-init.sh',script = cst.UBUNTU_STARTUP_SCRIPT;
此外,sudo的使用是多余的,因为它已经在上面全局指定,默认是sudo到root,所以这也是多余的.
此外,一旦有服务的init脚本,最好使用service
模块来管理它.