Understanding large config management (puppet/chef/ansible) git repos
This question is concerning methodology and approach in handling a git repo, especially related to configuration management like puppet/chef/ansible.
Imagine you take up a job as a "devops" engineer somewhere and you are given ownership of a large Puppet config management codebase which is in a git repo. The codebase maintains the whole infrastructure of the company. How would you go about understanding the codebase? (It is assumed you are well versed in Puppet)
Yes, I know you can set up vagrant and test the code there but the codebase could be huge with several hundred modules making it hard and time consuming. I could also work my way down by starting from the
nodes -> roles -> profiles -> modules. Another way I would approach it would be going through the git log right from the very first commit.