Forum: Cfengine Help
Subject: execresult will look for binaries even though bundle is not included
Author: filbranden
Link to topic: https://cfengine.com/forum/read.php?3,18117,18117#msg-18117
Hi,
I have several bundles and some of them use "execresult" in vars: section to
look up system components. In some cases, I want to avoid including those
bundles in machines that do not have those binaries, however, I noticed that
the "vars:" section seems to be executed (or at least the existence of the
execresult file checked) even though it is not included.
Example test.cf file:
body common control {
bundlesequence => {
"common_config",
"all_test_bundles"
};
}
bundle common common_config {
classes:
"host_has_command_xyz123" or => { "hosts", "that", "have", "this",
"command" };
}
bundle agent all_test_bundles {
methods:
host_has_command_xyz123::
"any" usebundle => test_bundle_that_uses_xyz123;
any::
"any" usebundle => test_bundle_generic;
}
bundle agent test_bundle_that_uses_xyz123 {
vars:
"xyz123_output" string => execresult("/opt/xyz123/bin/xyz123
--verbose", "noshell");
reports:
cfengine_3::
"xyz123 was run, output = $(xyz123_output)";
}
bundle agent test_bundle_generic {
reports:
cfengine_3::
"generic test bundle was run";
}
If I run it on a machine that has xyz123 binary:
$ cf-agent -K -Dthat -f test.cf
R: xyz123 was run, output = hello world
R: generic test bundle was run
If I run it on a machine that has xyz123 binary but that is not one of the
hosts where it's supposed to run:
$ cf-agent -K -f test.cf
R: generic test bundle was run
But if I run it on a machine that does not have that binary:
$ cf-agent -K -f test.cf
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
Proposed executable file "/opt/xyz123/bin/xyz123" doesn't exist
ExecResult "noshell" is assumed to be executable but isn't
R: generic test bundle was run
How can I prevent cf-agent of evaluating those "execresult" statments in
"vars:" sections of bundles that I don't intend to include?
Thanks!
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine