Forum: Cfengine Help
Subject: Re: set_user_field multiple lines
Author: regan99
Link to topic: https://cfengine.com/forum/read.php?3,21094,21176#msg-21176

Was your goal for it to look like this?


backoffice:x:1002:user1,user2,user3
exploration:x:1003:user4,user5


If so, I think it's the same issue someone was having in the user management 
bundle. It is iterating through the whole group_lines list before actually 
setting the value in your /tmp/group file. That's why only the last value in 
the group_lines list is seen.

To make it iterate over everything, sort of simulating a foreach loop, I think 
you need to do an associative array. Maybe something like this:


vars:
"groups" slist => { "group1", "group2" };
"array" string => "user1,user2,user3";
"array" string => "user4,user5";


Then, to actually change the /tmp/group file, do this:


edit_line => set_user_field("$(groups)", 4, "$(array[$(groups)])");


I think the $(array[$(groups)])" will actually map the list of users you want 
to each group the way you want (if I understand your goal). Take this with a 
grain of salt though, I am a newb with cfengine. :)

I made the following file to test this out:


body common control

{
bundlesequence => { "example" };
}

bundle agent example

{
vars:
"groups" slist => { "group1", "group2" };
"array" string => "user1,user2,user3";
"array" string => "user4,user5";

reports:

cfengine_3::

"$(groups) has these members: $(array[$(groups)])";
}


When I ran it, these were the results:


R: group1 has these members: user1,user2,user3
R: group2 has these members: user4,user5


So, it does what I think. But what I think may not be what you are asking!

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to