Skip to content

tioteath/hiera-psql

 
 

Repository files navigation

Build Status

Database schema

Please note: you need PostgreSQL at least version 9.3 in order to use this backend. Use v.0.1.0 for older PostgreSQL.

The database should contain a table 'data' with two text columns (environment and path), and one json column (value). Environment is an enviroment from hiera.yaml. Path is equivalent to the path in the hierarchy (with no file extensions) and value should contain the value in JSON format.

Example:

| environment    | path                   | value                                                  |
|:---------------|:-----------------------|:-------------------------------------------------------|
| 'production'   | 'fqdn/foo.example.com' | {"class::num_param": 42, "class::str_param": "foobar"} |
| 'production'   | 'fqdn/bar.example.com' | {"class::array_param": [1, 2, 3]}                      |
| 'test'         | 'fqdn/baz.example.com' | {"class::hash_param": { "key1": "value1", "key2": 2 }} |

SQL:

    CREATE DATABASE hiera WITH owner=hiera template=template0 encoding='utf8';
    CREATE TABLE data (environment text, path text, value json);
    CREATE UNIQUE INDEX on data (path, environment);

Configuration

The backend configuration takes a connection hash that it sends directly to the connect method of the postgres library. See the ruby-pg documentation for more info on parameters it accepts.

Here is a example hiera config file:

    ---
    :hierarchy:
      - 'fqdn/%{fqdn}'
      - common
    
    :backends:
      - psql
    
    :psql:
      :environment: production
      :connection:
        :dbname: hiera
        :host: localhost
        :user: hiera
        :password: hiera
        

If no environment provided in configuration file, then it will not be included in query condition, and simple query will be used instead. For example, configuration above will result in:

SELECT value->'example_value' FROM data WHERE environment='production'  AND 
path='/example_path'

While if environment is not set, it evaluates in:

SELECT value->'example_value' FROM data WHERE path='/example_path'

About

PostgreSQL backend for Hiera

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 98.1%
  • Puppet 1.9%