https://github.com/jerakia/puppet-jerakia
Puppet module for managing Jerakia
https://github.com/jerakia/puppet-jerakia
Last synced: 10 months ago
JSON representation
Puppet module for managing Jerakia
- Host: GitHub
- URL: https://github.com/jerakia/puppet-jerakia
- Owner: jerakia
- Created: 2015-11-17T11:08:26.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2020-07-24T11:01:38.000Z (almost 6 years ago)
- Last Synced: 2025-07-07T07:06:45.535Z (12 months ago)
- Language: Puppet
- Size: 22.5 KB
- Stars: 2
- Watchers: 2
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# jerakia
## Introduction
This is a puppet module to manage [Jerakia](http://jerakia.io), a data lookup tool.
Jerakia can be used as a hiera backend, or plugged directly into Puppet as a data_binding terminus.
Jerakia is a pluggable hierarchical data lookup engine. It is not a database, Jerakia itself does not store any data but rather gives a single point of access to your data via a variety of back end data sources. Jerakia is inspired by Hiera, and can be used a drop in replacement. Hiera itself is a good tool, however it suffers from some degree of limitation in its architecture that makes solving complex edge cases a challenge. Jerakia is an attempt at a different way of approaching data lookup management. Jerakia started out as a prototype experiment to replace hiera in order to solve a number of complicated requirements for a particular project, over time it matured a bit and we decided to open source it and move it towards a standalone data lookup system.
For more information on Jerakia, visit:
* [The official website - jerakia.io](http://jerakia.io)
* [Blog post part 1: Solving real world problems with Jerakia](http://www.craigdunn.org/2015/09/solving-real-world-problems-with-jerakia/)
* [Blog post part 2: Extending Jerakia with lookup plugins](http://www.craigdunn.org/2015/09/extending-jerakia-with-lookup-plugins/)
## Configuring with Puppet
### Quick start
For a very quick working set up you can configure Jerakia with all the defaults, and install a default lookup policy
```puppet
class { '::jerakia': }
jerakia::policy { 'default': }
```
After running puppet, populate some data and look up from the command line
```
# mkdir /var/lib/jerakia
# cat < /var/lib/jerakia/common.yaml
> ---
> foo: hello world
EOF
# jerakia -k foo
hello world
```
## Class: jerakia
The `jerakia` class supports the following optional parameters
* `package_install_options` : array of install options for package (default: undef)
* `package_name` : name of the package to install (default: jerakia)
* `package_provider`: provider to use (default: gem)
* `package_uninstall_options` : array of uninstall options for package (default: undef)
* `package_version`: package version (default: latest)
* `install_package`: If set to false, don't manage the package (default: true)
* `config_dir`: Location of the configuration directory
* `config_replace`: If set to false, will not overwrite the config after creation
* `policy_dir`: Location of the policy directory
* `manage_config_dir`: Create/manage the config dir (default: true)
* `manage_plugin_dir`: Create/manage the plugin dir (default: true)
* `manage_policy_dir`: Create/manage the policy dir (default: true)
* `manage_log_dir`: Create/manage the parent directory of the logfile path (default: true)
* `plugin_dir`: Location of the plugins
* `logfile`: Path to the logfile
* `log_level`: Loglevel (default: info)
* `logfile_owner`: Logfile owner (default: puppet)
* `logfile_group`: Logfile group (default: puppet)
* `logfile_mode`: Logfile mode (default: 0644)
* `private_key`: If using eyaml, the path to the private key (default: empty)
* `public_key` If using eyaml, the path to the public key (default: empty)
* `enable_schemas`: Enable or disable schemas by setting true or false
* `schema_opts`: A hash containing schema override options
* `plugin_opts`: A hash of options to be passed to plugins
### Examples:
```puppet
class { 'jerakia': }
```
```puppet
class { 'jerakia':
schema_opts => {
"docroot" => "/var/lib/jerakia/data/_schema",
}
}
```
```puppet
class { 'jerakia':
plugin_opts => {
"my_plugin" => {
"param" => "value",
},
}
}
```
### Defined Type, jerakia::policy
Jerakia policies are written in Ruby DSL and reside under the `$policy_dir` directory. The module provides a helper defined type for managing policies. The contents of the policy file can be sourced from any Puppet module by providing the `template` parameter. All data in the `params` parameter will be passed to the template. An example quick start default policy is provided and can be enabled using:
```puppet
jerakia::policy { 'default': }
```
You can injecty our own templates and data into a policy by overriding the defaults. eg:
```puppet
jerakia::policy { 'default':
template => 'mymodule/jerakia.erb',
params => {
'docroot' => '/var/lib/jerakia',
'mydata' => 'myvalue',
}
}
```
The contents of the `params` hash is arbitry and entirely dependant on what your template looks for. See `templates/default_policy.erb` for an example
The `jerakia::policy` type supports the following parameters
* `policy_dir`: The location of policy files, defaults to the value defined in `jerakia::policy_dir`
* `params`: A hash of parameters to be consumed by the policy template
* `template`: The template to use (default: jerakia/default_policy.erb)
* `replace`: If set to false then Puppet will not overwrite the policy file after creation (default: true)
## Hiera 5 data provider
This module also provides the Hiera 5 data provider for integrating Puppet 4.9+ (Hiera 5) with Jerakia Server
The data provider should be configured as a lookup_key type level in your Hiera hierarchy using the `jerakia` function, eg:
```yaml
---
version: 5
hierarchy:
- name: Jerakia
lookup_key: jerakia
options:
token: puppet:63d0626015b5993e6e6c35da06c2548a6c631f5634f3d7056cdd074156a8183d5eff04f825dc447b
scope:
environment: "%{environment}"
role: "%{facts.role}"
```
Please see [Integration with Puppet](http://jerakia.io/integration/puppet) from the official documentation for more details on using the Hiera 5 backend