Node.js
Another example of a profile could be a Node.js Stack. In this case we will need not only modules that take care of installing Node.js, but also some directories to place our node application. Higher level modules can make
# nodeapp/manifests/params.pp
class nodeapp::params {
nodejs_version => 'v4.0.0',
application_user => 'web',
application_name => 'default',
application_directory => '/opt/myapps',
}
# nodeapp/manifests/init.pp
class nodeapp (
$nodejs_version = $::nodeapp::params::nodejs_version,
$user = $::nodeapp::params::application_user,
$name = $::nodeapp::params::application_name,
$directory = $::nodeapp::params::application_directory,
){
class{'nodejs':
version => $nodejs_version
}
contain nodejs
class{'nodeapp::directories':
owner => $user,
directory => "${directory}/${name}"
}
contain nodeapp::directories
}
# myapp/manifests/init.pp
class myapp{
class{'nodeapp':
name => 'myapp'
}
contain 'nodeapp'
}