Search code examples
linuxubuntuansiblepm2

pm2 log-rotate with ansible


I am writing an ansible playbook to perform various pm2 functions.

I have searched a bit and cannot find an example of someone setting up pm2-logrotate.

I believe I am close but I'm not sure my shell commands are working. When I ssh into the child node and run sudo pm2 ls it says In-memory PM2 is out-of-date, do: $ pm2 update even though I am running that command from my playbook. What am I missing here?

---
# RUN playbook
# ansible-playbook -K pm2-setup.yml

- name: Setup pm2 and pm2-logrotate
  hosts: devdebugs
  remote_user: ansible
  become: true

  tasks:
    - name: Install/Update pm2 globally
      community.general.npm: 
        name: pm2
        global: yes
        state: latest

    - name: Update In-memory pm2
      ansible.builtin.shell: pm2 update
      
    - name: Install/Update pm2-logrotate globally
      ansible.builtin.shell: pm2 install pm2-logrotate

    - name: Copy pm2-logrotate config
      ansible.builtin.copy:
        src: /home/ubuntu/files/pm2-logrotate-conf.json
        dest: /home/ubuntu/.pm2/module_conf.json
        owner: root
        group: root
        mode: '0644'
...

Bonus question: is there a way to skip the shell commands if they aren't needed (i.e. if pm2-logrotate is already installed)?


Solution

  • I was mixing up the users on my server. I fixed this by specifying to run as ubuntu for the update command.