I was looking at how to switch from ISC DHCPd to Kea and the config is really annoying. They chose to use JSON, which is not pleasant to edit and they had to make their own tweaked JSON version to handle comments. Thing is no tool int he world supports that, neither to read, generate or validate. As people found that insufficient then they created a user-context free-form structure, but that's not the same as adding a comment at a specific place. They found this handy to handle plugins config, but then all plugins config and free-form parameters are mixed and cannot be validated.
I was wondering if we could generate the JSON structure based on a YAML one, or if using a template would be better. The former should work but as Ansible is not a programming language and the config is complex that might prove complicated. As for the former we need lists and dicts as role params and that means generating JSON structs and using them as variable in the template; that sounds fragile.
I decided to have a look around and dnsmasq or coredhcp could be an alternative.
coredhcp looks fine for our needs but some things are worrisome:
https://github.com/coredhcp/coredhcp/issues/168 -> does not seem well maintained, not a lot of git activity
https://github.com/coredhcp/coredhcp/issues/200 -> I need this because the WIFI network and wired networks are separated so I need at the very least 2 subnets/ranges
https://github.com/coredhcp/coredhcp/issues/182 -> big leak
so it seems it's not ready yet.
dnsmasq seem to have the needed features and has been around for quite some time. We'll need to use tagging to be able to assign parameters to specific ranges; that should work with Ansible templating.
I've not ruled out Kea entirely, coredhcp is not ready, dnsmasq should be ok. Maybe there's another one I missed out there.
This is just to add information to make an informed choice, nothing's decided, we still have time.