2016-02-16 1 views
1

Quelle est la bonne façon de configurer l'application node.js sur le serveur Ubuntu avec Ansible?Ansible. Comment exécuter l'application node.js via pm2

Maintenant, je suis en train d'enregistrer PM2 comme un service comme le code ci-dessous:

- name: install pm2 
    npm: 
    name: pm2 
    global: yes 
    state: present 

- name: create pm2 init.d script 
    template: 
    src: pm2_init_config.j2 
    dest: "/etc/init.d/pm2" 
    backup: yes 


- name: ensure pm2 service is started 
    service:· 
    name: pm2 
    state: started 
    enabled: yes 

mais rencontrer étrange erreur: pm2 unrecognized service dans la console Ansible

Le pm2_init_config est similaire à this one

si je ssh à la boîte et exécuter sudo service pm2 start tout fonctionne comme prévu

+0

Pouvez-vous publier le fichier 'pm2_init_config.j2' aussi? – ydaetskcoR

+0

Ajouté mais le problème n'est pas lié – kharandziuk

+0

Et que se passe-t-il si vous avez SSH dans la boîte après avoir exécuté Ansible et essayé 'service pm2 start'? – ydaetskcoR

Répondre

1

Le changement ci-dessous a résolu le problème:

- name: create pm2 init.d script 
    template: 
     src: pm2_init_config.j2 
     dest: "/etc/init.d/pm2" 
     backup: yes 
     mode: 0751 

Je ne sais pas pourquoi cela fonctionne. Quelqu'un peut-il expliquer cette astuce avec le mode?

+3

Mode définit les autorisations de fichier, dans ce cas, vous définissez le fichier à être exécutable (ce qui est probablement ce qui le corrige) par tout le monde, lisible par le groupe. Pour plus vous devriez lire sur chmod et chown. – cynicaljoy

+0

Je connais les modes en général. Je suppose que vous avez raison, car cela rend le script exécutable. C'est un détail très peu intuitif je pense – kharandziuk