Today looking for a solution to this I came up with a nice solution. I know this is old but I'm posting it just in case is useful for somebody:
on hiera.yaml: :hierarchy: - 'host/%{::domain}/%{::hostname}' - 'domain/%{::domain}' - 'role/%{system_role}' - 'common' on site.pp node default { $system_role = get_system_role() } and get_system_role is a custom function: require 'yaml' module Puppet::Parser::Functions newfunction(:get_system_role, :type => :rvalue) do |args| hostname = lookupvar('fqdn') enc = %x[/etc/puppet/node.rb #{hostname}] yaml = YAML::load enc system_role = yaml['classes'].keys.first.scan(/::([a-z]*)/).flatten[0] end end This is asuming you use an ENC to assign classes like foreman / cobbler or pe Cheers Juan On Wednesday, August 21, 2013 11:29:56 PM UTC+1, Ellison Marks wrote: > > you might want to explicitly top-scope role, ie. > > $::role = 'nameserver' > > Not sure if that will matter in this case, but I don't think it can hurt. > > As an aside, we set our role variable with facter.d on the nodes > themselves, as we don't have hostnames that easily work out to roles. > > On Wednesday, August 21, 2013 10:20:56 AM UTC-7, JeremyCampbell wrote: >> >> >> I need to define data for roles so I add the 'role' dynamic data source. >> >> - "%{::environment}/%{::clientcert}" >> - "%{::clientcert}" >> - "%{::environment} >> - "%{::role}" >> - common >> >> Our site.pp uses a hostname regex to classify nodes into roles e.g. >> >> node /^ns\d+$/ { >> include role::nameserver >> } >> >> Can we add the $role variable to the role class and hiera will use it? >> e.g. >> >> class role::nameserver { >> $role = 'nameserver' >> include base >> include bind >> include shorewall >> } >> >> Would this work? Is there a better pattern that doesn't involve having to >> define custom facts on the servers? >> > -- 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/49b2b324-90f2-44d7-b46f-f35ec2981e67%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.