Looks like I figured it out.  I was passing the hiera variable
incorrectly.  Changed from

passing in to class
String $nodetype,
to
$nodetype=hiera('nodetype')

that seems to have done the trick.

On Wed, Oct 2, 2019 at 1:39 PM Jagga Soorma <[email protected]> wrote:
>
> Hello,
>
> I am testing out hiera and trying to pass some hiera values to a
> module so that it can do specific tasks for a given node which does
> not seem to be working.  Here is my setup:
>
> --
> # puppet lookup
> --hiera_config=/root/test/puppetlabs/code/environments/production/hiera.yaml
> nodetype
> --- mgmt
>
> # puppet apply 
> --hiera_config=/root/test/puppetlabs/code/environments/production/hiera.yaml
> --modulepath /root/test/puppetlabs/code/environments/production/modules
> /root/test/puppetlabs/code/environments/production/manifests/site.pp
> Warning: The function 'hiera_include' is deprecated in favor of using
> 'lookup'. See https://puppet.com/docs/puppet/6.9/deprecated_language.html
>    (file & line not available)
> Error: Evaluation Error: Error while evaluating a Function Call,
> Class[Foo]: expects a value for parameter 'nodetype' (file:
> /root/test/puppetlabs/code/environments/production/manifests/site.pp,
> line: 2, column: 3) on node node1.test.org
>
> # cat /root/test/puppetlabs/code/environments/production/hiera.yaml |
> grep -v '#'
> ---
> version: 5
> defaults:
>   datadir: data
>   data_hash: yaml_data
> hierarchy:
>     - name: "Yaml heirarchy"
>       data_hash: yaml_data
>       paths:
>         - "nodes/%{facts.networking.fqdn}.yaml"
>         - "roles/common.yaml"
>         - 'common.yaml'
>
> # cat 
> /root/test/puppetlabs/code/environments/production/data/nodes/node1.test.org.yaml
> ---
> nodetype: 'mgmt'
> classes:
>  - foo
>
> # cat /root/test/puppetlabs/code/environments/production/manifests/site.pp
> node default {
>   hiera_include('classes')
> }
>
> # cat 
> /root/test/puppetlabs/code/environments/production/modules/foo/manifests/init.pp
> class foo (
>   String $nodetype,
> ){
>   if $nodetype == 'mgmt' {
>     file { "/tmp/hello":
>       ensure => file,
>       source => 'puppet:///modules/foo/hello.mgmt',
>     }
>   }
>   elsif $nodetype == 'login' {
>     file { '/tmp/hello':
>       ensure => file,
>       source => 'puppet:///modules/foo/hello.login',
>     }
>   }
> }
> --
>
> Not sure what I am missing here, but any guidance would be helpful.
> Also, let me know if there is a better way to tackle this.
>
> Thanks,
> -J

-- 
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/CAKyjK52fHhist2hf-j4GkiTb_XOnhz-w4wA8dDJ5tnwwZdvWvA%40mail.gmail.com.

Reply via email to