Yesterday, I released a module to manage bind zones using puppet on the puppet forge. It uses a custom type to manage DNS RRs (using dig and nsupdate), and there's also a class for ensuring that a zone is installed, both on masters and on slaves, in a manner that you only need to list the zones, with their master and slave name servers, in a hiera data file.
The main reason why I did it this way is because all the other modules that I looked at would either expect you to write zone files (and then just copy them over), or generate the zone files and use "rndc reload" or similar.
I don't like that way of doing things. BIND does support dynamic updates of zone entries, and it's perfectly possible to query a name server to verify whether a given record actually exists. Additionally, this gave me a good excuse to learn how to write a custom type for puppet.
Today, I was astonished to learn that my module has already had six downloads. In 20 hours, that's fairly impressive, in my opinion.