Best way to make hosts reachable via hostname without DHCP

Hello, in my current setup I can access hosts with hostname.lan when they get their IP via DHCP.
I also have some hosts, however, that I'd like them to request their own static IP, without a dhcp lease. These hosts I can't access via hostname.lan.

I did try to add these in /etc/config/dhcp, even though they don't use it, but it didn't make a difference.

In case it matters, I use unbound + odhcp on the router, plus pihole on another machine that does dns for lan.

The way I see it I have 4 options:

  1. Figure out how these pcs can be made available via their hostname automatically when they request for their own static IP. (Ideal solution).
  2. Manually add entries in pihole for these. This works, but has a manual step.
  3. Switch to dhcp for everything. This works as well, but it has a manual step if I want the IPs to be static, which I'd like.
    3a. Rely entirely on dhcp+dns without static leases. This is 100% automatic, the only issue is that sometimes a host is not immediately reachable via its hostname when it boots/after a reboot, and this is a bit of a deal breaker. So unless this can be fixed this is not a viable option.

If nothing of this is possible and there are no other ideas, I'll probably resort to manually adding them to pihole or dhcp, having some manual work is not the end of the world, I'd just like to keep it as minimal as possible.

For some extra context I'm setting up a small proxmox cluster and using ansible to set up vms/lxcs. Defining the machines' ip there is easy. I'd like the IPs to be static for services to be able to talk to each other without needing dns, and I'd like the hostnames to be reachable since they are obviously easier to remember when I need to access a machine via ssh/whatever.

PS. Going IPv6 first on my local lan might give more reliable access via hostnames? I'm honestly not too sure. I've done some IPv6 related things but not too much, and when I did I used DHCPv6 + DUIDs to give static suffixes, so this requires manual work too.

Alt 3 is easiet for you.

The alternative is to manually make a leases file for dnsmasq.

But why give yourself the never ending job of keeping all these configs of static IP updated instead of using DHCP.

Once they are set once there is not much that has to be done, so I don't think there will be much of an overhead.

Do you mean without making them static at all? Then it's the issue of hostname not resolving sometimes that ip works. Not a big deal for me, but some services won't be too happy about it. This is essentially my option 3/3a if I understand correctly

I mean normally you control the whole network centrally from the router which is dnsmasq for OpenWrt.
Also static leases are controlled in the server and not at the clients.
And then the clients get their information through the dhcp request and the dhcp server know what everyone is named and where everyone is located.