2017-07-17 140 views
0

我想通過使用pm2來啓動一個使用pm2的節點程序。問題在於pm2 start命令在ansible下不是冪等的。再次運行時會出錯。使用pm2和ansible

這是我ansible發揮

- name: start the application 
    become_user: ubuntu 
    command: pm2 start app.js -i max 
    tags: 
    - app 

現在,如果我跑這第一次那麼其正常運行,但是當我再次運行這個,然後我得到的錯誤告訴我,劇本已經在運行。

什麼是正確的方法來解決這個錯誤,並通過正確的方式處理pm2。

+0

爲什麼不直接使用PM2作爲服務,啓動腳本? –

+0

@ArbabNazar我想完全使用ansible建立一個服務器,即服務的開始點。所以我需要能夠處理這一步也。我的主要問題是這個遊戲不是冪等的,如果我再次運行它,它會失敗。 – shivams

+0

即使在製作過程中,我也將pm2作爲服務使用,甚至可以使用 –

回答

2

啓動腳本,你應該刪除以前一樣,在此之前:

- 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}}" 
+0

我明白你在說什麼。但是那些pm2已經在運行的情況下又如何呢?在這些情況下,開始比賽將失敗。 另外,如果我每次運行我的手冊時刪除現有的進程,那麼它將導致服務中斷。 – shivams

+0

@shivams但在開始新的過程之前我使用'pm2 delete {{server_id}}'來刪除prevoius,我使用這個解決方案並且它可以工作,當我部署新的應用程序版本時 –

+0

是的,如果你正在部署新的應用程序版本,但如果我在現有安裝程序上再次運行該遊戲,那麼在這種情況下,我正在查看應用程序重新啓動權限。 – shivams