Hi Lisa !

>
>> But it seems to me that OR will not work with more
>> than two choices and in reality I want to merge
>> more than two classes.  I guess I could use an AND
>> in that case?
> Why would it not work? OR is a logical operation, it would work on any number 
> of classes:
>
>     "some_class" or =>  { "agents", "master", "dns_server", "web_server", 
> "suse_9" };
>
>
Which version of CFEngine are you using ? I remember we had some issues 
on 3.1.4 with complex classes expression, that were not correctly 
evaluated, so it could explain why you believe that you can OR more than 
twice
>> And I would like to do something fancier than
>> naming all the hosts in a class.  Something like:
>>
>> "agents"  expression =>  regcmp( "ag.*" ,
>> "${sys.host}");
>>
>> but I have two hosts that would match that
>> expression and I want to exclude them.  Let's say
>> they are agent041 and agent042.
> You could do this like Nick suggested, by explicitly excluding them, with 
> something like this:
>
>    "agents" expression =>  and(regcmp( "ag.*", "$(sys.host)" ), 
> not("agent041"), not("agent042"));
>
>


You could also use class conditions to define classes :

classes:
   !agent041.!agent042::
     "agents"  expression => regcmp( "ag.*" ,  "${sys.host}");

Or even a bit more complex with classes and ifvarclass:
classes:
   !agent041.!agent042::
     "agents"
         expression => regcmp( "ag.*" ,  "${sys.host}"),
         ifvarclass => "some_class_expression";

Best regards !
Nicolas
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to