Yeah I thought that hash merging would be a good way to avoid data duplication but the closer i look it seems like by far the majority of our config is environment specific (secrets, hostnames, etc) and the rest is boilerplate that will probably not change.  I think what it comes down to is being able to grok the entire lms config hash without opening up multiple yaml files and understanding the precedence or how the variable files are ordered in the playbooks.