Defined Type: psick::nodejs::nvm

Defined in:
manifests/nodejs/nvm.pp

Summary

This define installs node vi nvm

Overview

A description of what this class does

Parameters:

  • nvm_manage (Boolean) (defaults to: true)
  • user (String) (defaults to: $title)
  • node_instances (Hash) (defaults to: {})
  • node_instance_default (String) (defaults to: '8.12.0')
  • npm_packages (Hash) (defaults to: {})
  • install_script_url (String) (defaults to: 'https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh')


5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'manifests/nodejs/nvm.pp', line 5

define psick::nodejs::nvm (
  Boolean $nvm_manage           = true,
  String $user                  = $title,

  Hash $node_instances          = {},
  String $node_instance_default = '8.12.0',

  Hash $npm_packages            = {},

  String $install_script_url = 'https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh',
) {
  $nvm_target = $user ? {
    'root'  => '/root',
    default => "/home/${user}",
  }

  # NVM  management
  if $nvm_manage {
    archive { "${nvm_target}/nvm_install.sh":
      source        => $install_script_url,
      extract       => false,
      checksum_type => 'none',
      cleanup       => false,
      user          => $user,
      group         => $user,
      before        => File["${nvm_target}/nvm_install.sh"],
    }
    file { "${nvm_target}/nvm_install.sh":
      mode   => '0777',
      owner  => $user,
      group  => $user,
      before => Exec["nvm_installation for ${title}"],
    }
    file { "${nvm_target}/.nvm":
      ensure => directory,
      owner  => $user,
      group  => $user,
      before => Exec["nvm_installation for ${title}"],
    }
    exec { "nvm_installation for ${title}":
      command     => "${nvm_target}/nvm_install.sh",
      cwd         => $nvm_target,
      user        => $user,
      path        => $facts['path'],
      creates     => "${nvm_target}/.nvm/nvm.sh",
      environment => ["NVM_DIR=${nvm_target}/.nvm"],
      provider    => shell,
    }
    file { "${nvm_target}/npm":
      ensure => link,
      owner  => $user,
      group  => $user,
      target => "${nvm_target}/.nvm/versions/node/v${node_instance_default}",
    }
  }

  if $node_instance_default {
    psick::nodejs::install { $node_instance_default:
      user        => $user,
      set_default => true,
      require     => Exec["nvm_installation for ${title}"],
    }
  }

  $node_instances.each |$k,$v| {
    psick::nodejs::install { $k:
      user    => $user,
      require => Exec["nvm_installation for ${title}"],
      *       => $v,
    }
  }

  $npm_defaults = {
    user    => $user,
    require => File["${nvm_target}/npm"],
  }
  $npm_packages.each | $k,$v | {
    psick::nodejs::npm { $k:
      * => $npm_defaults + $v,
    }
  }
}