fix: install Node JS using correct repo settings

According to the bash setup script for nodesource, the distro has to be
set to |nodistro| instead of the actual distro name (as the zuul-jobs
role did). Also, the GPG key has to be downloaded from another URL now.

Thus, we're forking the role and modifying all this in order to fix
the issue with installing Node JS.

Change-Id: Ib76282e6fa112efc8e956d1d0b9beec92029b2e4
diff --git a/roles/ensure-nodejs-fork/tasks/main.yaml b/roles/ensure-nodejs-fork/tasks/main.yaml
new file mode 100644
index 0000000..cc04519
--- /dev/null
+++ b/roles/ensure-nodejs-fork/tasks/main.yaml
@@ -0,0 +1,53 @@
+- name: Update apt cache
+  apt:
+    update_cache: yes
+  become: yes
+
+- name: Install prereqs
+  package:
+    name: apt-transport-https
+    state: present
+  become: yes
+
+- name: Pin nodejs installs to nodesource
+  copy:
+    src: 00-nodesource.pref
+    dest: /etc/apt/preferences.d/00-nodesource.pref
+    mode: 0644
+  become: yes
+
+- name: Add all repositories
+  include_role:
+    name: ensure-package-repositories
+  vars:
+    repositories_keys:
+      - url: https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key
+    repositories_list:
+      - repo: deb-src https://deb.nodesource.com/node_{{ node_version }}.x nodistro main
+      - repo: deb https://deb.nodesource.com/node_{{ node_version }}.x nodistro main
+
+# Use template so that we can easily update this in the future to be able to
+# use a mirror location.
+- name: Pin NodeJS to nodesource apt repository
+  become: yes
+  template:
+    dest: /etc/apt/preferences.d/nodejs.pref
+    group: root
+    mode: 0644
+    owner: root
+    src: nodejs.pref.j2
+
+- name: Install NodeJS from nodesource
+  package:
+    name: nodejs
+    state: latest
+  become: yes
+  tags:
+    # Ignore ANSIBLE0010: We really want latest version
+    - skip_ansible_lint
+
+- name: Output node version
+  command: node --version
+
+- name: Output npm version
+  command: npm --version