将 pm2 与 ansible 一起使用

shi*_*ams 4 node.js npm ansible pm2

我正在尝试通过 ansible 使用 pm2 启动节点程序。问题是该pm2 start命令在 ansible 下不是幂等的。再次运行时报错。

这是我的 ansible play

- name: start the application
  become_user: ubuntu
  command: pm2 start app.js -i max
  tags: 
    - app
Run Code Online (Sandbox Code Playgroud)

现在,如果我第一次运行它,那么它运行正常,但是当我再次运行它时,我收到错误消息,告诉我脚本已经在运行。

绕过此错误并通过 ansible 正确处理 pm2 的正确方法是什么。

Łuk*_*zak 5

在启动脚本之前,您应该删除以前的内容,如下所示:

 - name: delete existing pm2 processes if running
   command: "pm2 delete {{ server_id }}"
   ignore_errors: True
   become: yes
   become_user: rw_user


 - name: start pm2 process
   command: 'pm2 start -x -i 4 --name "{{server_id}}" server.js'
   become: yes
   become_user: rw_user
   environment:
    NODE_ENV: "{{server_env}}"
Run Code Online (Sandbox Code Playgroud)