diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..617ec1c --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Generated by MacOS +.DS_Store + +# Generated by Windows +Thumbs.db \ No newline at end of file diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..cc580b0 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,10 @@ +--- +nodejs_version: 20.x # LTS: 20.x + +nodejs_nvm: false +nodejs_nvm_version: 20.0.0 + +nodejs_user: "root" + +npm_modules: [] +composer: false \ No newline at end of file diff --git a/handlers/main.yml b/handlers/main.yml new file mode 100644 index 0000000..73b314f --- /dev/null +++ b/handlers/main.yml @@ -0,0 +1 @@ +--- \ No newline at end of file diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..3df3609 --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,14 @@ +galaxy_info: + author: Michael Hettwer + description: NodeJS + company: Linux-Server-Admin.com S.R.O. + license: Apache-2.0 + min_ansible_version: 2.1 + platforms: + - name: Debian + versions: + - 10 + - 11 + - 12 + galaxy_tags: [] +dependencies: [] \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..7816c16 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,95 @@ +--- +- name: "Add nodejs {{ nodejs_version }} repositories" + ansible.builtin.shell: "curl -fsSL https://deb.nodesource.com/setup_{{ nodejs_version }} | sudo bash -" + become: yes + become_flags: -i # Execute config f + +- name: "Install nodejs {{ nodejs_version }}" + apt: + pkg: + - nodejs + +# Setup node+nvm , check latest release at https://github.com/nvm-sh/nvm + +- name: Setup Node + become: yes + become_flags: -i # Execute config files such as .profile (Ansible uses non-interactive login shells) + become_user: "{{ nodejs_user }}" + block: + - name: Install nvm + become: yes + become_user: "{{ nodejs_user }}" + ansible.builtin.shell: > + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.40.4/install.sh | bash + args: + executable: /bin/bash + chdir: "$HOME" + creates: "$HOME/.nvm/nvm.sh" + + - name: Install node + become: yes + become_user: "{{ nodejs_user }}" + shell: > + . $HOME/.nvm/nvm.sh && nvm install {{ item }} + args: + executable: /bin/bash + chdir: "$HOME" + creates: "$HOME/.nvm/versions/{{ item }}" + loop: + - "{{ nodejs_nvm_version }}" + when: nodejs_nvm + +- name: Install PM2 globally + npm: + name: pm2 + global: true + state: present + become: true + become_user: "{{ nodejs_user }}" + +- name: Add extras + become: yes + become_flags: -i # Execute config files such as .profile (Ansible uses non-interactive login shells) + become_user: "{{ nodejs_user }}" + + block: + - name: Install npm modules + become: yes + become_user: "{{ nodejs_user }}" + ansible.builtin.shell: > + npm install {{ item.name }} + args: + executable: /bin/bash + chdir: "$HOME" + with_items: "{{ npm_modules }}" + when: npm_modules is defined + - name: Enable npm modules + become: yes + become_user: "{{ nodejs_user }}" + ansible.builtin.shell: > + {{ item.enable }} + args: + executable: /bin/bash + chdir: "$HOME" + with_items: "{{ npm_modules }}" + when: npm_modules.item.enable is true + #sudo npm install --global --unsafe-perm puppeteer + +- name: Download and install Composer + shell: curl -sS https://getcomposer.org/installer | php + args: + chdir: /usr/src/ + creates: /usr/local/bin/composer + become: yes + when: composer + +- name: Add Composer to global path + copy: + dest: /usr/local/bin/composer + group: root + mode: '0755' + owner: root + src: /usr/src/composer.phar + remote_src: yes + become: yes + when: composer