Hi,

I hope I can descripe the challenge.

/etc/puppetlabs/code/environments/production/manifests/nodes.pp:
node default {
  include common
}

/etc/puppetlabs/code/modules/common/manifests/init.pp:
class common inherits config {
  include $classes
[...]

/etc/puppetlabs/code/modules/config/manifests/init.pp:
class config {
  $classes = lookup({
    "name" => "classes",
    "merge" => {
      "strategy" => "deep",
      "knockout_prefix" => "--",
    },
    "default_value" => [],
  })

/etc/puppetlabs/code/modules/bacula/templates/etc/bacula/fileset-exclude
.epp
<%- | Hash $packages,
      Array $classes
| -%>
<% if !empty(grep($packages['install'], "amavis")) or
!empty(grep($classes, "amavis")) { -%>



But I'm also using roles:

/etc/puppetlabs/code/environments/production/hieradata/nodes/node.yaml
roles:
  mailserver:
    - amavisd
  vpn:
    - openvpn
  webserver:
    - apache

/etc/puppetlabs/code/environments/production/hieradata/roles.yaml:
role_details:
  mailserver:
    amavisd:
      classes:
        - amavisd
        - clamav
        - spamassassin

To include all role classes I do:

/etc/puppetlabs/code/modules/common/manifests/init.pp:
class common inherits config {
  include $classes

  if ($roles) {
    $roles.dig.keys.each |String $role| {
      $roles[$role].each |String $application| {
        $roleClasses = lookup({"name" =>
"role_details.${role}.${application}.classes", "merge" => "deep",
"default_value" => undef})
        if ($roleClasses) {
          include $roleClasses
        }
      }
    }
  }

As I did not find a way put all role-classes to a single variable
(e.g.$roleClasses) I tried to do this in the epp:

<%= tagged("amavisd") %>

It resolves to false. Always.

Does anyone see a way to put all roleClasses into a single variable or
make "tagged" work in the epp or any other way to solve this? I know
the concept of Puppet but there are sometimes challenges where just
describing a state is not sufficient. :)

[helmut@BSDHelmut ~]$ puppet -V
5.5.14
[helmut@BSDHelmut ~]$

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 puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/xn0lwqh7y7j1qws000%40news.gmane.org.

Reply via email to