After few months of hard work with new approach to infrastructure deployment I can say that the choice of using Puppet was very good. We reached our goals like:
- master-agent and masterless deployment,
- model our physical infrastructure into hiera,
- store facts, reports, exported resources, catalogs for each machine into PuppetDB,
- easily split common puppet classes/resources to public repos and specific resources e.g SSL, apps configs into private one,
- TDD using serverspec. Continuous integration with Travis
- and many more...
If you are interested in puppet please have a look on open source set of puppet modules with my huge contribution at Github