CFEngine соответствует имени хоста в агенте комплектации

Я новичок в CFEngine, и я пытаюсь выполнить некоторые действия на основе имен хостов.

Например: все имена хостов, имеющие стабильный, должны содержать пакеты из списка 1, все имена хостов, у которых есть тест, должны содержать пакеты из списка 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::

+test& stable & dist_class::

1 ответ

Решение

Я считаю, что вы должны использовать оператор ИЛИ '||' а не операторы '&'/'&&' (если вы говорите о классах, представляющих группы серверов, для которых все три класса требуют одинаковой установки пакета). Использование амперсанда (&) или точки (.) Будет соответствовать только серверам, принадлежащим всем трем классам, а не отдельным лицам. https://docs.cfengine.com/docs/3.5/manuals-language-concepts-classes.html

Если вы хотите сопоставлять только серверы, которые соответствуют всем трем определениям классов, тогда амперсанды - это один из способов.

Лично я хотел бы держать вещи как можно более атомарными, поэтому я бы на самом деле определял обещания для всех трех классов отдельно или создавал новый класс для общих пакетов, гарантируя, что вышеуказанные серверы принадлежат этому классу.

Другие вопросы по тегам