我是cfengine 的新手。我创建了一个简单的 Promise,它在 /etc/test-cfengine 中创建了一个名为 testing 的文件
body common control
{
bundlesequence =>{"create_test_file"};
}
bundle agent create_test_file
{
files:
"/etc/test-cfengine/test-file"
edit_line => addline,
create => "true";
}
bundle edit_line addline
{
insert_lines: "Cfengine is running nicely.";
}
当我运行 cf-agent -K(在编辑 promises.cf 并包含 promise 之后)时,我注意到 /etc/test-cfengine 中存在测试文件。但是当我去客户端时,我注意到承诺存在,但测试文件不存在。
因此,承诺正在传播给客户,但不会触发。
如何确定该文件存在于所有客户端中?
这应该适用于策略服务器(集线器),并且所有连接的客户端和文件都应该在任何地方创建。将策略传播到代理后看不到文件的原因可能是客户端上的 cf-agent 尚未运行,因此未创建文件。
它应该在下一次 cf-agent 运行后创建,这应该在 5 分钟内发生(默认配置)。
如果您想早点创建文件,您只需在客户端上运行 cf-agent -KI ,输出应指示文件创建。
并解释这些东西是如何工作的:
希望这有助于理解这个问题。
调试问题需要更多信息,因此您可以按给定顺序检查以下内容:
promises.cf
?正确的位置是 in ,/var/cfengine/masterfiles
而不是/var/cfengine/inputs
文件将很快被覆盖的位置。/var/cfengine/inputs/promises.cf
./var/cfengine/masterfiles/promises.cf
和集线器上的一样吗?如果是这样,则该策略正确传播。/var/log/messages
。您是否每 5 分钟看到一次来自 CFEngine 的消息?cf-agent -KI
. 输出是什么?现在创建文件了吗?