In my previous post, we took a look at creating classes in Puppet and applying them locally. Let us look at installing Puppet modules next. Puppet does not install
Common functionalities like reading a JSON file are part of
Let us consider an example of reading a JSON file in a Puppet manifest. It can be an example of reading some config from an external resource.
Let us consider the module
To test, let us create a file at with the following content.
To apply the manifest, we can try running the following:
This fails because
stdlib
by default unlike other programming environments.Common functionalities like reading a JSON file are part of
stdlib
module. It can often come in handy. Installing it is straightforward. However, after installation the modules are not loaded at run time.Let us consider an example of reading a JSON file in a Puppet manifest. It can be an example of reading some config from an external resource.
Let us consider the module
mod
which we created in the previous post.class mod::test_json{
include mod
$hash = loadjson('/tmp/load.json')
[$message, $return_value] = $hash['output']
notice("$message, $return_value")
}
To test, let us create a file at with the following content.
{
"output": {
"message": "The value is: ",
"return_value": "0"
}
}
To apply the manifest, we can try running the following:
puppet apply --modulepath=/path/to/parent/of/module -e "include mod::test_json"
This fails because
loadjson
is in stdlib
. We need to enhance the module path to include stdlib as well. Modules are installed to the path /etc/puppetlabs/code/environments/production/modules
. So, we need to modify our command as follows:puppet apply --modulepath=/etc/puppetlabs/code/environments/production/modules:/vagrant/puppet -e "include elk::test_json"
No comments:
Post a Comment