summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.yml1
-rw-r--r--group_vars/all.ymlbin4548 -> 4586 bytes
-rw-r--r--molecule/archlinux-gnome/converge.yml2
-rw-r--r--molecule/archlinux/converge.yml2
-rw-r--r--molecule/debian/converge.yml1
-rw-r--r--molecule/raspberrypi/converge.yml1
-rw-r--r--molecule/ubuntu/converge.yml1
-rw-r--r--roles/nodejs/defaults/main.yml4
-rw-r--r--roles/nodejs/meta/argument_specs.yml10
-rw-r--r--roles/nodejs/meta/main.yml19
-rw-r--r--roles/nodejs/tasks/main.yml41
11 files changed, 82 insertions, 0 deletions
diff --git a/configure.yml b/configure.yml
index ac288bfb..32d63a76 100644
--- a/configure.yml
+++ b/configure.yml
@@ -33,6 +33,7 @@
- role: "neomutt"
- role: "go"
- role: "python"
+ - role: "nodejs"
- role: "docker"
- role: "podman"
- role: "ansible"
diff --git a/group_vars/all.yml b/group_vars/all.yml
index 26247f9f..113cf50d 100644
--- a/group_vars/all.yml
+++ b/group_vars/all.yml
Binary files differ
diff --git a/molecule/archlinux-gnome/converge.yml b/molecule/archlinux-gnome/converge.yml
index 14dfe8ce..9fdde413 100644
--- a/molecule/archlinux-gnome/converge.yml
+++ b/molecule/archlinux-gnome/converge.yml
@@ -86,6 +86,8 @@
- role: "neomutt"
- role: "go"
- role: "python"
+ - role: "rust"
+ - role: "nodejs"
- role: "docker"
- role: "podman"
- role: "ansible"
diff --git a/molecule/archlinux/converge.yml b/molecule/archlinux/converge.yml
index ad3cc713..1e333410 100644
--- a/molecule/archlinux/converge.yml
+++ b/molecule/archlinux/converge.yml
@@ -85,6 +85,8 @@
- role: "neomutt"
- role: "go"
- role: "python"
+ - role: "rust"
+ - role: "nodejs"
- role: "docker"
- role: "podman"
- role: "ansible"
diff --git a/molecule/debian/converge.yml b/molecule/debian/converge.yml
index af1e4704..e00c4e7f 100644
--- a/molecule/debian/converge.yml
+++ b/molecule/debian/converge.yml
@@ -79,6 +79,7 @@
- role: "python"
- role: "go"
- role: "rust"
+ - role: "nodejs"
- role: "zoxide"
- role: "usbutils"
- role: "docker"
diff --git a/molecule/raspberrypi/converge.yml b/molecule/raspberrypi/converge.yml
index 5297e6fa..463678e3 100644
--- a/molecule/raspberrypi/converge.yml
+++ b/molecule/raspberrypi/converge.yml
@@ -75,6 +75,7 @@
- role: "python"
- role: "go"
- role: "rust"
+ - role: "nodejs"
- role: "zoxide"
- role: "usbutils"
- role: "wireguard"
diff --git a/molecule/ubuntu/converge.yml b/molecule/ubuntu/converge.yml
index 96e727ab..45389301 100644
--- a/molecule/ubuntu/converge.yml
+++ b/molecule/ubuntu/converge.yml
@@ -68,6 +68,7 @@
- role: "python"
- role: "go"
- role: "rust"
+ - role: "nodejs"
- role: "zoxide"
- role: "usbutils"
- role: "docker"
diff --git a/roles/nodejs/defaults/main.yml b/roles/nodejs/defaults/main.yml
new file mode 100644
index 00000000..f55774ee
--- /dev/null
+++ b/roles/nodejs/defaults/main.yml
@@ -0,0 +1,4 @@
+---
+nodejs_nvm_version: "0.40.4"
+nodejs_versions:
+ - "lts/*"
diff --git a/roles/nodejs/meta/argument_specs.yml b/roles/nodejs/meta/argument_specs.yml
new file mode 100644
index 00000000..41420690
--- /dev/null
+++ b/roles/nodejs/meta/argument_specs.yml
@@ -0,0 +1,10 @@
+---
+argument_specs:
+ main:
+ description: "Install nvm and nodejs (versions) on Linux distributions"
+ options:
+ python_versions:
+ type: "list"
+ description: "The nvm node versions to install (default to latest lts)"
+ elements: "str"
+ default: ["lts/*"]
diff --git a/roles/nodejs/meta/main.yml b/roles/nodejs/meta/main.yml
new file mode 100644
index 00000000..f76250dc
--- /dev/null
+++ b/roles/nodejs/meta/main.yml
@@ -0,0 +1,19 @@
+---
+dependencies:
+ - role: "bash"
+ - role: "curl"
+galaxy_info:
+ author: "a14m"
+ description: "Install nvm and nodejs (versions) on Linux distributions"
+ license: "MIT"
+ min_ansible_version: "2.18"
+ platforms:
+ - name: "ArchLinux"
+ versions:
+ - "all"
+ - name: "Ubuntu"
+ versions:
+ - "noble"
+ - name: "Debian"
+ versions:
+ - "bookworm"
diff --git a/roles/nodejs/tasks/main.yml b/roles/nodejs/tasks/main.yml
new file mode 100644
index 00000000..d0d0d8f6
--- /dev/null
+++ b/roles/nodejs/tasks/main.yml
@@ -0,0 +1,41 @@
+---
+- 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 }}"