Task 04: Verify Arc Registration and Connectivity
Status: Production-ready
Overview
After Arc registration and bootstrap complete, verify that all cluster nodes are properly registered, connected, and ready for Azure Local cluster deployment.
Prerequisites
| Requirement | Details |
|---|---|
| Arc registration | Completed via Task 02 |
| Bootstrap status | Succeeded on all nodes (Task 03) |
| Azure modules | Az.Accounts, Az.ConnectedMachine |
| Node access | WinRM to all cluster nodes |
Variables from variables.yml
| Path | Type | Description |
|---|---|---|
compute.cluster_nodes[].management_ip | string | Node management IPs |
compute.azure_local.arc_resource_group | string | Resource group for Azure verification |
azure_platform.subscriptions.lab.id | string | Subscription ID |
Verification
- Direct (per node)
- Orchestrated (all nodes)
Run on each cluster node to verify the local Arc agent:
# Check Arc agent service
Get-Service himds | Format-Table Name, Status, StartType
# Show Arc agent registration details
& "$env:ProgramFiles\AzureConnectedMachineAgent\azcmagent.exe" show
# Test endpoint connectivity through Arc Gateway
& "$env:ProgramFiles\AzureConnectedMachineAgent\azcmagent.exe" check
Script: Confirm-ArcRegistration.ps1 — see azl-toolkit repo → scripts/deploy/.../task-04-.../powershell/
Run from the management server. Reads node IPs from variables.yml and verifies Arc agent + Azure resource status across all nodes:
For production deployments, use Invoke-ArcVerification-Orchestrated.ps1 from the azl-toolkit repo. Supports -WhatIf, -TargetNode, -SkipAzureCheck, -Credential, logging, and parallel execution with detailed pass/fail summary per check per node.
$ConfigPath = ".\config\variables.yml"
$cfg = Get-Content $ConfigPath
$ServerList = ($cfg | Select-String 'management_ip:\s+"?([^"\s]+)' -AllMatches).Matches |
ForEach-Object { $_.Groups[1].Value }
$ResourceGroup = ($cfg | Select-String 'resource_group:\s+"?([^"\s]+)').Matches[0].Groups[1].Value
$SubscriptionId = ($cfg | Select-String 'subscription_id:\s+"?([^"\s]+)').Matches[0].Groups[1].Value
# Check local Arc agent on every node
Invoke-Command -ComputerName $ServerList -ScriptBlock {
$svc = Get-Service himds -ErrorAction SilentlyContinue
$agent = & "$env:ProgramFiles\AzureConnectedMachineAgent\azcmagent.exe" show 2>&1
$status = ($agent | Select-String 'Agent Status\s*:\s*(.+)').Matches[0].Groups[1].Value
[PSCustomObject]@{ Service = $svc.Status; AgentStatus = $status }
} | Sort-Object PSComputerName | Format-Table PSComputerName, Service, AgentStatus
# Check Azure-side resource status
Connect-AzAccount -SubscriptionId $SubscriptionId | Out-Null
Get-AzConnectedMachine -ResourceGroupName $ResourceGroup |
Select-Object Name, Status, AgentVersion, LastStatusChange |
Format-Table -AutoSize
Scripts: See azl-toolkit repo → scripts/deploy/.../task-04-.../powershell/
Confirm-ArcRegistration-Orchestrated.ps1— Quick inline reference scriptInvoke-ArcVerification-Orchestrated.ps1— Standards-compliant script with logging,-WhatIf,-SkipAzureCheck, parallel execution, and detailed pass/fail summary
Expected Results
| Check | Expected |
|---|---|
himds service | Running on every node |
azcmagent show → Agent Status | Connected |
azcmagent check | All endpoints reachable |
Get-AzConnectedMachine → Status | Connected for every node |
| Arc Gateway | Resource ID populated (if using gateway) |
Troubleshooting
| Symptom | Resolution |
|---|---|
himds service stopped | Start-Service himds — if it fails, check C:\ProgramData\AzureConnectedMachineAgent\Log\himds.log |
azcmagent show → Disconnected | Run azcmagent connect again or check network/proxy |
azcmagent check fails endpoints | Verify firewall rules allow *.guestconfiguration.azure.com, *.his.arc.azure.com |
Node missing from Get-AzConnectedMachine | Re-run Task 02 registration for that node |
| Extensions not provisioned | Extensions are deployed during cluster deployment — not required at this stage |
Azure Portal Verification
For manual confirmation:
- Navigate to Azure Arc → Machines in the Azure Portal
- Filter by resource group from
variables.yml - Confirm all nodes show Connected status
- Click each node → Properties → verify subscription, resource group, and region
- If using Arc Gateway: Networking → Gateway configuration → verify gateway resource ID
Navigation: ← Task 03: Monitor Bootstrap | ↑ Phase 04 Index | → Phase 05: Cluster Deployment