Skip to content

DNS External Resolution TSG: quick-fix, full admin-surface discoverability, validator table#332

Open
1008covingtonlane wants to merge 2 commits into
Azure:mainfrom
1008covingtonlane:improve-dns-external-dns-resolution-tsg
Open

DNS External Resolution TSG: quick-fix, full admin-surface discoverability, validator table#332
1008covingtonlane wants to merge 2 commits into
Azure:mainfrom
1008covingtonlane:improve-dns-external-dns-resolution-tsg

Conversation

@1008covingtonlane

Copy link
Copy Markdown
Collaborator

Summary

Documentation-completeness improvements to TSG/EnvironmentValidator/Troubleshooting-DNS-External-DNS-Resolution.md. No change to the diagnosis or remediation logic — this makes the common fix faster to reach and rounds out where the failure is (and is not) visible.

Changes

  1. Quick fix (start here) block near the top: auto-identifies the management adapter and gives the exact, reversible Set-DnsClientServerAddress command for the ~90% case (a node pointed at a DNS server that cannot resolve external names), gated by a bold "do not guess DNS server IP addresses" so a literal follower stays safe. Readers who need the full decision tree are pointed to Remediation.
  2. Where it appears across the admin surfaces: a new subsection that explicitly covers all eight admin surfaces — node PowerShell, Windows event logs, the Azure portal Updates tab, and the on-disk HealthCheckResult JSON are shown; Get-ClusterLog, Failover Cluster Manager, and Windows Admin Center (standalone and in-portal) are called out as not evident, so admins do not hunt in the wrong tool.
  3. Validator metadata table under the H1 (Name / Validator-test / Component / Severity) naming Invoke-AzStackHciDNSValidation -Include Test-ExternalDnsResolution.

Why

  • The most common resolution was buried under the discovery queries; surfacing it (safely gated) cuts time-to-fix for the typical case.
  • Stating the not-evident surfaces is as useful as the shown ones — it tells an admin where not to look.
  • The metadata table matches the Environment Validator TSG template.

Testing

  • Markdown renders cleanly; all relative links and in-page anchors resolve.
  • Reviewed for reader safety: the quick-fix records current DNS servers before changing them and is gated on having the correct addresses.

…ility, validator table

- Add a 'Quick fix (start here)' block: auto-identify the management adapter and give the
  exact reversible Set-DnsClientServerAddress command, gated by 'do not guess DNS servers',
  so the ~90% case is unblocked in one screen without reading the full decision tree first.
- Add a 'Where it appears across the admin surfaces' subsection covering all eight admin
  surfaces (node PowerShell, event log, portal, on-disk result JSON = shown; Get-ClusterLog,
  Failover Cluster Manager, WAC standalone, WAC-in-portal = explicitly not evident), so
  admins do not hunt in the wrong place.
- Add a validator metadata table (Name / Validator-test / Component / Severity) under the H1.

No change to the diagnosis or remediation logic; documentation completeness and time-to-fix only.
Copilot AI review requested due to automatic review settings July 15, 2026 13:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Expands the external DNS resolution TSG to improve remediation speed and failure discoverability.

Changes:

  • Adds validator metadata.
  • Introduces a quick-fix PowerShell workflow.
  • Documents visibility across eight administrative surfaces.

Comment on lines +79 to +82
# 1. Identify the management adapter (the up adapter holding the node's management IP)
$mgmt = (Get-NetIPConfiguration | Where-Object { $_.IPv4Address -and $_.NetAdapter.Status -eq 'Up' } |
Select-Object -First 1).InterfaceAlias
"Management adapter: $mgmt"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in b0b170e: the quick-fix now selects the management adapter by the node's known management IP and throws unless exactly one up adapter owns it, so enumeration order can no longer target a storage or other interface.

Get-DnsClientServerAddress -InterfaceAlias $mgmt -AddressFamily IPv4

# 3. Set the correct servers (replace with YOUR deployment's documented management DNS servers)
Set-DnsClientServerAddress -InterfaceAlias $mgmt -ServerAddresses '<dns1>','<dns2>'

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, fixed in b0b170e. The node DNS-client change is now scoped to deployment / add-node only. An already-deployed cluster is explicitly told not to change the node DNS client (Azure Local does not support modifying DNS server settings post-deployment) and is directed to the supported upstream DNS/forwarder fix, with a link to Test-ManagementAdapterReadiness.

Set-DnsClientServerAddress -InterfaceAlias $mgmt -ServerAddresses '<dns1>','<dns2>'

# 4. Confirm external resolution now works on this node
Resolve-DnsName -Name management.azure.com -Type A

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in b0b170e: the verify step now queries every configured server with -Server (matching the validator's behavior), so a working default resolver can no longer mask another server that still returns zero records.

Comment on lines +3 to +7
| | |
|---|---|
| **Name** | `AzStackHci_DNS_ExternalDnsResolution` |
| **Validator / test** | `Invoke-AzStackHciDNSValidation -Include Test-ExternalDnsResolution` |
| **Component** | Environment Validator (DNS) |

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in b0b170e: the metadata block is now the Troubleshoot-Template HTML <table> including Applicable Scenarios (Deployment, AddNode, Update) and Affected Versions (All versions), with Name/Validator retained as additional rows.

…elect, per-server verify, template table

- Quick fix now distinguishes deployment/add-node (node DNS-client change OK) from an
  already-deployed cluster, where changing DNS servers is UNSUPPORTED post-deployment;
  deployed clusters are directed to the supported upstream DNS/forwarder fix.
- Management adapter is selected by the node's known management IP and fails closed unless
  exactly one up adapter owns it (multihomed nodes: no enumeration-order guessing).
- Verify step now queries every configured server with -Server, matching the validator, so a
  working default resolver cannot mask a still-failing server.
- Metadata block converted to the Troubleshoot-Template HTML table with Applicable Scenarios
  and Affected Versions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants