Я использую Ansible для создания pm2 сервиса на EC2 / экземпляр Ubuntu. Ниже сценарий. Когда я выполняю его, 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
Этот playbook не идемпотентен, задача оболочки
будет запускаться каждый раз, когда playbook запускается, вам нужно предоставить аргумент created
для эта задача.
В текущей версии PM2:
var scriptFile = '/etc/init.d/pm2-init.sh',
script = cst.UBUNTU_STARTUP_SCRIPT;
Кроме того, использование sudo
является избыточным, поскольку оно уже глобально определено выше, и по умолчанию sudo
в root
, так что это тоже избыточно.
Кроме того, если для службы существует сценарий init
, было бы лучше использовать service
модуль для управления им.