Forge Home

nodejs

A module to install Node.js and NPM.

1,467,545 downloads

20,868 latest version

4.3 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 2.1.2 (latest)
  • 2.1.1
  • 2.1.0
  • 2.0.3
  • 2.0.2
  • 2.0.1
  • 2.0.0
  • 2.0.0-alpha3
  • 2.0.0-alpha2
  • 2.0.0-alpha1
  • 1.9.6
  • 1.9.5
  • 1.9.4
  • 1.9.3
  • 1.9.2
  • 1.9.1
  • 1.9.0
  • 1.8.6
  • 1.8.5
  • 1.8.4
  • 1.8.3
  • 1.8.2
  • 1.8.1
  • 1.8.0
  • 1.7.1
  • 1.7.0
  • 1.6.5
  • 1.6.4
  • 1.6.3
  • 1.6.2
  • 1.6.1
  • 1.6.0
  • 1.5.1
  • 1.5.0
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.3
  • 1.1.2
  • 1.1.1
  • 1.1.0
  • 1.0.0
  • 0.0.4
  • 0.0.3
  • 0.0.2
  • 0.0.1
released Nov 2nd 2016
This version is compatible with:
  • Puppet Enterprise 2017.2.x, 2017.1.x, 2016.5.x, 2016.4.x
  • Puppet >=3.4.0 <5.0.0
  • , , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'willdurand-nodejs', '2.0.0-alpha1'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add willdurand-nodejs
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install willdurand-nodejs --version 2.0.0-alpha1

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.

Download
Tags: nodejs, node, npm

Documentation

willdurand/nodejs — version 2.0.0-alpha1 Nov 2nd 2016

puppet-nodejs

Build
Status

This module allows you to install Node.js and NPM. This module is published on the Puppet Forge as willdurand/nodejs.

Version 1.9

The 1.x branch will be EOLed two months after 2.0 is released. If you need the docs for 1.x, see 1.9.

Installation

Manual installation

This modules depends on puppetlabs/stdlib and puppetlabs/gcc. So all repositories have to be checked out:

git clone git://github.com/willdurand/puppet-nodejs.git modules/nodejs
git clone git://github.com/puppetlabs/puppetlabs-stdlib.git modules/stdlib
git clone git://github.com/puppetlabs/puppetlabs-gcc.git modules/gcc

For Redhat based OS, the following are (typical) additional requirements:

git clone git://github.com/treydock/puppet-gpg_key.git modules/gpg_key

Puppet Module Tool:

puppet module install willdurand/nodejs

Librarian-puppet:

mod 'willdurand/nodejs', '2.x.x'

Usage

There are a few ways to use this puppet module. The easiest one is just using the class definition:

class { 'nodejs':
  version => 'v6.0.0',
}

This install the precompiled Node.js version v6.0.0 on your machine. node and npm will be available in your $PATH at /usr/local/bin so you can just start using node.

Shortcuts are provided to easily install the latest release or the latest LTS release (lts) by setting the version parameter to latest or lts. It will automatically look for the last release available on https://nodejs.org.

# installs the latest nodejs version
class { 'nodejs':
  version => 'latest',
}
# installs the latest nodejs LTS version
class { 'nodejs':
  version => 'lts',
}

Compiling from source

In order to compile from source with gcc, the make_install must be true.

class { 'nodejs':
  version      => 'lts',
  make_install => true,
}

Setup using a generic version

Instead of fixing one specific nodejs version it's also possible to tell this module whether to use the latest of a certain minor release:

class { '::nodejs':
  version => '6.3',
}

This will install the latest patch release of 6.3.x.

The same is possible with major releases:

class { '::nodejs':
  version => '6.x',
}

This will install the latest 6.x release.

Setup with a given download timeout

Due to infrastructures with slower connections the download of the nodejs binaries should be configurable:

::Nodejs::Install::Download {
  timeout => 300
}

class { '::nodejs': }

Setup multiple versions of Node.js

