Como posso dividir minha configuração hiera por função?

Estou usando o hiera para atribuir classes comowebserver oudbserver para os meus nós. owebserver A classe inclui apenas o apache e define algumas configurações (por exemplo, porta). Obviamente, não quero replicar essa configuração para todos os nós, então coloquei em common.yaml. No entanto, meu common.yaml está ficando grande, então eu quero dividi-lo. Eu gostaria de ter um arquivo contendo a configuração para owebserver papel, outro para odbserver papel etc. Estou imaginando meu hiera.yaml parecido com isto:

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

Onde orole pasta conteria arquivos comowebserver.yaml, appserver.yaml, dbserver.yaml. Vi várias postagens no blog dizendo que a solução é criar um fato de 'função' personalizado, mas a maioria deles consegue isso carregando esse fato de um arquivo no nó do agente (por exemplo, de/etc/role), que para mim parece derrotar o ponto do fantoche (eu uso o fantoche especificamente para não precisar fazer login em cada nó e alterar algumas configurações toda vez que quero que ele tenha uma nova função).

Para deixar claro, não quero editar arquivos no agente para que isso funcione, quero que tudo seja feito usando a configuração que está no mestre.

Eu acho que eu poderia ter algo como o seguinte e listar exaustivamente todos os papéis como um elemento na hierarquia, mas isso não parece tão gerenciável.

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

Existe alguma maneira de resolver isto?

questionAnswers(2)

yourAnswerToTheQuestion