I would follow to the first approach, getting to the forth column of the match lines then appending users from lists, like the following.
body common control { bundlesequence => { "def","test" }; } bundle common def { vars: aix:: "groups" slist => { "unix","dba","support" }; "grp_unix" slist => { "a", "b", "c", "d" }; "grp_dba" slist => { "e", "f","g" }; "grp_support" slist => { "h", "i", "j" }; } bundle agent test { vars: aix:: "local_groups" slist => { @(def.groups) }; files: aix:: "/etc/group" edit_line => AppendUserParam("$(local_groups)","4"); } bundle edit_line AppendUserParam(user,field) { vars: "tmp_unix" slist => { @(def.grp_unix) }; "tmp_dba" slist => { @(def.grp_dba) }; "tmp_support" slist => { @(def.grp_support) }; field_edits: "$(user):.*" edit_field => col(":","$(field)","$(tmp_$(user))","append"); } body edit_field col(split,col,newval,method) { field_separator => "$(split)"; select_field => "$(col)"; value_separator => ","; field_value => "$(newval)"; field_operation => "$(method)"; extend_fields => "true"; } It should work and get the same result, I guess. :-) Cheers, --Nakarin On May 27, 2010, at 12:45 PM, Seva Gluschenko wrote: > Johan, > > it seems like you should add policy => overridable to the relevant > variable in the append_user_field bundle. > > On the other hand, it seems like it worth of trying a different approach: > > vars: > > "grp[unix]" string => "unix:!:1000:"; > "grp[dba]" string => "dba:!:1001:"; > "grp[support]" string => "support:!:1002:"; > > "lst[unix]" slist => { "a", "b", "c", "d" }; > "lst[dba]" slist => { "e", "f", "g" }; > "lst[support]" slist => { "h", "i", "j" }; > > "groups" slist => getindices("grp"); > > files: > > aix:: > > "/etc/group" > > perms => mog("644", "root", "security"), > create => "true", > edit_line => append_groups("$(grp[$(groups)])", "$(lst[$(groups)])"); > > with the relevant edit_line bundle like the following example: > > bundle edit_line append_groups(grp, list) > { > vars: > "line" string => join(",", @(list)); > > classes: > "add_line" not => regline("$(grp).*", "$(edit.filename)"); > > insert_lines: > add_line:: > "$(grp)$(line)"; > } > > Of course, this is subject to check since I'm writing strictly theoretically ) > > 2010/5/27 Johan Marcusson <johan.marcus...@systeam.se>: >> Hello list, >> >> I'm new to CFengine, and I'm trying to set up synchronization of user >> accounts between some AIX-boxes. >> The user account part is working, but I'm having some issues with group >> memberships. I want to add some users to group "unix", some users to group >> "dba" and some users to group "support". However, it seems like the users >> for the unix group gets added to all the groups. >> >> Here is the configuration, this is CFengine 3 btw: >> >> vars: >> >> "grp[unix]" string => "unix:!:1000:"; >> "grp[dba]" string => "dba:!:1001:"; >> "grp[support]" string => "support:!:1002:"; >> >> "grp_unix" slist => { "a", "b", "c", "d" }; >> "grp_dba" slist => { "e", "f", "g" }; >> "grp_support" slist => { "h", "i", "j" }; >> >> files: >> >> aix:: >> >> "/etc/group" >> >> perms => mog("644", "root", "security"), >> create => "true", >> edit_line => append_groups_starting("passwd.grp"); >> >> "/etc/group" >> >> edit_line => append_user_field("unix", "4", "@(passwd.grp_unix)"); >> >> "/etc/group" >> >> edit_line => append_user_field("dba", "4", "@(passwd.grp_dba)"); >> >> "/etc/group" >> >> edit_line => append_user_field("support", "4", "@(passwd.grp_support)"); >> >> >> >> Resulting group file: >> >> unix:!:1000:a,b,c,d >> support:!:1002:a,b,c,d >> dba:!:1001:a,b,c,d >> >> Same users in all groups! >> >> What am I doing wrong? Can't I have multiple edit_lines? >> I've read that you should use lists instead of doing like this, but I would >> need to make a list of lists for the users for each group and I'm not sure >> how to do that. >> >> I'm sure this is a very basic issue, but I'm having a hard time finding any >> answers with google. Maybe I misunderstood some fundamentals of CFengine :) >> >> Please advise >> >> Regards, >> Johan Marcusson >> _______________________________________________ >> Help-cfengine mailing list >> Help-cfengine@cfengine.org >> https://cfengine.org/mailman/listinfo/help-cfengine >> > > > > -- > SY, Seva Gluschenko. > _______________________________________________ > Help-cfengine mailing list > Help-cfengine@cfengine.org > https://cfengine.org/mailman/listinfo/help-cfengine _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine