Hi

I have been trying to make cfengine handle user account more usefully.  To
this end, I have writtne a pair of modules for parsing users and group and
then creating classes based on what it finds.

If the user "martin" account exists, a class is created of the form
"user_martin".
If the group "systems" exists, a class is created of the form
"group_systems".
If the user "martin" is a member of the group "systems" then a class of
the form "group_systems_martin" is created.

Running cfagent, I can see these classes being instantiated:



Exec module [/var/lib/cfengine2/modules/module:parseusers ]
Activated classes: user_martin
Activated classes: user_adrian
<more users snipped to protected the innocent>

*********************************************************************
 Main Tree Sched: module:parsegroups pass 1 @ Tue Jan 26 07:01:02 2010
*********************************************************************

---------------------------------------------------------------------
Plug-in `module:parsegroups'
---------------------------------------------------------------------

Exec module [/var/lib/cfengine2/modules/module:parsegroups ]
Activated classes: group_root
Activated classes: group_daemon
Activated classes: group_bin
Activated classes: group_sys
Activated classes: group_adm
Activated classes: group_tty
Activated classes: group_disk
Activated classes: group_lp
Activated classes: group_mail
Activated classes: group_news
Activated classes: group_uucp
Activated classes: group_man
Activated classes: group_proxy
Activated classes: group_kmem
Activated classes: group_dialout
Activated classes: group_fax
Activated classes: group_voice
Activated classes: group_cdrom
Activated classes: group_floppy
Activated classes: group_tape
Activated classes: group_sudo
Activated classes: group_audio
Activated classes: group_dip
Activated classes: group_www_data
Activated classes: group_backup
Activated classes: group_operator
Activated classes: group_list
Activated classes: group_irc
Activated classes: group_src
Activated classes: group_gnats
Activated classes: group_shadow
Activated classes: group_utmp
Activated classes: group_video
Activated classes: group_sasl
Activated classes: group_plugdev
Activated classes: group_staff
Activated classes: group_games
Activated classes: group_users
Activated classes: group_nogroup
Activated classes: group_libuuid
Activated classes: group_crontab
Activated classes: group_ssh
Activated classes: group_mbrooks
Activated classes: group_adrian



This mostly works.  I can do things like:

shellcommands:
  !user_martin::
     "/path/to/my/useraddscript martin"

  !group_systems::
     "/path/to/my/groupaddscript systems"

  !group_systems_martin::
     "/path/to/my/addusertogroupscript martin systems"

And so on, and sure enough the groups and users are created.

In order to simplify the configuration, all of this is in a separate file
which is imported into the main config.

Here comes the problem I'm having.  I want to use this system to _remove_
user accounts for legacy users, so I added something like the following:


shellcommands:
  user_evil::
    "/path/to/my/deleteuserscript evil"

The result?  Nothing. cfengine just skips over the clause.

To make this do what I want, I have to add this to the config:

AddInstallable = ( user_evil )

I want to manage literally dozens of users. having to explicitly list them
will be a pain in the backside.  The documented reason for needing
AddInstallable doesn't seem to apply as the modules activate the classes
_before_ the import.

Have I missed something here?


Thanks


Martin.


_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to