Я использую 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
модуль для управления им.