Well the exact answer to your question is:

lookup("roles::${category}::${class}::classes", Array, 'unique').include()

However, the code you've shown is implementing a hierarchy for class
assignment duplicative of the Hiera hierarchy. Why not use Hiera's
hierarchy to your advantage?

hiera.yaml:
   hierarchy:
    - name: "Role data"
      path: "roles/%{facts.category}.yaml"

Then have an array named classes, and just use

  lookup('classes', Array, 'unique').include()

Much easier. Don't make your own hierarchy, make use of Hiera.

On Mon, Aug 6, 2018 at 6:22 AM Helmut Schneider <[email protected]> wrote:

> Hi,
>
> I want to include hiera classes.
>
> ---
> roles::webserver::apache::classes:
>   - my_apache
> roles::backup::bacula::classes:
>   - bacula
> roles::timeserver::ntpd::classes:
>   - ntpd
> roles::databaseserver::mysql::classes:
>   - mysqld
>
> I used to use the follwoing (ugly) code in nodes.pp to do so:
>
>   if ($roles) {
>     $roles.each |$category, $classes| {
>       if ($classes) and (category) {
>         $classes.each |$class| {
>           if ($class) {
>             hiera_include ("roles::${category}::${class}::classes", {})
>           }
>         }
>       }
>     }
>   }
>
> Is there a better way e.g. using lookup?
>
> Thank you!
>
> --
> 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 [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/xn0lddu4bbmleo000%40news.gmane.org
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/CANsGaEoXH6fCnSaL9X%2B4cisFixOVVp00rzWOchBM5fyxiEnJgA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to