If you need more than one installed version of Node.js on your machine, you can just configure them using the instances list.

class { '::nodejs':
  version => 'v6.0.0',
  instances => {
    "node-v6" => {
      version => 'v6.0.0'
    },
    "node-v5" => {
      version => 'v5.0.0'
    }
  },
}

This will install the node version v5.0.0 and v6.0.0 on your machine with v6.0.0 as default and v5.0.0 as versioned binary in /usr/local/bin:

/usr/local/bin/node # v6.0.0
/usr/local/bin/node-v6.0.0
/usr/local/bin/npm-v6.0.0

/usr/local/bin/npm # NPM shipped with v6.0.0
/usr/local/bin/npm-v5.0.0
/usr/local/bin/npm-v5.0.0

It is also possible to remove those versions again:

class { '::nodejs':
  # ...
  instances_to_remove => ['5.4'],
}

After the run the directory /usr/local/node/node-v5.4.1 has been purged. The link /usr/local/bin/node-v5.4.1 is also purged.

Note: It is not possible to install and uninstall an instance in the same run. The version defined in the version parameter of the nodejs class can't be removed in the same run. If a version should be removed, it must not be present in the instances list.

Setup using custom amount of cpu cores

By default, all available cpu (that are detected using the ::processorcount fact) cores are being used to compile nodejs. Set cpu_cores to any number of cores you want to use.

class { 'nodejs':
  version   => 'lts',
  cpu_cores => 2,
}

Configuring $NODE_PATH

The environment variable $NODE_PATH can be configured using the init manifest:

class { '::nodejs':
  version   => 'lts',
  node_path => '/your/custom/node/path',
}

It is not possible to adjust a $NODE_PATH through ::nodejs::install.

Binary path

node and npm are linked to /usr/local/bin to be available in your system $PATH by default. To link those binaries to e.g /bin, just set the parameter target_dir.

class { 'nodejs':
  version    => 'lts',
  target_dir => '/bin',
}

NPM

Also, this module installs NPM by default.

NPM Provider

This module adds a new provider: npm. You can use it as usual:

package { 'express':
  provider => npm
}

Note: When deploying a new machine without nodejs already installed, your npm package definition requires the nodejs class:

class { 'nodejs':
  version => 'lts'
}

package { 'express':
  provider => 'npm',
  require  => Class['nodejs']
}

NPM installer

The nodejs installer can be used if a npm package should not be installed globally, but in a certain directory.

There are two approaches how to use this feature:

Installing a single package into a directory

::nodejs::npm { 'npm-webpack':
  ensure       => present, # absent would uninstall this package
  pkg_name     => 'webpack',
  version      => 'x.x', # optional
  install_opt  => '-x -y -z', # options passed to the "npm install" cmd, optional
  remove_opt   => '-x -y -z', # options passed to the "npm remove" cmd (in case of ensure => absent), optional
  exec_as_user => 'vagrant',  # exec user, optional
  directory    => '/target/directory', # target directory
}

This would install the package webpack into /target/directory with version x.x.

Executing a package.json file

::nodejs::npm { 'npm-install-dir':
  list         => true, # flag to tell puppet to execute the package.json file
  directory    => '/target',
  exec_as_user => 'vagrant',
  install_opt  => '-x -y -z',
}

Proxy

When your puppet agent is behind a web proxy, export the http_proxy environment variable:

export http_proxy=http://myHttpProxy:8888

Vagrant environment

If you're using a vagrant environment, you should set the contain_ruby parameter in the ::nodejs class to true:

class { '::nodejs':
  install_ruby => true,
}

By default no ruby is installed on the target machine since everything that needs ruby (e.g. the version detection) lives now in functions being evaluated on the puppet master. As vagrant doesn't contain a "real" puppet master, everything's evaluated on the machine, so ruby must be installed there, too.

Running the tests

Install the dependencies using Bundler:

bundle install

Run the following command:

bundle exec rake test

Authors

License

puppet-nodejs is released under the MIT License. See the bundled LICENSE file for details.