Problem creating user with Puppet

6,191 views
Skip to first unread message

dusan.d...@clavistechnology.com

unread,
May 21, 2013, 8:39:06 AM5/21/13
to puppet...@googlegroups.com
Hi,

I am trying to create user on Ubuntu using this code:

        user { "clavis":
                ensure => "present",
                home => "/home/clavis",
                name => "clavis",
                shell => "/bin/bash",
                managehome => true,
                groups => 'clavis',
                require => Group['clavis']
        }

User is created properly, but home directory is not created, although I explicitly set mamagehome to true. Any idea what might be the problem here ?

Thanks in advance,
Dusan

Denmat

unread,
May 21, 2013, 6:22:52 PM5/21/13
to puppet...@googlegroups.com
Hi,

That should work. Can you provide a bit more info? Versions of puppet and Ubuntu.

Can you also provide the output from your run with --debug? 

Make sure the user is removed before you run again.

Cheers
Den
--
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...@googlegroups.com.
To post to this group, send email to puppet...@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Jeff Zellner

unread,
May 21, 2013, 6:37:52 PM5/21/13
to puppet...@googlegroups.com
From the docs for `home`: "The home directory of the user. The
directory must be created separately and is not currently checked for
existence."

`managehome` doesn't ensure the creation of the home directory, I
believe it just checks permissions.

Cheers!

-Jeff

Dusan Dordevic

unread,
May 22, 2013, 4:43:33 AM5/22/13
to puppet...@googlegroups.com
Hi,

Thanks for responses. I added piece of code that will create home dir. Code now looks like this:

    file { "/home/clavis":
        ensure => "directory",
        owner  => "clavis",
        group  => "clavis",
        mode   => 700,
        require =>  [ User[clavis], Group[clavis] ],

    }

    user { "clavis":
        ensure => "present",
        home => "/home/clavis",
        name => "clavis",
        shell => "/bin/bash",
        managehome => true,
        groups => 'clavis',
        require => Group['clavis']
    }

When I try to execute it, I see this error on client:

err: Failed to apply catalog: Could not find dependency Group[clavis] for User[clavis] at /etc/puppet/manifests/site.pp:25

If I understand it properly, it means it cannot create user because group clavis do not exist. However, when I add line to add group:


    file { "/home/clavis":
        ensure => "directory",
        owner  => "clavis",
        group  => "clavis",
        mode   => 700,
        require =>  [ User[clavis], Group[clavis] ],
    }

    group { 'clavis':

                ensure => "present",
    }

    user { "clavis":
        ensure => "present",
        home => "/home/clavis",
        name => "clavis",
        shell => "/bin/bash",
        managehome => true,
        groups => 'clavis',
        require => Group['clavis']
    }

It tells me:

err: /Stage[main]//Node[puppetclient2]/User[clavis]/ensure: change from absent to present failed: Could not create user clavis: Execution of '/usr/sbin/useradd -d /home/clavis -s /bin/bash -G clavis -m clavis' returned 9: useradd: group clavis exists - if you want to add this user to that group, use -g.


So what is proper way to add user, create it's home dir, create it's group and add it to group. Simply speaking, do the same what standard useradd command would do ?

Thanks...


Best regards,
Dušan


You received this message because you are subscribed to a topic in the Google Groups "Puppet Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/puppet-users/EkT8H779j4E/unsubscribe?hl=en.
To unsubscribe from this group and all its topics, send an email to puppet-users...@googlegroups.com.

Dick Davies

unread,
May 22, 2013, 7:19:08 AM5/22/13
to puppet...@googlegroups.com
On 22 May 2013 09:43, Dusan Dordevic <dusan.d...@clavistechnology.com> wrote:

 
        groups => 'clavis',

you don't need this next line, it'll be auto-required.
 
        require => Group['clavis']

Dusan Dordevic

unread,
May 22, 2013, 7:27:45 AM5/22/13
to puppet...@googlegroups.com
Hi,

I changed code to:


        file { "/home/clavis":
                ensure => "directory",
                owner  => "clavis",
                group  => "clavis",
                mode   => 700,
                require =>  [ User[clavis], Group[clavis] ],
        }

        group { 'clavis':
               ensure => "present",
        }

        user { "clavis":
                ensure => "present",
                home => "/home/clavis",
                name => "clavis",
                shell => "/bin/bash",
                managehome => true,
                groups => 'clavis',
        }

(removed   require => Group['clavis'])

but it is still the same. here is error message:

notice: /Stage[main]//Node[puppetclient2]/Group[clavis]/ensure: created

err: /Stage[main]//Node[puppetclient2]/User[clavis]/ensure: change from absent to present failed: Could not create user clavis: Execution of '/usr/sbin/useradd -d /home/clavis -s /bin/bash -G clavis -m clavis' returned 9: useradd: group clavis exists - if you want to add this user to that group, use -g.



Best regards,
Dušan


--

Dan White

unread,
May 22, 2013, 9:03:29 AM5/22/13
to puppet...@googlegroups.com
file { "/home/clavis":
ensure => "directory",
owner => "clavis",
group => "clavis",
mode => 700,
require => [ User[clavis], Group[clavis] ],
}

group { 'clavis':
ensure => "present",
}

user { "clavis":
ensure => "present",
home => "/home/clavis",
name => "clavis",
shell => "/bin/bash",
managehome => true,
# groups => 'clavis', <--- This is the problem remove it and this will work
}


I think you are confusing the user's primary group with additional groups

From http://docs.puppetlabs.com/references/latest/type.html#user :

gid:
The user’s primary group. Can be specified numerically or by name. Note that users on Windows systems do not have a primary group; manage groups with the groups attribute instead.

groups:
The groups to which the user belongs. The primary group should not be listed, and groups should be identified by name rather than by GID. Multiple groups should be specified as an array.

From http://www.computerhope.com/unix/useradd.htm :

-g initial_group
The group name or number of the user's initial login group. The group name must exist. A group number must refer to an already existing group. The default group number is 1.

-G group,[,...]
A list of supplementary groups which the user is also a member of. Each group is separated from the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the -g option. The default is for the user to belong only to the initial group.

“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)
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...@googlegroups.com.

Dusan Dordevic

unread,
May 22, 2013, 9:07:53 AM5/22/13
to puppet...@googlegroups.com
This was the problem, when I removed

groups => 'clavis',

everything started working.

Thanks !

Best regards,
Dušan


To unsubscribe from this group and all its topics, send an email to puppet-users...@googlegroups.com.

To post to this group, send email to puppet...@googlegroups.com.
Visit this group at http://groups.google.com/group/puppet-users?hl=en.

Dan White

unread,
May 22, 2013, 9:10:55 AM5/22/13
to puppet...@googlegroups.com
Glad I could help.


“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)

Sent: Wednesday, May 22, 2013 9:07:53 AM

jcbollinger

unread,
May 22, 2013, 10:10:47 AM5/22/13
to puppet...@googlegroups.com


On Tuesday, May 21, 2013 5:37:52 PM UTC-5, Jeff Zellner wrote:
From the docs for `home`: "The home directory of the user. The
directory must be created separately and is not currently checked for
existence."

`managehome` doesn't ensure the creation of the home directory, I
believe it just checks permissions.


On the contrary, for providers that support the 'manages_homedir' feature, "managehome => true" should indeed cause the provider to create or remove the home directory as needed and appropriate.  And most User providers do support that feature.  The agent's debug output should show which provider is being used.


John

Reply all
Reply to author
Forward
0 new messages