add nodejs vagrant / ansible
This commit is contained in:
parent
37e1841431
commit
d314955501
10 changed files with 133 additions and 0 deletions
5
nodejs.yml
Normal file
5
nodejs.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
- name: nodejs test
|
||||||
|
hosts: all
|
||||||
|
roles:
|
||||||
|
- nodejs
|
27
roles/nodejs/defaults/main.yml
Normal file
27
roles/nodejs/defaults/main.yml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
---
|
||||||
|
# Set the version of Node.js to install (8.x", "10.x", "12.x", "13.x", etc.).
|
||||||
|
# Version numbers from Nodesource: https://github.com/nodesource/distributions
|
||||||
|
nodejs_version: "14.x"
|
||||||
|
|
||||||
|
# The user for whom the npm packages will be installed.
|
||||||
|
# nodejs_install_npm_user: username
|
||||||
|
|
||||||
|
# The directory for global installations.
|
||||||
|
npm_config_prefix: "/usr/local/lib/npm"
|
||||||
|
|
||||||
|
# Set to true to suppress the UID/GID switching when running package scripts. If
|
||||||
|
# set explicitly to false, then installing as a non-root user will fail.
|
||||||
|
npm_config_unsafe_perm: "false"
|
||||||
|
|
||||||
|
# Define a list of global packages to be installed with NPM.
|
||||||
|
nodejs_npm_global_packages: []
|
||||||
|
# # Install a specific version of a package.
|
||||||
|
# - name: jslint
|
||||||
|
# version: 0.9.3
|
||||||
|
# # Install the latest stable release of a package.
|
||||||
|
# - name: node-sass
|
||||||
|
# # This shorthand syntax also works (same as previous example).
|
||||||
|
# - node-sass
|
||||||
|
|
||||||
|
# The path of a package.json file used to install packages globally.
|
||||||
|
nodejs_package_json_path: ""
|
38
roles/nodejs/tasks/main.yml
Normal file
38
roles/nodejs/tasks/main.yml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
- include: setup.yml
|
||||||
|
|
||||||
|
- name: Define nodejs_install_npm_user
|
||||||
|
set_fact:
|
||||||
|
nodejs_install_npm_user: "{{ ansible_user | default(lookup('env', 'USER')) }}"
|
||||||
|
when: nodejs_install_npm_user is not defined
|
||||||
|
|
||||||
|
- name: Create npm global directory
|
||||||
|
file:
|
||||||
|
path: "{{ npm_config_prefix }}"
|
||||||
|
owner: "{{ nodejs_install_npm_user }}"
|
||||||
|
group: "{{ nodejs_install_npm_user }}"
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
- name: Add npm_config_prefix bin directory to global $PATH.
|
||||||
|
template:
|
||||||
|
src: npm.sh.j2
|
||||||
|
dest: /etc/profile.d/npm.sh
|
||||||
|
mode: 0644
|
||||||
|
|
||||||
|
- name: Ensure npm global packages are installed.
|
||||||
|
npm:
|
||||||
|
name: "{{ item.name | default(item) }}"
|
||||||
|
version: "{{ item.version | default('latest') }}"
|
||||||
|
global: true
|
||||||
|
state: latest
|
||||||
|
environment:
|
||||||
|
NPM_CONFIG_PREFIX: "{{ npm_config_prefix }}"
|
||||||
|
NODE_PATH: "{{ npm_config_prefix }}/lib/node_modules"
|
||||||
|
NPM_CONFIG_UNSAFE_PERM: "{{ npm_config_unsafe_perm }}"
|
||||||
|
with_items: "{{ nodejs_npm_global_packages }}"
|
||||||
|
tags: ['skip_ansible_lint']
|
||||||
|
|
||||||
|
- name: Install packages defined in a given package.json.
|
||||||
|
npm:
|
||||||
|
path: "{{ nodejs_package_json_path }}"
|
||||||
|
when: nodejs_package_json_path is defined and nodejs_package_json_path
|
33
roles/nodejs/tasks/setup.yml
Normal file
33
roles/nodejs/tasks/setup.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
- name: Ensure dependencies are present.
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- apt-transport-https
|
||||||
|
- gnupg2
|
||||||
|
- build-essential
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add Nodesource apt key.
|
||||||
|
apt_key:
|
||||||
|
url: https://keyserver.ubuntu.com/pks/lookup?op=get&fingerprint=on&search=0x1655A0AB68576280
|
||||||
|
id: "68576280"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Add NodeSource repositories for Node.js.
|
||||||
|
apt_repository:
|
||||||
|
repo: "{{ item }}"
|
||||||
|
state: present
|
||||||
|
with_items:
|
||||||
|
- "deb https://deb.nodesource.com/node_{{ nodejs_version }} {{ ansible_distribution_release }} main"
|
||||||
|
- "deb-src https://deb.nodesource.com/node_{{ nodejs_version }} {{ ansible_distribution_release }} main"
|
||||||
|
register: node_repo
|
||||||
|
|
||||||
|
- name: Update apt cache if repo was added.
|
||||||
|
apt: update_cache=yes
|
||||||
|
when: node_repo.changed
|
||||||
|
tags: ['skip_ansible_lint']
|
||||||
|
|
||||||
|
- name: Ensure Node.js and npm are installed.
|
||||||
|
apt:
|
||||||
|
name: "nodejs={{ nodejs_version|regex_replace('x', '') }}*"
|
||||||
|
state: present
|
3
roles/nodejs/templates/npm.sh.j2
Normal file
3
roles/nodejs/templates/npm.sh.j2
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
export PATH=$PATH:{{ npm_config_prefix }}/bin
|
||||||
|
export NPM_CONFIG_PREFIX={{ npm_config_prefix }}
|
||||||
|
export NODE_PATH=$NODE_PATH:{{ npm_config_prefix }}/lib/node_modules
|
11
tests/dev/Vagrantfile
vendored
Normal file
11
tests/dev/Vagrantfile
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# vagrant cisti.org dev file
|
||||||
|
# use this vagrant to build and test your ansible role
|
||||||
|
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.define :dev do |dev|
|
||||||
|
dev.vm.box = "generic/debian10"
|
||||||
|
dev.vm.synced_folder "../..", "/vagrant", disabled: false
|
||||||
|
dev.vm.provision "shell", inline: "DEBIAN_FRONTEND=noninteractive apt-get -qq update && apt-get -y autoclean && apt-get -y autoremove"
|
||||||
|
dev.vm.provision "shell", inline: "DEBIAN_FRONTEND=noninteractive apt-get -fqy dist-upgrade && apt-get -qq -y install ansible"
|
||||||
|
end
|
||||||
|
end
|
1
tests/dev/roles
Symbolic link
1
tests/dev/roles
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../roles
|
8
tests/nodejs/Vagrantfile
vendored
Normal file
8
tests/nodejs/Vagrantfile
vendored
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
config.vm.define :node do |node|
|
||||||
|
node.vm.box = "generic/debian10"
|
||||||
|
node.vm.provision "ansible" do |ansible|
|
||||||
|
ansible.playbook = "./nodejs.yml"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
6
tests/nodejs/nodejs.yml
Normal file
6
tests/nodejs/nodejs.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
- name: nodejs test
|
||||||
|
hosts: localhost
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- nodejs
|
1
tests/nodejs/roles
Symbolic link
1
tests/nodejs/roles
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../roles
|
Loading…
Reference in a new issue