maas) -- 2026-07-21Copy-paste body below. Evidence pointers at the end are repo-internal -- do not paste those into the public report; attach sanitized excerpts instead (agent journal lines, dig outputs -- NO cluster secrets, the 2026-07-21 as-executed log contains SEC-014 material).
Title: maas-agent resolver on rack-only controller SERVFAILs authoritative maas-internal queries on internet-isolated racks (walks root hints; ignores resolv.conf); breaks commissioning cloud-config-url
Affects: MAAS 3.7.2 (snap 3.7/stable, rev 41649), rack-only controller.
Environment: one region+rack controller (site A) and one RACK-ONLY controller (site B) enrolled to it over a routed point-to-point link. The rack site is internet-isolated by design (no outbound DNS/IP reach from the rack or its nodes; the rack reaches the region over the point-to-point link only). Nodes at site B are KVM VMs PXE-booting from the rack.
What happens: commissioning nodes at the rack-only site PXE fine, boot the ephemeral image fine, then cloud-init finds no datasource and the node idles at a login prompt until the 30-minute node_timeout. The commissioning cloud-config-url uses a <subnet>.maas-internal name. Node-facing DNS at a rack-only site is served by the maas-agent resolver (the rack's dhcpd hands out the rack IP as DNS). That resolver answers SERVFAIL to EVERY query -- including names in its own authoritative maas-internal zone -- because it attempts full recursive resolution from the public root hints (unreachable on an isolated rack), and it ignores /etc/resolv.conf. There appears to be no on-disk configuration surface for it (config is Temporal-pushed).
Expected: the agent resolver should answer authoritatively for maas-internal without recursion (it owns the zone), and/or fall back to the host resolver configuration for everything else -- an isolated rack with a healthy region link should be able to commission nodes.
Why co-located deployments never see this: with region+rack on one host, node DNS is served by the region's BIND (authoritative, recursion via forwarders), so the defective path is only exercised by rack-only controllers -- i.e. exactly the multi-site topology racks exist for.
Workaround (proven): dnsmasq on the rack bound to an alias on the node-facing bridge, no-resolv, server=<region BIND IP> (reachable over the rack->region link); point the subnet's dns_servers at the alias with allow_dns=false. Commissioning then completes in minutes. Note: dhcpd still PREPENDS the rack IP to DHCP option 6 despite allow_dns=false, so clients succeed only via SERVFAIL failover to the second server -- possibly a separate template bug worth its own look.
Repo-internal evidence (do NOT paste): the agent journal excerpts and dig outputs are in ~/as-executed/2026-07-21-ops-commissioning-diag.log (0600; contains SEC-014 material -- sanitize before attaching); adjudication chain docs/audit/commissioning-diag-20260721.txt; D-131 context docs/design-decisions.md.