Bernd Adamowicz
2011-Sep-08  08:58 UTC
[Puppet Users] Avoid user creation/deletion possible?
Hi all,
is there a way to avoid changing the state (present/absent) of a user? In my
case I just want to do a kind of ''check'' if the user is
present. If so, I will do some file-resource stuff on him. If not, nothing
should be done at all.
Example:
# create the user resource
user { ''someuser'':
  ...
}
# copy file if user exists
# do nothing if not
file { "/home/someuser/.bashrc":
  require => "someuser",
  ...
}
Obviously I cannot use ''ensure => present|absent'' for the
user, since this would change its state. And I''m not sure if
it''s OK just to omit the ''ensure'' attribute. Any
ideas?
Thanks Bernd 
-- 
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+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
Bernd Adamowicz
2011-Sep-08  09:17 UTC
[Puppet Users] AW: Avoid user creation/deletion possible?
Sorry, the file resource should of course be:
# copy file if user exists
# do nothing if not
file { "/home/someuser/.bashrc":
  require => User["someuser"],
  ...
}
> -----Ursprüngliche Nachricht-----
> Von: puppet-users@googlegroups.com [mailto:puppet-
> users@googlegroups.com] Im Auftrag von Bernd Adamowicz
> Gesendet: Donnerstag, 8. September 2011 10:58
> An: ''puppet-users@googlegroups.com''
> Betreff: [Puppet Users] Avoid user creation/deletion possible?
> 
> Hi all,
> 
> is there a way to avoid changing the state (present/absent) of a user?
> In my case I just want to do a kind of ''check'' if the
user is present.
> If so, I will do some file-resource stuff on him. If not, nothing
> should be done at all.
> 
> Example:
> 
> # create the user resource
> user { ''someuser'':
>   ...
> }
> 
> # copy file if user exists
> # do nothing if not
> file { "/home/someuser/.bashrc":
>   require => "someuser",
>   ...
> }
> 
> Obviously I cannot use ''ensure => present|absent'' for
the user, since
> this would change its state. And I''m not sure if it''s OK
just to omit
> the ''ensure'' attribute. Any ideas?
> 
> Thanks Bernd
> 
> --
> 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+unsubscribe@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.
-- 
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+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
jcbollinger
2011-Sep-08  13:45 UTC
[Puppet Users] Re: Avoid user creation/deletion possible?
On Sep 8, 3:58 am, Bernd Adamowicz <Bernd.Adamow...@esailors.de> wrote:> Hi all, > > is there a way to avoid changing the state (present/absent) of a user? In my case I just want to do a kind of ''check'' if the user is present. If so, I will do some file-resource stuff on him. If not, nothing should be done at all. > > Example: > > # create the user resource > user { ''someuser'': > ... > > } > > # copy file if user exists > # do nothing if not > file { "/home/someuser/.bashrc": > require => "someuser", > ... > > } > > Obviously I cannot use ''ensure => present|absent'' for the user, since this would change its state. And I''m not sure if it''s OK just to omit the ''ensure'' attribute. Any ideas?You could write a custom fact that extracts all the system user names (or all the names of /home subdirectories, or ...) and use that to drive your resource management. You could then do something like the following: # Split the custom fact value into an array $user_array = split($::users_i_care_about, '' '') # Declare the desired resources for each user: my_user_stuff { $user_array: # parameters of the my_user_stuff type, if needed } define my_user_stuff () { # $name is the name of the resource instance file { "/home/${name}/.bashrc": ensure => file, # ... } # other resources for this user as needed ... } That has a bit of code smell to my nose, though, mostly around the fact that you don''t know what users are actually supposed to be defined (which in turn is why a custom fact is involved). You could do the same job with a shell script launched periodically by cron, and I think I would prefer that myself. But I would use Puppet to create and manage the crontab entry. John -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Bernd Adamowicz
2011-Sep-08  15:13 UTC
AW: [Puppet Users] Re: Avoid user creation/deletion possible?
> -----Ursprüngliche Nachricht----- > Von: puppet-users@googlegroups.com [mailto:puppet- > users@googlegroups.com] Im Auftrag von jcbollinger > Gesendet: Donnerstag, 8. September 2011 15:45 > An: Puppet Users > Betreff: [Puppet Users] Re: Avoid user creation/deletion possible? > > > > On Sep 8, 3:58 am, Bernd Adamowicz <Bernd.Adamow...@esailors.de> > wrote: > > Hi all, > > > > is there a way to avoid changing the state (present/absent) of a > user? In my case I just want to do a kind of ''check'' if the user is > present. If so, I will do some file-resource stuff on him. If not, > nothing should be done at all. > > > > Example: > > > > # create the user resource > > user { ''someuser'': > > ... > > > > } > > > > # copy file if user exists > > # do nothing if not > > file { "/home/someuser/.bashrc": > > require => "someuser", > > ... > > > > } > > > > Obviously I cannot use ''ensure => present|absent'' for the user, since > this would change its state. And I''m not sure if it''s OK just to omit > the ''ensure'' attribute. Any ideas? > > > You could write a custom fact that extracts all the system user names > (or all the names of /home subdirectories, or ...) and use that to > drive your resource management. You could then do something like the > following: > > # Split the custom fact value into an array > $user_array = split($::users_i_care_about, '' '') > > # Declare the desired resources for each user: > my_user_stuff { $user_array: > # parameters of the my_user_stuff type, if needed > } > > define my_user_stuff () { > # $name is the name of the resource instance > file { "/home/${name}/.bashrc": > ensure => file, > # ... > } > > # other resources for this user as needed ... > } > > > That has a bit of code smell to my nose, though, mostly around the > fact that you don''t know what users are actually supposed to be > defined (which in turn is why a custom fact is involved). You could > do the same job with a shell script launched periodically by cron, and > I think I would prefer that myself. But I would use Puppet to create > and manage the crontab entry. > > > John > > -- > 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+unsubscribe@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en.I''m already thinking about your suggestions. If I do it this way, I''ll post the results here. Thanks, John! -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.