I was getting incorrect behavior for hash merges in Hiera for data files placed in modules. Following the "deeper" hash merge example in https://docs.puppetlabs.com/hiera/1/lookup_types.html, I was getting {"bob"=>{"uid"=>1000, "group"=>"deglitch"}, "ash"=>{"uid"=>502, "shell"=>"/bin/zsh", "group"=>"common"}, "jen"=>{"uid"=>503, "shell"=>"/bin/zsh", "group"=>"deglitch"}} for a hash merge between Debian.yaml and common.yaml files placed in a module, and {"bob"=>{"uid"=>1000, "shell"=>"/bin/bash", "group"=>"deglitch"}, "ash"=>{"uid"=>502, "shell"=>"/bin/zsh", "group"=>"common"}, "jen"=>{"uid"=>503, "shell"=>"/bin/zsh", "group"=>"deglitch"}} for a hash merge between Debian.yaml and common.yaml files placed at the Puppet root. Changing a few lines around in module_data_backend.rb fixed the problem.
I was getting incorrect behavior for hash merges in Hiera for data files placed in modules. Following the "deeper" hash merge example in https://docs.puppetlabs.com/hiera/1/lookup_types.html, I was getting
{"bob"=>{"uid"=>1000, "group"=>"deglitch"}, "ash"=>{"uid"=>502, "shell"=>"/bin/zsh", "group"=>"common"}, "jen"=>{"uid"=>503, "shell"=>"/bin/zsh", "group"=>"deglitch"}}
for a hash merge between Debian.yaml and common.yaml files placed in a module, and{"bob"=>{"uid"=>1000, "shell"=>"/bin/bash", "group"=>"deglitch"}, "ash"=>{"uid"=>502, "shell"=>"/bin/zsh", "group"=>"common"}, "jen"=>{"uid"=>503, "shell"=>"/bin/zsh", "group"=>"deglitch"}}
for a hash merge between Debian.yaml and common.yaml files placed at the Puppet root. Changing a few lines around in module_data_backend.rb fixed the problem.