----- Original Message -----
> From: "Jeremy Carroll" <jer...@klout.com>
> To: puppet-users@googlegroups.com
> Sent: Friday, May 4, 2012 5:19:37 PM
> Subject: [Puppet Users] Re: Puppet 3.0 and Hiera
> 
> We use Hiera backed Puppet here at Klout. Mainly for the reasons of
> separating configuration data from puppet modules. We have had great
> success, and I welcome this change to puppet core. Reminds me of
> some of Chef's "Deep Merge" functionality. Here are a few of my
> thoughts.
> 
> 
>     * Name spacing variable names is a welcome improvement. It will
>     help with variable name collisions we have experienced (Ex:
>     module1::hosts, module2::hosts). We currently use the
>     %{calling_class}, %{calling_module} method of scoping hiera
>     variables.
>     * I currently like the flexibility of defining my own order for
>     merging of variables in hiera.yaml. But I would like Puppet to
>     formalize the merge order so everybody can use the same style
>     when creating modules for reuse. Also have some methods to
>     specify overrides instead of merging from top to bottom for
>     hashes / arrays. Helps for configurations for systems that don't
>     want to inherit everything. Chef has a lot of work for Deep
>     Merging ordering that I believe Hiera would benefit from.

Do you mean you want the hierarchy to be standardised? 

can you expand this with examples please?


>     * hiera_hash would be improved by sorting the hash natively. We
>     currently repeat this pattern every time we use a hiera hash. We
>     create a sorted array of each hash key, then iterate over the
>     array to lookup values in the hash. If we fail to do this,
>     puppet run re-orders the file every run as hash orders are not
>     guaranteed. This causes a lot of un-necessary work and change
>     notifications. Example below.

Unfortunately ruby hashes has no order so we cant sort the hashes for you :(

Things are improving in 1.9, but I do not think there is much we can do there

> 
> 
> hieradata
> 
> 
> ---
> 
> hiera_var:
> user:
> value: 'my_value'
> module/params.pp
> 
> $hiera_var = hiera_hash('hiera_var')
> $sorted_var = sort(keys($hiera_var))
> module/template/sometemplate.pp
> 
> 
> <% scope.lookupvar('module::params::sorted_var').each do |item| -%><%
> scope.lookupvar('hadoop::params::hiera_var')[item].each do
> |key,value| -%>
> <%= user %> <%= key %> <%= value %>
> <% end -%><% end -%>
> On Thursday, May 3, 2012 10:05:14 AM UTC-7, Pieter van de Bruggen
> wrote:
> 
> 
> 
> 
> 
> Greetings,
> 
> As many of you may be aware, Hiera will be tightly integrated into
> Puppet in the upcoming release of Puppet 3.0. As a final sanity
> check of this work, I’d like to open our current plan for
> integration up for feedback. This is particularly for feedback from
> existing Hiera users, but I hope to solicit good feedback from those
> not using Hiera as well.
> 
> The problem, as it currently exists, is that Puppet (core) has no
> good first-class mechanism for separating configuration data from
> manifests. Everything from $faked_namespaces__in__variable_names to
> specialty “params” classes have been tried, with varying degrees of
> success.
> 
> Hiera came along as another solution to this problem, and provided a
> useful abstraction for hierarchical data lookup, but life as a
> plugin meant that certain integrations were still difficult. Our aim
> in Puppet 3.0 is to tighten up these integrations (making Hiera more
> useful), provide first-class data separation solution (for those not
> already using Hiera), and to provide a simple and safe migration for
> those currently using Hiera.
> 
> Here’s what’s new:
> 
>     * Hiera data keys can be namespaced
> 
> 
>         * (e.g. 'dns::nameserver': '8.8.8.8' )
>     * Namespaced data will automatically populate class parameters
> 
>         * (e.g. 'dns::nameserver' will be automatically looked up for
>         the $nameserver parameter when you include dns )
> 
> 
> Here’s what’s changed:
> 
>     * The hiera-puppet module will no longer be required
> 
> 
>         * It should, however, still continue to work
>     * The heira() function (from the hiera-puppet module) will be
>     superceded by the lookup() function (in Puppet core)
>     * hiera_include() will not be ported; include now properly accept
>     arrays, making this redundant
> 
> 
> Here’s what were still wondering about:
> 
>     * How should we integrate hiera_array() and hiera_hash() ?
>     * How should we integrate hiera ’s “default” and “override”
>     parameters?
>     * How should we handle overlaps between data supplied by Hiera
>     and data supplied in a parameterized class include?
> 
> 
> If you’re interested in test-driving the new functionality for
> yourself, checkout out the master branch of the Puppet repository on
> Github , install Hiera (with gem install hiera ) and make the
> following configuration changes:
> 
>     * Set data_binding_terminus to hiera
>     * If you have a Hiera configuration file, set hiera_config to
>     point to it.
>     * If you don’t, create a file in ${confdir}/hiera.yaml with these
>     contents:
> 
> 
> :backend:
> 
> - yaml
> 
> :yaml:
> 
> :datadir: $confdir/data
> 
> :hierarchy:
> 
> - %{certname}
> 
> - %{environment}
> 
> - global
> 
> This sets up a default hierarchy that looks for values in
> ${confdir}/data , first in the ${certname}.yml file, then in the
> ${environment}.yml file, then in global.yml .
> 
> That should be it! Please, let us know if you're having trouble
> getting started, or if you have questions, concerns, thoughts, or
> opinions about any of this.
> 
> Thanks!
> 
> 
> --
> You received this message because you are subscribed to the Google
> Groups "Puppet Users" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/puppet-users/-/GxVliXSX5u0J .
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to