Forum: CFEngine Help
Subject: odd vars definition
Author: roadtest
Link to topic: https://cfengine.com/forum/read.php?3,25029,25029#msg-25029
Hi,
I defined a method on a client, which can be activated by remote cf-runagent
on cfengine server as "cf-runagent -DBinUpdate -H ". Then it will kill
application process, pull new binary, then start application process. Here is
the bundle:
================================================
$cat -n vsrv.cf
1 #####################################################
2 # #
3 # configuration file for VSRV server #
4 # #
5 #####################################################
6 ##
7 ##
8 bundle agent OnHost
9 {
10 #vars:
11 # "policyhost" string => "172.16.13.123";
12
13
14 reports:
15 cfengine::
16 "$(sys.fqhost) is ready to update VSRV configuration";
17
18 methods:
19 BinUpdate::
20 "vsrv" usebundle => UpdateWorkFlow;
21
22 }
23
24 bundle agent UpdateWorkFlow
25 {
26 vars:
27 "policyhost" string => "172.16.13.123";
28
29 reports:
30 windows::
31 "I am inside UpdateWorkFlow bundle";
32
33 processes:
34 "sleep"
35 signals => { "term","kill" },
36 classes => if_repaired("PullFiles");
37
38 #reports:
39 # PullFiles::
40 # "I am inside PullFiles section";
41
42 PullFiles::
43 files:
44 "/data/vsrv/."
45 comment => "Update Application Binary from CFEngine Repo
sitory Server",
46 create => "true",
47 depth_search => u_recurse("inf"),
48 perms => u_workdir_perms("0755"),
49 copy_from => remote_cp("/data/vsrv","$(policyhost)");
50
51 }
52
================================================
If I define "policyhost" on line27, everything is working as expected. If I
define "policyhost" on line 11, it will show following errors:
=================================================
$cf-agent -DBinUpdate -v -K
...
cf3--> -> Copy file /data/vsrv/. from /data/vsrv check
cf3--> Unable to lookup hostname ($(policyhost)) or cfengine service: hostname n
or servname provided, or not known
cf3--> Unable to lookup hostname ($(policyhost)) or cfengine service: hostname n
or servname provided, or not known
cf3--> No existing connection to $(policyhost) is established...
cf3--> Set cfengine port number to 5308 = 5308
cf3--> Set connection timeout to 10
cf3--> !! Unable to find host or service: ($(policyhost)/5308) hostname nor ser
vname provided, or not known
cf3--> !! No server is responding on this port
cf3--> Unable to establish connection with $(policyhost)
cf3--> Unable to lookup hostname ($(policyhost)) or cfengine service: hostname n
or servname provided, or not known
cf3--> -> No suitable server responded to hail
cf3--> Promise (version not specified) belongs to bundle 'UpdateWorkFlow' in fil
e '/var/cfengine/masterfiles/sites/vsrv.cf' near line 45
cf3--> Comment: Update Application Binary from CFEngine Repository Server
...
=================================================
Per my understanding, promise types are executed in order -
vars,classes,methods,processes,commands,reports. Why I have to define variable
in the same bundle?
I also tried to define "policyhost" in common bundle with the same error. Here
is my promises.cf
==================================================
$ less promises.cf
#####################################################
# #
# promises.cf - Main Cfengine 3 configuration file #
# #
#####################################################
body common control {
any::
bundlesequence => { @(g.bundlesequence) };
any::
inputs => {
"update.cf",
"cfengine_stdlib.cf",
"classes.cf",
"/var/cfengine/masterfiles/cf-execd.cf",
"/var/cfengine/masterfiles/cf-serverd.cf",
"cf-report.cf",
"cleanup.cf",
"$(g.sitesfiles)/$(global.HostFunction).cf"
};
output_prefix => "cf3--";
}
# global vars
bundle common g {
vars:
"workdir" string => "/var/cfengine";
"masterfiles" string => "$(workdir)/masterfiles";
"binaryfiles" string => "$(workdir)/bin";
"inputfiles" string => "$(workdir)/inputs";
"sitesfiles" string => "$(workdir)/masterfiles/sites";
"policyhost" string => "172.16.13.123";
"bundlesequence" slist => { "update", "executor", "server","cleanup", "O
nHost" };
## "bundlesequence" slist => { "update", "executor", "server","cleanup" }
;
}
body runagent control {
hosts => { "127.0.0.1", "10.127.247.0/24", "10.127.248.0/24" };
}
==================================================
What did I miss? Thanks in advance!
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine