I was able to get this to work without issue using the Puppet Enterprise 
console as my ENC.  I did the following: 

Created a top-scope variable via the console called group and set it to 
engineering.  

[root@master310-centos ~]# /etc/puppetlabs/puppet-dashboard/external_node 
master310-centos
--- 
name: master310-centos
classes: 
parameters: 
  group: engineering

I have the following hiera.yaml file.  You will note that I did double 
quote my variable for interpolation. 

---
:backends:
  - yaml
:hierarchy:
  - "%{group}"
  - global

:yaml:
  :datadir:

I placed a file called engineering.yaml in /var/lib/hiera with the 
following contents:

test: testvalue

Finally, I created the following test manifest.  

class test {

  notify { "group is $group": }

  $test = hiera(test)

  notify { "test is $test": }

}

And as I was hoping, I get the output of 'testvalue' for the variable test. 
 

[root@master310-centos ~]# puppet agent -t
...
Notice: test is testvalue
Notice: /Stage[main]/Test/Notify[test is testvalue]/message: defined 
'message' as 'test is testvalue'
Notice: group is engineering
Notice: /Stage[main]/Test/Notify[group is engineering]/message: defined 
'message' as 'group is engineering'
Notice: Finished catalog run in 10.09 seconds


On Monday, January 6, 2014 7:24:21 AM UTC-8, jcbollinger wrote:
>
>
>
> On Friday, November 22, 2013 11:34:24 AM UTC-6, Matthew Ceroni wrote:
>>
>> I am trying to use an ENC-set top-scope variable in my Hiera hierarchy. 
>> However it doesn't seem to be working.
>>
>>
>
> I thought that was supported.
>
>  
>
>> Here is what is returned by my ENC script (it is the foreman ENC script) 
>> for a node:
>>
>> parameters: 
>>   san_rafael-spacewalk: mai01-sprxy-02v
>>   puppet_ca: mai01-pmstr-02v
>>   group: engineering
>>   spacewalk_type: site
>>   san_rafael_dmz-spacewalk: mai01-sprxy-01v
>>   hostgroup: base/production/engineering/quality_assurance/locked
>>   san_rafael_dmz-proxy: mai01-dprxy-01v
>>   spacewalk_host: mai02-swalk-01v
>>   santa_rosa_dmz-spacewalk: mai02-sprxy-01v
>>   root_pw: $1$ubWDPsM+$lzyZdN91QCk6dZAhMXBlM/
>>   foreman_env: production
>>   santa_rosa_dmz-proxy: mai02-dprxy-01v
>>   activation_key: 5-839beb8c567b98c0720db37f19ecb64d
>>   puppetmaster: mai01-pmstr-02v
>> environment: production
>> classes: 
>>   security::access: 
>>   security::users: 
>>
>> Then in my hiera.yaml file I have:
>>
>> ---
>> :backend:
>>   - yaml
>> :hierarchy:
>>   - %{::clientcert}
>>   - %{::group}
>>   - %{::dc_location}_%{::is_dmz}
>>   - %{::operatingsystem}
>>   - common
>>
>> :yaml:
>>   :datadir: '/var/lib/hiera'
>>
>> Then within /var/lib/hiera I added an engineering.yaml file. But it 
>> doesn't seem to be referenced when Hiera goes through the hierarchy. One 
>> way I verified this (to ensure something else funky wasn't going on) is 
>> that i purposely put an error in the engineering.yaml file and Puppet runs 
>> without issue. 
>>
>>
>
> In the doc that Josh cited, I find this notable tidbit: "In YAML files, *any 
> string containing an interpolation token must be quoted* in order to 
> comply with the YAML spec. (Under Ruby 1.8, interpolation tokens in 
> unquoted strings will sometimes work anyway, but this can’t be relied 
> on.)"  That would apply to your hiera.yaml file, which does not quote the 
> interpolations it uses.  You ought to fix that in any case, and maybe doing 
> so will even resolve your problem.
>
>
> John
>
>

-- 
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/9e71b620-cf47-4c8c-8609-440ec24f0e56%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to