Forum: CFEngine Help
Subject: Re: CFEngine Help: Re: Var in var : limitation ?
Author: loopx
Link to topic: https://cfengine.com/forum/read.php?3,26688,26758#msg-26758

Here is a reproductible example. 2 files (located under input/) :

test_global.cf :

###########################################################
# Description : global configuration for Cfengine/XXX     #
###########################################################

bundle common g {
        vars:
                my_server::
                        "service_detected" string => "management";


        classes:
                any::
                        "my_server" expression => "";
}



test_subversion.cf :

###########################################################
# Description : configuration file for Subversion servers #
###########################################################

body common control {
        bundlesequence => { "subversion" };

        inputs => { "test_global.cf" };
}

bundle agent subversion {
        vars:
                my_server::
                        "service" string => "$(g.service_detected)";
                        "path_repository_default" string => 
"/mnt/data1/subversion";

                my_server::
                        "repositories_$(service)"
                                slist => {
                                        "$(path_repository_default)/cfengine3"
                                };


        reports:
                my_server::
                        "Defined repositories (var 'service'='$(service)') = 
'$(repositories_$(service))'";
                        "Defined repositories (var 
'g.service_detected'='$(g.service_detected)') = 
'$(repositories_$(g.service_detected))'";
}



Run the example :

[0]$ pwd
/var/cfengine/inputs
[0]$ cf-agent -If test_subversion.cf
R: Defined repositories (var 'service'='management') = 
'/mnt/data1/subversion/cfengine3'
R: Defined repositories (var 'g.service_detected'='management') = 
'$(repositories_management)'



Fill in these 2 files and change the "" value with the name of your machine, ip 
or anything you want. Run and you should get the same behavior : var wan't to 
be expended as expected. The workaround is to do with var "service" (get local 
copy of global var).


Version on RHEL6 : cfengine-3.3.0-1.el6.x86_64

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

Reply via email to