linkorb/hiera-php

A PHP implementation of Hiera

dev-master 2015-03-30 08:35 UTC

README

What is Hiera?

According to the Hiera website:

Hiera is a key/value lookup tool for configuration data.

Hiera uses a configurable hierarchy to enable "Cascading Configuration".

It's great for infrastructure configuration (which is why it's used in Puppet), but it also applies to multi-tenancy applications.

Hiera-PHP tries to be as much of a direct port as possible, maintaining support for original configuration files, and even internal classnames and interfaces.

Usage

hiera-php can be used both as a library, and as a console-tool

Library

use Hiera\Hiera;
use Hiera\Scope;
use Hiera\ConfigLoader\YamlConfigLoader;

$scope = new Scope();
$scope->setVariable('::environment', 'production');
$scope->setVariable('::clientcert', 'web01.dc1.example.webx');
$scope->setVariable('::country', 'nl');
$hiera = new Hiera();
$loader = new YamlConfigLoader();
$loader->load($hiera, $path_to_hiera_yaml_file);

$key = 'some_configuration_key';
$answer = $hiera->lookup($key, '#default#', $scope);

Console tool

vendor/bin/hiera-php hiera:lookup some_configuration_key

Features

  • Supports loading original hiera.yaml files
  • Supports pluggable backends
  • Yaml backend included (supporting original configuration yaml files)
  • Command line utility to perform lookups
  • Embeddable as a library
  • Json backend
  • Database (PDO, Redis, etc) backends
  • Memcached backend
  • Array merge strategies

Contributions are very welcome!

License

MIT (see LICENSE.md)

Brought to you by the LinkORB Engineering team

687474703a2f2f7777772e6c696e6b6f72622e636f6d2f642f6d6574612f74696572312f696d616765732f6c696e6b6f7262656e67696e656572696e672d6c6f676f2e706e67
Check out our other projects at linkorb.com/engineering.

Btw, we're hiring!