Как я могу разделить мой конфигурационный файл по роли?

Я использую Hiera для назначения классов, таких какwebserver или жеdbserver к моим узлам.webserver Класс просто включает в себя Apache и устанавливает некоторые настройки на него (например, порт). Очевидно, я не хочу копировать этот конфиг для каждого узла, поэтому я поместил его в common.yaml. Однако мой common.yaml становится большим, поэтому я хочу разделить его. Я хотел бы иметь один файл, содержащий конфигурацию дляwebserver роль, другая дляdbserver роль и т. д. Я представляю, как мой hiera.yaml выглядит примерно так:

:hierarchy:
  - "fqdn/%{::fqdn}"
  - "role/%{ROLE}"
  - common

Гдеrole папка будет содержать файлы, такие какwebserver.yaml, appserver.yaml, dbserver.yaml, Я видел различные публикации в блогах, в которых говорилось, что решение состоит в том, чтобы создать пользовательский факт «роли», но большинство из них достигают этого, загружая этот факт из файла на узле агента (например, из/etc/role), что, по-моему, лишает смысла марионетку (я использую марионетку специально, поэтому мне не нужно входить в каждый узел и изменять некоторые конфигурации каждый раз, когда я хочу, чтобы у него была какая-то новая роль).

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

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

:hierarchy:
  - "fqdn/%{::fqdn}"
  - "webserver"
  - "appserver"
  - "dbserver"
  - common

Есть ли способ решить это?

Ответы на вопрос(2)

Ваш ответ на вопрос