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.