Назад | Перейти на главную страницу

Не удается установить службы PM2 через Ansible на экземпляре Ubuntu EC2

Я использую Ansible для создания службы pm2 в экземпляре EC2 / Ubuntu. Ниже сценарий. Когда я его запускаю, PM2 установлен и служба включена. Когда я запускаю список pm2, я не вижу эту службу, но могу выполнить ее с помощью grep (ps aux | grep node) и увидеть, что она работает. Также кажется, что теневая копия 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 задача будет запускаться каждый раз при запуске playbook, вам нужно предоставить creates аргумент к этой задаче.

в текущая версия PM2:

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

Также использование sudo является избыточным, поскольку он уже указан выше глобально, и по умолчанию sudo к root, так что это тоже избыточно.

Кроме того, если есть init скрипт для сервиса, лучше использовать service модуль для управления им.