I’ve tried to use Puppet and Ansible to orchestrate large enterprise systems and it’s just no fun to use. All those fragmented files might seem like a good idea and there are some reasonable partitions, however, the challenges are similar to the normalization of DB schema. What’s worse is version control.
The thing is there are so many other ways to do that same that is closer to the OS. Kickstart, Dockerfile, docker compose, clr-installer, cloud-init/cloud-conig and so on. If you have a staticically configured cluster then a static definition is perfectly fine. A partitioned and distributed file only makes it harder research and understand.
You’d almost be better off defining you’re own monolithic schema and then extracting what you need per node. (see docker-compose).