我在使用 CFEngine 的模板系统时遇到问题。我安装了一个包,在这种特定情况下是 ganglia,它创建了一个默认配置文件。然后我想/etc/ganglia/gmond.conf
根据它是收集服务器还是它只是提供信息以及服务器所在的颜色来添加行。所以我制作了一个模板,并在我想要不同信息的地方使用了一些变量。
当我手动删除/etc/ganglia/gmond.conf
并运行 cfagent 时,模板会正确展开并且看起来正确。
当我使用 ganglia 包中的默认配置运行 cfagent 时,它只是将不存在的行附加到默认配置文件的底部。
现在expand_template
我使用的块看起来像:
"/etc/ganglia/gmond.conf"
comment => "Expanding gmond.conf template",
create => "true",
edit_line => expand_template("$(g.inputfiles)/modules/ganglia/templates/gmond.conf");
我猜我想在旁边使用一些东西,edit_line
但我的 google-fu 让我失望了。
我们只使用标准库的 cfengine3 社区版。
在你的承诺中尝试 edit_defaults => empty。这将在代理编辑之前清空文件。关键字empty 是cfengine 标准库中的一个主体。
https://cfengine.com/docs/3.5/reference-promise-types-files.html#edit_defaults