--- - name: "Check if nvm binary exists" ansible.builtin.stat: path: "{{ ansible_facts['env']['HOME'] }}/.nvm/nvm.sh" register: nodejs_nvm_binary - name: "Download nvm installer" ansible.builtin.get_url: url: "https://raw.githubusercontent.com/nvm-sh/nvm/v{{ nodejs_nvm_version }}/install.sh" dest: "/tmp/install_nvm.sh" mode: "0755" when: not nodejs_nvm_binary.stat.exists - name: "Install nvm" ansible.builtin.command: cmd: "/tmp/install_nvm.sh" args: creates: "{{ ansible_facts['env']['HOME'] }}/.nvm/nvm.sh" when: not nodejs_nvm_binary.stat.exists - name: "Add nvm to shell profile" ansible.builtin.blockinfile: path: "{{ ansible_facts['env']['HOME'] }}/.bashrc" state: "present" prepend_newline: true append_newline: true marker: "# ==== {mark} ANSIBLE NVM CONFIG" block: | if [ -f "$HOME/.nvm/nvm.sh" ]; then export NVM_DIR=~/.nvm source "$HOME/.nvm/nvm.sh" fi - name: "Install nodejs versions" ansible.builtin.shell: cmd: "source {{ ansible_facts['env']['HOME'] }}/.nvm/nvm.sh && nvm install {{ item }}" args: executable: /bin/bash register: nodejs_nvm_install_result changed_when: "'already installed' not in nodejs_nvm_install_result.stderr" loop: "{{ nodejs_versions }}"