On 21/08/17 09:26, Peter Meier wrote:
Hi all,

I have a bunch of ruby script that are munging data around, part of that
data is based out of hiera.

Until now, with hiera 3, I just required hiera in my ruby script, called
lookup with a certain scope and I got my data out of hiera.

Now looking forward to puppet not anymore shipping hiera as a gem (as
everything moved to hiera 5 and hence lookup), how would I be able to
use the same functionality with lookup?

What I did (simplified):

require 'hiera'
def hiera
   @hiera ||= Hiera.new(:config => '/etc/hiera.yaml')
end

def hiera_def_scope
   @hiera_def_scope ||= { 'environment' => 'production' }
end

def hiera_lookup(key,default={})
   hiera.lookup(key,default,hiera_def_scope)
end

mydata = hiera_lookup('mydata','a default')

While I see that with lookup this might get quickly very complex with
different environments, module data and so on. BUT I could imagine, that
given the data in hiera is central to your infra, lots of people might
also like to use that data for something else. So how to get that data out?

What would you recommend to do, how would you approach the problem with
getting data out of hiera in something else than puppet? Just stick
around with Hiera 3 and an old non-hiera-5 config file? Which would
likely be feasible if hiera stays somewhat supported, which it doesn't
from my understanding?! Write your own self-supported hiera?

best


Over time the amount of features have grown for hiera and the move into puppet was because of the increasing difficulties of making an external hiera do all the required things as the external hiera would have needed to know about environments and module paths and finding information in modules, ability to reference to puppet variables etc. etc.

Thus, to use heira 5 as a library, it is basically the same as a compilation + calls to the lookup function. To do that you would need to do what the lookup CLI is doing in terms of setup. That would then give you the full feature set.

There are however several use cases where people want to be able to instantiate "a hiera" with a hierarchy of their own to do lookups. There is the beginnings of such an API in puppet, but it is not well documented and needs a bit more work.

In your case, do you want exactly the same as what a puppet compilation would see (and support env, module data etc.) or do you need the functionality of having your own hierarchy somewhere that is not mixed into puppet?

Hiera 3, the freestanding gem will at some point no longer be supported.
It may be too early to drop it for Puppet 6, but it also depends on when it will be released. We are currently just fixing critical problems with the hiera 3 separate gem.

Best,
- henrik
--

Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/

--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/onelpj%24u9d%241%40blaine.gmane.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to