diff --git a/roles/nvm/tasks/nvm-install.yml b/roles/nvm/tasks/nvm-install.yml index c3bed61..6f3b42d 100644 --- a/roles/nvm/tasks/nvm-install.yml +++ b/roles/nvm/tasks/nvm-install.yml @@ -1,5 +1,51 @@ --- -# Should we detect for an existing nvm / node is installed +- name: Check if NVM is installed + ansible.builtin.shell: command -v nvm + changed_when: false + failed_when: false + register: nvm_installed + +- name: Check if Node is installed + ansible.builtin.shell: command -v node + changed_when: false + failed_when: false + register: node_installed + +- name: Get Installed Node Version + ansible.builtin.shell: node --version | cut -c2- + register: node_version + changed_when: false + failed_when: false + when: node_installed.stdout != "" + +- name: Set Node Version + ansible.builtin.set_fact: + node_installed_version: "{{ node_version.stdout }}" + when: node_installed.stdout != "" + +- name: Check if Node Update is needed + ansible.builtin.assert: + that: + - node_installed_version is version_compare(nvm.node.version, '!=') + success_msg: "Node Version Needs to be Updated / Reinstalled." + fail_msg: "Node Version is already up to date." + register: node_update_needed + when: node_installed.stdout != "" + +# To trick ansible into running the purge tasks here, +# we need to apply the 'install' tags to the purge tasks +- name: Purge NVM and Node + ansible.builtin.include_role: + name: nvm + tasks_from: nvm-purge.yml + apply: + tags: + - nvm-install + - nvm + - all + when: + - node_update_needed is defined + - node_update_needed - name: Ensure NVM Directory exists ansible.builtin.file: @@ -44,3 +90,51 @@ creates: "/home/{{ global.user }}/.nvm/versions/node/v{{ nvm.node.version }}" become: true become_user: "{{ global.user }}" + +- name: Install Logrotate + ansible.builtin.include_role: + name: logrotate + tasks_from: logrotate-install.yml + apply: + tags: + - nvm-install + - nvm + when: + - node_update_needed is defined + - node_update_needed + +- name: Install PM2 + ansible.builtin.include_role: + name: pm2 + tasks_from: pm2-install.yml + apply: + tags: + - nvm-install + - nvm + when: + - node_update_needed is defined + - node_update_needed + +- name: Install Watchdog + ansible.builtin.include_role: + name: watchdog + tasks_from: watchdog-install.yml + apply: + tags: + - nvm-install + - nvm + when: + - node_update_needed is defined + - node_update_needed + +- name: Start PM2 + ansible.builtin.include_role: + name: pm2 + tasks_from: pm2-conf.yml + apply: + tags: + - nvm-install + - nvm + when: + - node_update_needed is defined + - node_update_needed diff --git a/roles/nvm/tasks/nvm-purge.yml b/roles/nvm/tasks/nvm-purge.yml index f9338ad..6871430 100644 --- a/roles/nvm/tasks/nvm-purge.yml +++ b/roles/nvm/tasks/nvm-purge.yml @@ -9,6 +9,36 @@ name: daemon tasks_from: daemon-stop.yml +- name: Purge Logrotate + ansible.builtin.include_role: + name: logrotate + tasks_from: logrotate-purge.yml + apply: + tags: + - nvm-purge + - purge + become: true + +- name: Purge PM2 + ansible.builtin.include_role: + name: pm2 + tasks_from: pm2-purge.yml + apply: + tags: + - nvm-purge + - purge + become: true + +- name: Purge Watchdog + ansible.builtin.include_role: + name: watchdog + tasks_from: watchdog-purge.yml + apply: + tags: + - nvm-purge + - purge + become: true + - name: Remove nvm and node files ansible.builtin.file: path: "{{ item }}" diff --git a/roles/pm2/tasks/pm2-stop.yml b/roles/pm2/tasks/pm2-stop.yml index 3a6d506..5fd5278 100644 --- a/roles/pm2/tasks/pm2-stop.yml +++ b/roles/pm2/tasks/pm2-stop.yml @@ -6,6 +6,7 @@ source /home/{{ global.user }}/.nvm/nvm.sh {{ item }} changed_when: false + ignore_errors: true args: executable: /bin/bash loop: diff --git a/vars.yml b/vars.yml index b08a6c7..68af005 100644 --- a/vars.yml +++ b/vars.yml @@ -29,7 +29,7 @@ fluxbench: nvm: repo: https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh node: - version: 16.19.1 + version: 20.9.0 ip: url1: https://api.ipify.org