Hi,
I'm trying to do a script for provisioning/de-provisioning unix user accounts.
It works sometimes, and sometimes not. It feels like an intermittent error, but
I've changed the script a bit to make the logic better, and for debugging, but
now it's probably broken. (Now I see "Scalar variable user contains itself
(non-convergent): $(user)" again.)
I don't understand why some things happen and why some things won't happen
(even if they are suppose to, at least according to my understanding of
cfengine's logic, but of course, I might misunderstand the logic completely)
Anyway, on my different linux hosts, all users except user5 is provisioned, and
user1 + user4 are locked.
On my netbsd host, only user5 was provisioned and user1 was locked. users[2-4]
was never added.
(user1 was provisioned on all hosts already (a system-account), and user5 was
added at a later stage. strangely, users2-4 was never added on the netbsd host,
and user5 was only added on the netbsd machine)
Any hits are mostly welcome!
(Non-working) example code:
site.cf:
bundle agent main
{
vars:
"uids" slist => { "user2", "user3", "user5" };
"disabled_uids" slist => { "user1", "user4" };
methods:
"any" usebundle => add_uids;
"any" usebundle => disable_uids;
}
user.cf:
bundle agent add_uids
{
vars:
"users" slist => { @(g.uids) };
classes:
"have_user" expression => userexists("$(users)");
commands:
!have_user::
"/usr/sbin/useradd -d /home/$(users) -m -c \"CF_PROVISIONED\" -g users
$(users)";
}
bundle agent disable_uids
{
vars:
"users" slist => { @(g.disabled_uids) };
netbsd::
"lockopts" string => "-C yes -s /sbin/nologin";
linux::
"lockopts" string => "-L -s /usr/sbin/nologin";
classes:
"have_user" expression => userexists("$(users)");
commands:
have_user::
"/usr/sbin/usermod $(lockopts) -c \"CF_DISABLED\" $(users)";
}
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine