Как я могу разделить мой конфигурационный файл по роли?
Я использую 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
Есть ли способ решить это?