Found the problem.  When passing an array to a define the default variable 
name for the elements of the array is $name.  This works:

  define debugUsers {
>     validate_string($name)
>     notify { "username: \"${name}\"": }
>   }


On Monday, April 21, 2014 11:31:52 AM UTC-6, Sean Korten wrote:
>
> So, I am trying to do something with a list (array) of users from hieara. 
>  Here is the yaml:
>
> profile::sysconfig::sftp_users: [ "joe", "bill", "nancy" ]
>
>
> In my profile I have a defined class "debugUsers" that I am calling with 
> the array I got from hiera:
>
> class profile::sysconfig::sftpserver {
>>   define debugUsers {
>>     notify { "username: \"${user}\"": }
>>   }
>>   class doWork {
>>     $users = hiera('profile::sysconfig::sftp_users')
>>     validate_array($users)
>>     debugUsers { $users: }
>>   }
>>   include doWork
>
> }
>
>
> From everything I know and have read that should give me a notify line for 
> user in my array.  But it doesn't.  Instead I get this error from the agent:
>
> Error: Could not retrieve catalog from remote server: Error 400 on SERVER: 
>> Duplicate declaration: Notify[username: ""] is already declared in file 
>> /etc/puppetlabs/puppet/environments/r10k/dev_users/modules/profile/manifests/sysconfig/sftpserver.pp:5;
>>  
>> cannot redeclare at 
>> /etc/puppetlabs/puppet/environments/r10k/dev_users/modules/profile/manifests/sysconfig/sftpserver.pp:5
>>  
>
>
> Why am I getting duplicate null declarations?  If I call out specific 
> elements of the array I get back exactly what I would expect:
>
> class profile::sysconfig::sftpserver {
>>   class doWork {
>>     $users = hiera('profile::sysconfig::sftp_users')
>>     validate_array($users)
>>     notify { "user1: \"${users[0]}\"": }
>>     notify { "user2: \"${users[1]}\"": }
>>     notify { "user3: \"${users[2]}\"": }
>>   }
>>   include doWork
>
> } 
>
>
> returns this:
>
> Notice: user1: "joe"
>> Notice: /Stage[main]/Profile::Sysconfig::Sftpserver::Dowork/Notify[user1: 
>> "joe"]/message: defined 'message' as 'user1: "joe"'
>> Notice: user3: "nancy"
>> Notice: /Stage[main]/Profile::Sysconfig::Sftpserver::Dowork/Notify[user3: 
>> "nancy"]/message: defined 'message' as 'user3: "nancy"'
>> Notice: user2: "bill"
>> Notice: /Stage[main]/Profile::Sysconfig::Sftpserver::Dowork/Notify[user2: 
>> "bill"]/message: defined 'message' as 'user2: "bill"' 
>
>
> I am sure this is something really stupid, but can someone point out what 
> I'm doing wrong here?
>
> Thanks,
> --Sean
>

-- 
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/cee17fb4-89ae-4a4c-a4af-c7a34c47b0f1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to