我正在使用 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
. 我已经看到各种博客文章说解决方案是创建一个自定义的“角色”事实,但他们中的大多数通过从代理节点上的文件(例如 from /etc/role
)加载该事实来实现这一点,在我看来这似乎打败了puppet 的要点(我专门使用 puppet,所以每次我希望它具有一些新角色时,我都不必登录每个节点并更改一些配置)。
需要明确的是,我不想编辑代理上的文件来让它工作,我希望这一切都使用主服务器上的配置完成。
我想我可以有类似下面的内容并详尽地列出每个角色作为层次结构中的一个元素,但这似乎不太容易管理。
:hierarchy:
- "fqdn/%{::fqdn}"
- "webserver"
- "appserver"
- "dbserver"
- common
有没有办法解决这个问题?