Puppet Class: nodejs::install

Defined in:
manifests/install.pp

Overview

Class: nodejs::install

Install NodeJS for Darwin

Authors

Ryan Skoblenick <ryan@skoblenick.com>

Copyright 2013 Ryan Skoblenick.



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
# File 'manifests/install.pp', line 13

class nodejs::install {

  $version = $nodejs::version

  $arch = $::architecture ? {
    /(x86_64|amd64)/ => 'x64',
    'i386'           => 'x86',
    default          => fail("Unrecognized architecture: ${::architecture}")
  }

  $kernel = downcase($::kernel)

  $source = $kernel ? {
    /(darwin|linux)/ => "http://nodejs.org/dist/v${version}/node-v${version}-${kernel}-${arch}.tar.gz",
    default => fail("Unsupported Kernel: ${::kernel}, Operating System: ${::operatingsystem}")
  }

  Exec {
    cwd => '/tmp',
    path => '/usr/sbin:/usr/bin:/bin',
    onlyif => "test ! -f /var/db/.puppet_binary_installed_nodejs-${version}",
  }

  exec {'nodejs-download':
    command => "curl -o node-v${version}-${kernel}-${arch}.tar.gz -C - -k -L -s --url ${source}",
  }
  ->
  exec {'nodejs-extract':
    command => "tar -xzvf node-v${version}-${kernel}-${arch}.tar.gz",
  }
  ->
  exec {'nodejs-install-bin':
    command => 'cp -rf ./bin /usr/local',
    cwd => "/tmp/node-v${version}-${kernel}-${arch}",
    user => 'root',
  }
  ->
  exec {'nodejs-install-lib':
    command => 'cp -rf ./lib /usr/local',
    cwd => "/tmp/node-v${version}-${kernel}-${arch}",
    user => 'root',
  }
  ->
  exec {'nodejs-install-share':
    command => 'cp -rf ./share /usr/local',
    cwd => "/tmp/node-v${version}-${kernel}-${arch}",
    user => 'root',
  }
  ->
  file {"/tmp/node-v${version}-${kernel}-${arch}":
    ensure => absent,
    recurse => true,
    force => true,
    subscribe => [Exec['nodejs-install-bin'], Exec['nodejs-install-lib'], Exec['nodejs-install-share'] ]
  }
  ->
  file {"/tmp/node-v${version}-${kernel}-${arch}.tar.gz":
    ensure => absent,
  }
  ->
  file {"/var/db/.puppet_binary_installed_nodejs-${version}":
    ensure => file,
    content => "name:'nodejs'\nsource:'${source}'",
    owner => 'root',
    group => 'wheel',
    mode => '0644',
  }
}