On Monday, January 13, 2014 3:36:25 PM UTC-6, Karolis Pabijanskas wrote:
>
>
>
> Hi list,
>
> I have a define type with parameters like this:
>
> define user ( $username=$title,
> $comment='',
> $uid='',
> $gid=$uid,
> $groups=[ 'users',],
> $password='',
> $shell="/bin/false",
> $sudo=false,
> $sudo_nopasswd=false, ) {
> #### actual definition
> }
>
> That gets called by init.pp:
>
> class users ($data) {
> create_resources(user, $data)
> }
>
> I'm trying to pass a yaml to it:
> user:
> uid: 500
> comment: Test user
> password: PW HASH
> shell: /bin/bash
>
> Now this works perfectly fine, and the user gets created, but as soon as I
> try to pass sudo it fails (it does the same for the sudo_nopasswd
> parameter):
> user:
> uid: 500
> comment: Test user
> password: PW HASH
> shell: /bin/bash
> sudo: true
>
> Error: Could not retrieve catalog from remote server: Error 400 on SERVER:
> Invalid parameter sudo on node puppet.local
>
>
That appears to be telling you that Puppet doesn't think type "user" has a
parameter named "sudo". And indeed, the built-in User type doesn't, though
it does have uid, comment, password, and shell. Almost certainly,
create_resources is trying to declare an instance of the built-in User type
instead of your defined type. The same might happen if you use an ordinary
declaration.
You should put your defined type in a module, and refer to it by its
qualifed name. Indeed, all classes and defined types you write should go
into modules.
As an aside, do not confuse Puppet's keyword for declaring a user-defined
resource type ("define") with the C preprocessor's keyword for defining a
macro ("#define"). User-defined resource types are bona fide resource
types, not macros.
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/014ef5fb-b2db-498c-a8c4-e98138ac6368%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.