Forum: Cfengine Help
Subject: How can I merge several slist into one slist?
Author: random
Link to topic: https://cfengine.com/forum/read.php?3,21290,21290#msg-21290

I'm trying to use the code below to create a list of groups based on soft 
classes I've set in promises.cf.  Everything works for the most part except for 
the "allowgroups_list" slist.  The slists inside it are expanded if they're set 
as expected.  The issue I'm having is when I have a server that doesn't have 
'database' class set, the allowgroups_list is expanded and the 
@(allow_database) slist is added literally to the list instead of being 
expanded into nothing.  As a result, I get something like this when the 
variable is expanded in the template:

AllowGroups                     
root,wheel,group1,group2,admin1,admin2,@(allow_database)

What is the correct way to accomplish this task with cfengine 3?  I'd also be 
interested to know if there's an easy way to remove duplicate names from the 
slist.

Thanks
-random


bundle agent sshd_config {
   vars:
      web.external::
         "allow_external"      slist => { "group1", "group2" };
      web.internal|web.backend::
         "allow_internal"     slist => { "admin1", "admin2" };
      web.database::
         "allow_database" slist => { "mysql", "admin1" };

      web::
         "defaultgroups"    slist => { "root", "wheel" };
         "allowgroups_list" slist => { @(defaultgroups), @(allow_external), 
@(allow_internal), @(allow_database) };
         "allowgroups"     string => join(",","allowgroups_list");

   files:
      web::
         "/etc/ssh/sshd_config"
            comment => "Configure SSH",
            perms => m("644"),
            create => "true",
            edit_line => expand_template("$(g.templates)/sshd_config.in"),
            edit_defaults => empty;
}


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

Reply via email to