Em sexta-feira, 11 de julho de 2014 11h11min17s UTC-3, jcbollinger escreveu:
>
>
> So, I'm interpreting the hiera data as providing configuration details 
> that, if present, apply to every 'myservice', at least as defaults.  
> Furthermore, from the data and manifests I judge that 'myproblematicconfig' 
> is a distinguished identifier, handled in a manner specific to it.
>

Almost that. I have quite some configurations like that but almost all of 
them are applied on a single ERB template. The "problematicconfig", on the 
other hand, will manage different files. So AFAICS the iteration need to be 
at the Puppet manifest side. create_resources() is the way I have found to 
iterate a hash without parser=future.


A different structure for your data might work better
>

Share your thoughts! No problem with some refactor.


, but you can also work with the data structure you already have.  In 
> particular, create_resources() can often be replaced by an array-titled 
> resource declaration with the array drawn from the keys() of your resource 
> hash.  Combinatorial resource declarations are a bit trickier, but they can 
> be done, even without the future parser.
>

Got the idea, nice approach with keys+regsubst, thank you very much.


You may be able to make that cleaner, simpler, or otherwise better by 
> applying some of your knowledge of the problem space to the structure of 
> the defined types.
>

Digging a bit more into the problem I found another approach: define a 
local variable with the $title just before the hiera_hash call, and use 
such local variable in the hash declaration. Something like this:

Manifest:
  class profile::my::myservice {
    $mytitle_hiera = $title
    # ENC: $myservices
    $hiera_myservice_host = hiera("myservice_host")
    # ENC has per-host/service and hiera has per-environment configurations
    create_resources(::myservice::host, $myservices, $hiera_myservice_host)
  }

Hiera:
  myservice_host:
    myproblematicconfig:
      %{mytitle_hiera}_config1:
        data
      %{mytitle_hiera}_config2:
        data
    myotherconfig:
    ...

It worked like a charm in my configuration. On the other hand Puppet 
docs[1] says this is not a good practice. I follow the doc in the sense 
that the lookup will be dependent of a manifest configuration. Best 
practices, straightforward code and fit the needs are really challenging.

[1] http://docs.puppetlabs.com/hiera/latest/variables.html#best-practices


Joao Morais




-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/211dcabf-d379-4bea-a1ab-6a99459d0425%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to