{"id":19454862,"url":"https://github.com/jerakia/puppet-jerakia","last_synced_at":"2025-08-19T01:08:26.333Z","repository":{"id":83195271,"uuid":"46341776","full_name":"jerakia/puppet-jerakia","owner":"jerakia","description":"Puppet module for managing Jerakia","archived":false,"fork":false,"pushed_at":"2020-07-24T11:01:38.000Z","size":23,"stargazers_count":2,"open_issues_count":2,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-07T07:06:45.535Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Puppet","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jerakia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-11-17T11:08:26.000Z","updated_at":"2022-01-13T16:37:49.000Z","dependencies_parsed_at":"2023-07-02T06:07:08.196Z","dependency_job_id":null,"html_url":"https://github.com/jerakia/puppet-jerakia","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/jerakia/puppet-jerakia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerakia%2Fpuppet-jerakia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerakia%2Fpuppet-jerakia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerakia%2Fpuppet-jerakia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerakia%2Fpuppet-jerakia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jerakia","download_url":"https://codeload.github.com/jerakia/puppet-jerakia/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerakia%2Fpuppet-jerakia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271083757,"owners_count":24696361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-18T02:00:08.743Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T17:12:16.184Z","updated_at":"2025-08-19T01:08:26.302Z","avatar_url":"https://github.com/jerakia.png","language":"Puppet","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jerakia\n\n\n## Introduction \n\nThis is a puppet module to manage [Jerakia](http://jerakia.io), a data lookup tool.\n\nJerakia can be used as a hiera backend, or plugged directly into Puppet as a data_binding terminus.\n\nJerakia 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.\n\nFor more information on Jerakia, visit:\n\n* [The official website - jerakia.io](http://jerakia.io)\n* [Blog post part 1: Solving real world problems with Jerakia](http://www.craigdunn.org/2015/09/solving-real-world-problems-with-jerakia/)\n* [Blog post part 2: Extending Jerakia with lookup plugins](http://www.craigdunn.org/2015/09/extending-jerakia-with-lookup-plugins/)\n\n## Configuring with Puppet\n\n### Quick start\n\nFor a very quick working set up you can configure Jerakia with all the defaults, and install a default lookup policy\n\n```puppet\n    class { '::jerakia': }\n \n    jerakia::policy { 'default': }\n```\n\nAfter running puppet, populate some data and look up from the command line\n\n```\n    # mkdir /var/lib/jerakia\n    # cat \u003c\u003cEOF \u003e /var/lib/jerakia/common.yaml\n    \u003e ---\n    \u003e foo: hello world\n    EOF\n    \n    # jerakia -k foo\n    hello world\n    \n```\n\n## Class: jerakia\n\nThe `jerakia` class supports the following optional parameters\n\n* `package_install_options` : array of install options for package (default: undef)\n* `package_name` : name of the package to install (default: jerakia)\n* `package_provider`: provider to use (default: gem)\n* `package_uninstall_options` : array of uninstall options for package (default: undef)\n* `package_version`: package version (default: latest)\n* `install_package`: If set to false, don't manage the package (default: true)\n* `config_dir`: Location of the configuration directory\n* `config_replace`: If set to false, will not overwrite the config after creation\n* `policy_dir`: Location of the policy directory\n* `manage_config_dir`: Create/manage the config dir (default: true)\n* `manage_plugin_dir`: Create/manage the plugin dir (default: true)\n* `manage_policy_dir`: Create/manage the policy dir (default: true)\n* `manage_log_dir`: Create/manage the parent directory of the logfile path (default: true)\n* `plugin_dir`: Location of the plugins\n* `logfile`: Path to the logfile\n* `log_level`: Loglevel (default: info)\n* `logfile_owner`: Logfile owner (default: puppet)\n* `logfile_group`: Logfile group (default: puppet)\n* `logfile_mode`: Logfile mode (default: 0644)\n* `private_key`: If using eyaml, the path to the private key (default: empty)\n* `public_key` If using eyaml, the path to the public key (default: empty)\n* `enable_schemas`: Enable or disable schemas by setting true or false\n* `schema_opts`: A hash containing schema override options\n* `plugin_opts`: A hash of options to be passed to plugins\n\n### Examples:\n\n\n```puppet\nclass { 'jerakia': }\n```\n\n```puppet\nclass { 'jerakia':\n  schema_opts =\u003e {\n    \"docroot\" =\u003e \"/var/lib/jerakia/data/_schema\",\n  }\n}\n```\n\n```puppet\nclass { 'jerakia':\n  plugin_opts =\u003e {\n    \"my_plugin\" =\u003e {\n      \"param\" =\u003e \"value\",\n    },\n  }\n}\n```\n\n\n    \n### Defined Type, jerakia::policy\n\nJerakia 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:\n\n```puppet\njerakia::policy { 'default': }\n```\n\nYou can injecty our own templates and data into a policy by overriding the defaults. eg:\n\n```puppet\njerakia::policy { 'default':\n  template =\u003e 'mymodule/jerakia.erb',\n  params   =\u003e {\n    'docroot' =\u003e '/var/lib/jerakia',\n    'mydata'  =\u003e 'myvalue',\n  }\n}\n```\nThe contents of the `params` hash is arbitry and entirely dependant on what your template looks for.  See `templates/default_policy.erb` for an example\n\nThe `jerakia::policy` type supports the following parameters\n\n* `policy_dir`: The location of policy files, defaults to the value defined in `jerakia::policy_dir`\n* `params`: A hash of parameters to be consumed by the policy template\n* `template`: The template to use (default:  jerakia/default_policy.erb)\n* `replace`: If set to false then Puppet will not overwrite the policy file after creation (default: true)\n\n## Hiera 5 data provider\n\nThis module also provides the Hiera 5 data provider for integrating Puppet 4.9+ (Hiera 5) with Jerakia Server\n\nThe data provider should be configured as a lookup_key type level in your Hiera hierarchy using the `jerakia` function, eg:\n\n```yaml\n---\n\nversion: 5\n\nhierarchy:\n  - name: Jerakia\n    lookup_key: jerakia\n    options:\n      token: puppet:63d0626015b5993e6e6c35da06c2548a6c631f5634f3d7056cdd074156a8183d5eff04f825dc447b\n      scope:\n        environment: \"%{environment}\"\n        role: \"%{facts.role}\"\n```\n\nPlease see [Integration with Puppet](http://jerakia.io/integration/puppet) from the official documentation for more details on using the Hiera 5 backend\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerakia%2Fpuppet-jerakia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerakia%2Fpuppet-jerakia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerakia%2Fpuppet-jerakia/lists"}