承诺未在主机中触发 - cfengine

承诺未在主机中触发 - cfengine

我是 cfengine 的新手。我创建了一个简单的承诺,在 /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 中。但是当我转到客户端时,我注意到 promise 存在,但测试文件不存在。

因此,承诺正在传播给客户,但尚未触发。

我如何确保该文件存在于所有客户端中?

答案1

需要更多信息来调试该问题,因此您可以按给定的顺序检查以下内容:

  • 在中心端,您在哪里编辑promises.cf?正确的位置是在/var/cfengine/masterfiles不是/var/cfengine/inputs文件很快就会被覆盖。
  • 您是否等待了 5 分钟让策略传播并运行?(这是两个独立的步骤)
  • 在客户端检查/var/cfengine/inputs/promises.cf。它是否与集线器上的相同/var/cfengine/masterfiles/promises.cf?如果相同,则策略传播正确。
  • 如果仍然失败,请尾随/var/log/messages。您是否每 5 分钟看到来自 CFEngine 的任何消息?
  • 尝试手动运行策略:cf-agent -KI。输出是什么?文件现在创建了吗?

答案2

这应该在策略服务器(集线器)和所有连接的客户端上都有效,并且文件应该在任何地方创建。策略传播到代理后您看不到文件的原因可能是因为客户端上的 cf-agent 尚未运行,因此文件未创建。

它应该在下一次 cf-agent 运行后创建,这应该在 5 分钟内发生(默认配置)。

如果您希望更早地创建文件,您只需在客户端上运行 cf-agent -KI,输出将指示文件创建。

并解释一下这个东西是如何工作的:

1. You modify policy on hub
2. Policy from hub masterfiles is copied to hub inputs directory (every 5 minutes cf-execd is running cf-agent -f update.cf to copy
the policy from mastefiles)
3. After policy is there within next 5 minutes cf-agent is running and executing policy
4. In the meantime clients are contacting hub to check if policy has changed
5. If so clients are downloading policy to inputs
6. After 5 minutes cf-agent is run and policy is executed

希望这有助于理解这个问题。

相关内容