2

我是 CFEngine 的新手,我正在尝试基于主机名执行一些操作。

例如:所有具有 stable 的主机名应该包含来自 slist 1 的包 所有具有 test 的主机名应该包含来自 slist 2 的包

bundle agent package_lists {
packages:
 stable&dist_class::
    "$(user_packages.package_stable)"
            package_policy => "add",
            package_method => yuck,
            classes => if_repaired("package_changed");
}

我想将其更改为在其中包含带有测试的主机

增加测试就足够了吗?我无法理解 dist_class:: 和 stable 是什么。

-stable&dist_class::

+测试&stable&dist_class::

4

1 回答 1

1

我相信您应该使用 OR 运算符 '||' 而不是 and '&'/'&&' 运算符(假设您正在谈论代表服务器组的类,所有三个类都需要相同的包安装)。使用与号 (&) 或点 (.) 将仅匹配属于所有三个类别的服务器,而不是个人。https://docs.cfengine.com/docs/3.5/manuals-language-concepts-classes.html

如果您只想匹配同时匹配所有三个类定义的服务器,那么&符号是(之一)要走的路。

就我个人而言,我喜欢尽可能保持原子性,因此我实际上会分别为所有三个类定义承诺,或者为公共包创建一个新类,以确保上述服务器属于该类。

于 2015-02-11T10:22:02.237 回答