facter: настройка специфичных для модуля пользовательских фактов?

1445
André Fernandes

Я настраиваю существующую установку марионеток (с помощью facter) и думаю, что столкнулась с проблемой понимания контекста пользовательских фактов.

У меня есть несколько модулей, которые отображаются исключительно на разные классы хостов в файле node.pp. То, чего я хотел бы добиться, - это ограничить пользовательские факты ограничением модуля, например module1, выполняются custom_fact_1узлы in, а узлы in module2будут только выполняться custom_fact_2.

Согласно документам facter / puppet, пользовательские факты попадают в <module-name>/lib/facterкаталог и привязываются к этому модулю.

Я уже собрал несколько пользовательских фактов, добавив сценарии ruby ​​в каталог одного модуля lib/facter, но, как ни странно, они не ограничиваются хостами, которым назначен модуль. Происходит то, что все пользовательские факты запускаются для всех хостов (даже тех, которые не имеют никакого отношения к этому модулю), что не совсем то, что я намеревался.

Я неправильно понял документацию? Возможно ли такое сопоставление модулей фактов?

Примечание : я достиг аналогичного поведения, используя confineинструкции в пользовательских сценариях фактов, но это идет вразрез с намеченной целью, так как я хотел бы связать пользовательские факты с самими модулями и не иметь отображения в сценариях.

2

3 ответа на вопрос

-1
Barry

Facter не подходит для этого. Было бы намного проще настраивать пользовательские функции для каждого модуля или использовать ENC, например, hiera.

-1
Rasputnik

Это ожидаемое поведение, да, если у вас включена pluginsync, то lib / facter из всех модулей попадает на все узлы.

-1
liquidki

Чтобы ответить на ваш вопрос как можно более прямо, большинство установок, которые я видел, используют группы определенного типа для классификации систем. Часто эти группы отображаются довольно близко к модулям, и вы можете использовать эти групповые факты, чтобы ограничить факты этими системами.

Что вы пытаетесь сделать с этими фактами? Как уже упоминалось, типы или функции могут также дать вам то, что вам нужно, не будучи доступными везде. Было бы полезно больше информации о том, что вы делаете