Forge Home

hiera_consul

Module for using consul as a hiera backend

200,927 downloads

170,077 latest version

4.6 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 0.1.2 (latest)
  • 0.1.1
  • 0.1.0
  • 0.0.6
  • 0.0.5
  • 0.0.4
  • 0.0.3
  • 0.0.2
  • 0.0.1
released May 27th 2016
This version is compatible with:
  • , , , , , , , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'lynxman-hiera_consul', '0.1.2'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add lynxman-hiera_consul
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install lynxman-hiera_consul --version 0.1.2

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.

Download
Tags: hiera, consul

Documentation

lynxman/hiera_consul — version 0.1.2 May 27th 2016

Puppet Forge

consul is an orchestration mechanism with fault-tolerance based on the gossip protocol and a key/value store that is strongly consistent. Hiera-consul will allow hiera to write to the k/v store for metadata centralisation and harmonisation.

Configuration

The following hiera.yaml should get you started.

:backends:
  - consul

:consul:
  :host: 127.0.0.1
  :port: 8500
  :paths:
    - /v1/kv/configuration/%{fqdn}
    - /v1/kv/configuration/common

Extra parameters

As this module uses http to talk with Consul API the following parameters are also valid and available

:consul:
  :host: 127.0.0.1
  :port: 8500
  :use_ssl: false
  :ssl_verify: false
  :ssl_cert: /path/to/cert
  :ssl_key: /path/to/key
  :ssl_ca_cert: /path/to/ca/cert
  :failure: graceful
  :ignore_404: true
  :token: acl-uuid-token

Query the catalog

You can also query the Consul catalog for values by adding catalog resources in your paths, the values will be returned as an array so you will need to parse accordingly.

:backends:
  - consul

:consul:
  :host: 127.0.0.1
  :port: 8500
  :paths:
    - /v1/kv/configuration/%{fqdn}
    - /v1/kv/configuration/common
    - /v1/catalog/service
    - /v1/catalog/node

Helper function

consul_info

This function will allow you to read information out of a consul Array, as an example here we recover node IPs based on a service:

$consul_service_array = hiera('rabbitmq',[])
$mq_cluster_nodes = consul_info($consul_service_array, 'Address')

In this example $mq_cluster_nodes will have a hash with all the IP addresses related to that service

You can also feed it more than one field and a separator and it will generate a composed string

$consul_service_array = hiera('rabbitmq',[])
$mq_cluster_nodes = consul_info($consul_service_array, [ 'Address', 'Port' ], ':')

The result will return an array like this: [ AddressA:PortA, AddressB:PortB ]

If you want to flatten the output array you can always use join from the Puppet stdlib.

$myresult = join($mq_cluster_nodes, ",")

Thanks

Heavily based on etcd-hiera written by @garethr which was inspired by hiera-http from @crayfishx.

Thanks to @mitchellh for writing such wonderful tools and the API Documentation

Thanks for their contributions to Wei Tie, Derek Tracy, Michael Chapman, Kyle O'Donnell, AJ and lcrisci