On Mon, Aug 3, 2009 at 1:57 PM, Asif Iqbal<vad...@gmail.com> wrote:
> On Fri, Jul 31, 2009 at 3:43 AM, David Schmitt<da...@dasz.at> wrote:
>>
>> Asif Iqbal wrote:
>>> On Wed, Jul 29, 2009 at 1:57 AM, David Schmitt<da...@dasz.at> wrote:
>>>> Asif Iqbal wrote:
>>>>> So I think I should start small and simple and it may grow to a
>>>>> solution that will be really useful to others.
>>>>>
>>>>> Lets start w/ real basic.
>>>>>
>>>>> I have 300 hosts. I like a push a user to about 100 hosts (dns
>>>>> resolver type hosts) out of 300 total.
>>>>>
>>>>> How do I set that up within puppet ?
>>>> The very simplest stuff:
>>>>
>>>> | node "dns1", ..., "dns100" {
>>>> |       user { "foo": ... }
>>>> | }
>>>
>>> I tried to expand on it and I have setup a recipe which is not really
>>> working yet
>>>
>>> node basenode {
>>>      $userlist = [ "user1", "user2", "user3", .. , "user50" ]
>>>      $passwd = [ "hashkey1", "hashkey2", .. , "hashkey50" ]
>>>      $fullname = [ "fname1 lname1", "fname2 lname2",... , "fname50 lname50" 
>>> ]
>>>      $uids = [ "101", "102", ... , "150" ]
>>>       user { $userlist:
>>>               ensure => "present",
>>>               uid     => $uids,
>>>               gid => "1",
>>>               comment => $fullname,
>>>               home => "/export/home/$userlist",
>>>               password => $passwd,
>>>               shell => "/bin/bash",
>>>               managehome => "true",
>>>       }
>>> }
>>
>> That's not how it is intended to work. You'll need to create a define to
>> handle such "parallel" arrays:
>>
>> define custom_user($passwd, $fullname) {
>>        user { "user${name}":
>>                ensure => present,
>>                uid => 100 + $name,
>>                gid => 1,
>>                comment => $fullname,
>>                home => "/export/home/${name}",
>>                password => $passwd,
>>                shell => "/bin/bash",
>>                managehome => true,
>>        }
>> }
>>
>> custom_user {
>>        "1":
>>                passwd => "hashkey1",
>>                fullname => "fname1 lname1";
>>        "2":
>>                passwd => ...
>> }
>
>
> Here is my updated recipe
>
> #site.pp
>
> class newuser {
>        define newu ( $uid , gid = 1, $fullname ) {
>        exec { "/usr/sbin/useradd -m -d /home/$name -c $fullname -u $uid -g
> $gid -s /bin/bash $name": }
>        }
>
>        define newid ( $uid , gid = 1, $passwd, $fullname ) {
>                user { $name:
>                ensure => present,
>                uid     => "$uid",
>                gid => "$gid",
>                comment => "$fullname",
>                home => "/export/home/$name",
>                password => "$passwd",
>                shell => "/bin/bash",
>                managehome => "true",
>                }
>        }
>
>        define addgrp ( $groups ) {
>                exec { "/usr/sbin/usermod -G $groups $name": }
>        }
> }
>
> newuser::newu {
> "testuser":
>        uid => "102",
>        gid => "1",
>        fullname => "test user",
> }
>
> newuser::newid {
> "testu2":
>        uid => "103",
>        gid => "10",
>        passwd => "XyZ123ZyX12",
>        fullname => "test2 user2",
> }
>
> newuser::addgrp {
> "testu2":
>        groups => ["sysadmin", "developer"]
> }


Fixed it

define addgrp ( $uname ) {
     exec { "/usr/sbin/groupadd $title": }
     exec { "/usr/sbin/usermod -G $title $uname": }
}

groups = [ "sysadmin", "developr"]
newuser::addgrp { $groups: uname => "testu2" }

Now I need to explore the external node script to push multiple users.

I have the list of users available in a flat file.

Then I need to find a way to send the same list of users to multiple
hosts



>
> node basenode {
>        include newuser
> }
>
> node default inherits basenode {}
>
>
> It worked somewhat. The group names "sysadmin" and "developer" became
> one group "sysadmindeveloper"
>
> I was trying to use the groups array to call the addgrp definition
> multiple times.
>
> Also it failed to create user `testuser' using Newuser::Newu
>
> deatils here
>
> debug: Loaded state in 0.00 seconds
> debug: //Newuser::Newid[testu2]/User[testu2]: Changing ensure
> debug: //Newuser::Newid[testu2]/User[testu2]: 1 change(s)
> debug: User[testu2](provider=user_role_add): Executing
> '/usr/sbin/useradd -u 103 -s /bin/bash -g 10 -c test2 user2 -d
> /export/home/testu2 -m testu2'
> notice: //Newuser::Newid[testu2]/User[testu2]/ensure: created
> debug: //Newuser::Addgrp[testu2]/Exec[/usr/sbin/usermod -G
> sysadmindeveloper testu2]: Changing returns
> debug: //Newuser::Addgrp[testu2]/Exec[/usr/sbin/usermod -G
> sysadmindeveloper testu2]: 1 change(s)
> debug: //Newuser::Addgrp[testu2]/Exec[/usr/sbin/usermod -G
> sysadmindeveloper testu2]: Executing '/usr/sbin/usermod -G
> sysadmindeveloper testu2'
> debug: Executing '/usr/sbin/usermod -G sysadmindeveloper testu2'
> err: //Newuser::Addgrp[testu2]/Exec[/usr/sbin/usermod -G
> sysadmindeveloper testu2]/returns: change from notrun to 0 failed:
> /usr/sbin/usermod -G sysadmindeveloper testu2 returned 3 instead of 0
> at /etc/puppet/manifests/site.pp:22
> debug: //Newuser::Newu[testuser]/Exec[/usr/sbin/useradd -m -d
> /home/testuser -c test user -u 102 -g 1 -s /bin/bash testuser]:
> Changing returns
> debug: //Newuser::Newu[testuser]/Exec[/usr/sbin/useradd -m -d
> /home/testuser -c test user -u 102 -g 1 -s /bin/bash testuser]: 1
> change(s)
> debug: //Newuser::Newu[testuser]/Exec[/usr/sbin/useradd -m -d
> /home/testuser -c test user -u 102 -g 1 -s /bin/bash testuser]:
> Executing '/usr/sbin/useradd -m -d /home/testuser -c test user -u 102
> -g 1 -s /bin/bash testuser'
> debug: Executing '/usr/sbin/useradd -m -d /home/testuser -c test user
> -u 102 -g 1 -s /bin/bash testuser'
> err: //Newuser::Newu[testuser]/Exec[/usr/sbin/useradd -m -d
> /home/testuser -c test user -u 102 -g 1 -s /bin/bash
> testuser]/returns: change from notrun to 0 failed: /usr/sbin/useradd
> -m -d /home/testuser -c test user -u 102 -g 1 -s /bin/bash testuser
> returned 2 instead of 0 at /etc/puppet/manifests/site.pp:5
> debug: Finishing transaction 74491050 with 3 changes
> debug: Storing state
> debug: Stored state in 0.02 seconds
> notice: Finished catalog run in 0.41 seconds
>
>
>>
>> See
>> http://reductivelabs.com/trac/puppet/wiki/LanguageTutorial#definitions
>> for details on definitions.
>>
>>
>> Regards, DavidS
> --
> Asif Iqbal
> PGP Key: 0xE62693C5 KeyServer: pgp.mit.edu
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?
>



-- 
Asif Iqbal
PGP Key: 0xE62693C5 KeyServer: pgp.mit.edu
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to