Hi

Think I have had a miss understanding of the scope of 

puppet variables
hiera data..

Think I have been mixing the two

I think my question here is how do you use hiera() in side a yaml to look 
up info outside that current yaml.


so if hiera has check 1.yaml then 2.yaml then 3.yaml.  How does 3.yaml get 
info from the 1.yaml ???


A


On Friday, 8 July 2016 10:14:13 UTC+10, Alex Samad wrote:
>
> Hi
>
> Using a global ENC - this is allocating facts like location and envornment.
>
> in my hiera I had
>
>   # Envornment - YB
>   - "ybenv/%{::ybenv}"
>
> so I would have say 
>
> prod.yaml
>
> and
>
>   # Location - YB
>   - "yblocation/%{::yblocation}"
>
> to id location or datacentre
>
> I setting
> yblocation: alc << not sure why I am setting this again as its set by the 
> ENC
> yblocation::ip: 33 << this is new not defined in the ENC
>
> but I have a common.yaml that tries to use this value and the only way I 
> get to view it is with a hiera lookup..
> and its not working the best.
>
> but https://docs.puppet.com/hiera/3.2/variables.html 
> Passing Variables to Hiera seciton 
>
>
>    - Avoid referencing user-set local variables from Hiera. Instead, use 
>    facts, built-in variables, 
>    
> <https://docs.puppet.com/puppet/latest/reference/lang_facts_and_builtin_vars.html>top-scope
>  
>    variables, node-scope variables, or variables from an ENC whenever 
>    possible.
>
> does that mean i should do it all in my ENC ??
>
>
>  hiera  -d   ybenv::file    ::osfamily=RedHat environment=production   
> ::trusted.certname=abc ::ybenv=alex  ::yblocation=ybo
> DEBUG: 2016-07-08 09:58:10 +1000: Hiera YAML backend starting
> DEBUG: 2016-07-08 09:58:10 +1000: Looking up ybenv::file in YAML backend
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source ybenv/alex
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source yblocation/ybo
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source os/RedHat
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source common
> DEBUG: 2016-07-08 09:58:10 +1000: Found ybenv::file in common
> DEBUG: 2016-07-08 09:58:10 +1000: Looking up ybvlan in YAML backend
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source ybenv/alex
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source yblocation/ybo
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source os/RedHat
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source common
> DEBUG: 2016-07-08 09:58:10 +1000: Found ybvlan in common
> DEBUG: 2016-07-08 09:58:10 +1000: Looking up yblocation::ip in YAML backend
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source ybenv/alex
> DEBUG: 2016-07-08 09:58:10 +1000: Looking for data source yblocation/ybo
> DEBUG: 2016-07-08 09:58:10 +1000: Found yblocation::ip in yblocation/ybo
> {"ybenv_file1"=>
>   {"path"=>"/etc/ybenv",
>    "ensure"=>"present",
>    "content"=>"ybenv: alex\nyblocation: ybo\n0\n172\n",
>    "group"=>"root",
>    "mode"=>"0444",
>    "owner"=>"root"}}
>
> when i run this on a node it doesn't get the 172 ?? 
>
>
>
>
> Let me try and explain that again ...
>
> this is what I get from my ENC
> ---
> environment: production
> parameters:
>   ybenv: alex
>   yblocation: ybo
>
>
> my :hierarchy looks like
>
> :hierarchy:
>
>   # node specific
>   - "nodes/%{::trusted.certname}"
>
>   # Applicaiton - YB
>   - "ybapplication/%{::ybapplication}"
>
>   # Envornment - YB
>   - "ybenv/%{::ybenv}"
>
>   # Location - YB
>   - "yblocation/%{::yblocation}"
>
>   # OS specific
>   - "os/%{::osfamily}"
>
>   # common to all
>   - common
>
> in yblocation
>
> cat hieradata/yblocation/ybo.yaml
> ---
>
> ##
> yblocation: ybo
> yblocation::ip: 172
>
>
>
> and in cat hieradata/common.yaml
>
> #
> # Save it
> ybenv::file:
>   ybenv_file1:
>     path: /etc/ybenv
>     ensure: present
>     content: "ybenv: %{::ybenv}\nyblocation: 
> %{::yblocation}\n%{hiera('ybvlan')}\n%{hiera('yblocation::ip')}\n"
>     group: root
>     mode: '0444'
>     owner: root
>
>
>
> hiera  -d   ybenv::file    ::osfamily=RedHat environment=production   
> ::trusted.certname=abc ::ybenv=alex  ::yblocation=ybo
>
> gives me 
> "content"=>"ybenv: alex\nyblocation: ybo\n0\n172\n",
>
> but on the node i get this
>
> Notice: /Stage[main]/Main/Node[default]/File[ybenv_file1]/content:
> --- /etc/ybenv  2016-07-08 10:01:55.121019861 +1000
> +++ /tmp/puppet-file20160708-30039-sdgvj0       2016-07-08 
> 10:10:24.007280395 +1000
> @@ -1,4 +1,4 @@
>  ybenv: alex
>  yblocation: ybo
>  0
> -
> +0
>
> looks like the hiera() is not working properly
>
>
> Thanks
> A
>
>
>
>

-- 
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/5daa6723-8bbe-4892-967a-995bb6929781%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to