On Wednesday, August 15, 2012 7:54:27 PM UTC-5, jwright wrote: > > I was testing parameterized classes using an external node classifier > running on a 3.0.0rc2 master and found that catalog compilation fails > if I have a parameterized class that uses defaults if I declare an > instance of the class that does not specify values for all parameters. > I was able to reproduce the behavior using 'puppet apply': > > logos: /tmp ] cat foo.pp > class foo($foo1="default1", $foo2="default2") { > file { "/tmp/foofile": > content => "foo1=\"$foo1\" foo2=\"$foo2\"\n" > } > } > > class { "foo": > } > > Rather than getting a file with the class default values, catalog > compilation fails: > > logos: /tmp ] sudo puppet apply foo.pp > Error: Puppet::Parser::AST::Resource failed with error RuntimeError: > Hiera terminus not supported without hiera library at /tmp/foo.pp:8 on > node logos > Error: Puppet::Parser::AST::Resource failed with error RuntimeError: > Hiera terminus not supported without hiera library at /tmp/foo.pp:8 on > node logos > > I get the same error if I declare a value for either one (but not > both) of the parameters but if I declare values for both parameters, > it works as expected: > > class { "foo": > foo1 => "value1", > foo2 => "value2", > } > > logos: /tmp ] sudo puppet apply foo.pp > /Stage[main]/Foo/File[/tmp/foofile]/ensure: defined content as > '{md5}42bcc1edf4e8ea1f2aeffafe2ef26712' > Finished catalog run in 0.41 seconds > logos: /tmp ] cat /tmp/foofile > foo1="value1" foo2="value2" > > This class works fine with 'puppet apply' on all of the 2.7.x nodes > I've tested; I can declare the class with any valid combination of > default and non-default parameter values. It only fails on 3.0.0rc2. >
It sounds like you have a broken or incomplete puppet installation. Hiera is deeply integrated with Puppet 3, and in particular with resolving unspecified class parameters. It is not an optional third-party library as it was in Puppet 2.x and earlier. PuppetLabs provides it in a separate package, however, which might lead you to think that you don't need to install it. That does not mean you have to put anything in a hiera data store, or even configure one (as far as I know), but it needs to be there because in Puppet 3, the master tries to fill in parameter values via hiera before it falls back to default values specified in the class definition. (That behavior is awesome, btw.) John -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/a7_k6Q2DORgJ. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.