Task 01: Visual Hardware Inspection
DOCUMENT CATEGORY: Runbook SCOPE: Physical infrastructure verification PURPOSE: Verify all hardware is properly installed before network validation MASTER REFERENCE: Dell AX Installation Guide
Status: Active Estimated Time: 30 minutes
Overview
Perform visual inspection of all physical infrastructure to verify installation matches the Low-Level Design (LLD) specifications before proceeding with network validation.
Performed by: On-site technician or remote validation via photos/video
Variables from variables.yml
| Variable Path | Type | Description |
|---|---|---|
compute.nodes[] | Array | Node hostnames, management IPs, iDRAC IPs, MAC addresses |
compute.nodes[].hostname | String | Server hostname for label verification |
compute.nodes[].idrac_ip | String | iDRAC IP address for remote management |
networking.network_devices.opengear | Object | OpenGear console server hostname, IP, model, port mappings |
networking.network_devices.switch_primary | Object | Primary ToR switch hostname, IP, model |
networking.network_devices.switch_secondary | Object | Secondary ToR switch hostname, IP, model |
Execution Options
- On-Site Inspection
- Orchestrated Script (Mgmt Server)
- Standalone Script
Walk the data center and verify each checklist item below. Take photos of:
- Overall rack layout
- Server front panels (LED status)
- Cable routing and management
- OpenGear installation
Photo storage location: artifacts/phase-02-enterprise-readiness/hardware-photos/
When to use: Managing from a domain-joined management server — config-driven via variables.yml
Script
Primary: scripts/validation/03-onprem-readiness/phase-02-enterprise-readiness/task-01-hardware-inspection/powershell/Test-HardwareInspection.ps1
Alternatives:
| Variant | Path |
|---|---|
| Azure CLI | scripts/validation/03-onprem-readiness/phase-02-enterprise-readiness/task-01-hardware-inspection/azure-cli/Test-HardwareInspection.ps1 |
| Bash | scripts/validation/03-onprem-readiness/phase-02-enterprise-readiness/task-01-hardware-inspection/bash/test-hardware-inspection.sh |
Code
# ============================================================================
# Script: Test-HardwareInspection.ps1
# Execution: Run FROM management server — reads variables.yml
# Prerequisites: powershell-yaml module, network access to OOB VLAN
# ============================================================================
param(
[Parameter(Mandatory = $false)]
[string]$ConfigPath
)
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
if ($ConfigPath) {
$ConfigFile = $ConfigPath
} else {
$ConfigFile = Join-Path $ScriptDir "..\..\..\..\config\variables.yml"
}
if (!(Test-Path $ConfigFile)) { throw "variables.yml not found at $ConfigFile" }
Import-Module powershell-yaml -ErrorAction Stop
$config = ConvertFrom-Yaml (Get-Content -Path $ConfigFile -Raw) -Ordered
$nodes = $config["nodes"]
Write-Host "[1/3] Testing iDRAC connectivity..." -ForegroundColor Cyan
$results = @()
foreach ($key in $nodes.Keys) {
$node = $nodes[$key]
$hostname = $node["hostname"]
$idracIp = $node["idrac_ip"]
$test = Test-NetConnection -ComputerName $idracIp -Port 443 -WarningAction SilentlyContinue
$status = if ($test.TcpTestSucceeded) { "Reachable" } else { "UNREACHABLE" }
$color = if ($test.TcpTestSucceeded) { "Green" } else { "Red" }
Write-Host " $hostname ($idracIp): $status" -ForegroundColor $color
$results += [PSCustomObject]@{ Node = $hostname; iDRAC = $idracIp; Status = $status }
}
Write-Host "
[2/3] Testing OpenGear connectivity..." -ForegroundColor Cyan
$ogIp = $config["network_devices"]["opengear"]["ip"]
$ogHost = $config["network_devices"]["opengear"]["hostname"]
$ogTest = Test-NetConnection -ComputerName $ogIp -Port 443 -WarningAction SilentlyContinue
$ogStatus = if ($ogTest.TcpTestSucceeded) { "Reachable" } else { "UNREACHABLE" }
$ogColor = if ($ogTest.TcpTestSucceeded) { "Green" } else { "Red" }
Write-Host " $ogHost ($ogIp): $ogStatus" -ForegroundColor $ogColor
Write-Host "
[3/3] Summary" -ForegroundColor Cyan
$results | Format-Table -AutoSize
When to use: Quick verification without variables.yml — manually set variables in the configuration block.
Script
Primary: scripts/validation/03-onprem-readiness/phase-02-enterprise-readiness/task-01-hardware-inspection/powershell/Test-HardwareInspection-Standalone.ps1
Code
#region CONFIGURATION
$iDRACs = @(
@{ Hostname = "node01"; IP = "10.245.64.11" },
@{ Hostname = "node02"; IP = "10.245.64.12" }
)
$OpenGearIP = "10.245.64.5"
$OpenGearName = "og01"
#endregion
Write-Host "=== iDRAC Connectivity ===" -ForegroundColor Cyan
foreach ($node in $iDRACs) {
$test = Test-NetConnection -ComputerName $node.IP -Port 443 -WarningAction SilentlyContinue
$status = if ($test.TcpTestSucceeded) { "Reachable" } else { "UNREACHABLE" }
$color = if ($test.TcpTestSucceeded) { "Green" } else { "Red" }
Write-Host " $($node.Hostname) ($($node.IP)): $status" -ForegroundColor $color
}
Write-Host "
=== OpenGear Connectivity ===" -ForegroundColor Cyan
$ogTest = Test-NetConnection -ComputerName $OpenGearIP -Port 443 -WarningAction SilentlyContinue
$ogStatus = if ($ogTest.TcpTestSucceeded) { "Reachable" } else { "UNREACHABLE" }
Write-Host " $OpenGearName ($OpenGearIP): $ogStatus" -ForegroundColor $(if ($ogTest.TcpTestSucceeded) {"Green"} else {"Red"})
Server Installation Checklist
| Check | Description | Status |
|---|---|---|
| Rack position | Servers installed in correct rack units per LLD | ☐ |
| Power connections | Dual PSU connected to redundant PDUs | ☐ |
| Power status | All servers powered on, no amber LEDs | ☐ |
| Front panel | LCD/LED status indicators normal | ☐ |
| Cable management | Cables routed through management arms | ☐ |
Network Cabling Checklist
Management Network
| Node | Port | Destination | Cable Type | Status |
|---|---|---|---|---|
| Node 1 | iDRAC | OpenGear sw0p1 | Cat6 | ☐ |
| Node 2 | iDRAC | OpenGear sw0p2 | Cat6 | ☐ |
| Node 3 | iDRAC | OpenGear sw0p3 | Cat6 | ☐ |
| Node 4 | iDRAC | OpenGear sw0p4 | Cat6 | ☐ |
Storage/Compute Network (25/100GbE)
| Node | Port 1 | Port 2 | Cable Type | Status |
|---|---|---|---|---|
| Node 1 | TOR1 Eth1/1/1 | TOR2 Eth1/1/1 | DAC/AOC | ☐ |
| Node 2 | TOR1 Eth1/1/2 | TOR2 Eth1/1/2 | DAC/AOC | ☐ |
| Node 3 | TOR1 Eth1/1/3 | TOR2 Eth1/1/3 | DAC/AOC | ☐ |
| Node 4 | TOR1 Eth1/1/4 | TOR2 Eth1/1/4 | DAC/AOC | ☐ |
VLT Peer Link (TOR1 ↔ TOR2)
| Connection | Ports | Cable Type | Status |
|---|---|---|---|
| VLTi Link 1 | Eth1/1/11 ↔ Eth1/1/11 | DAC/AOC | ☐ |
| VLTi Link 2 | Eth1/1/12 ↔ Eth1/1/12 | DAC/AOC | ☐ |
OpenGear Console Server Checklist
| Check | Description | Status |
|---|---|---|
| Rack position | OpenGear installed per LLD | ☐ |
| Power | Power LED solid green | ☐ |
| NET1 | Connected to internet-routable network | ☐ |
| NET2 | Connected to OOB management network | ☐ |
| Serial ports | Console cables connected to switches | ☐ |
| Integrated switch | iDRAC cables connected to sw0p1-sw0p4 | ☐ |
Top-of-Rack Switch Checklist
| Check | TOR1 | TOR2 | Status |
|---|---|---|---|
| Power | Dual PSU connected | Dual PSU connected | ☐ |
| Status LEDs | Normal operation | Normal operation | ☐ |
| Console cable | Connected to OpenGear | Connected to OpenGear | ☐ |
| Management port | Connected to mgmt network | Connected to mgmt network | ☐ |
| Uplinks | Connected to core/distribution | Connected to core/distribution | ☐ |
Issues Log
Document any discrepancies found during inspection:
| Issue | Location | Severity | Resolution Required |
|---|---|---|---|
Acceptance Criteria
- All checklist items verified and documented
- Photos uploaded to deployment folder:
artifacts/phase-02-enterprise-readiness/hardware-photos/ - Any discrepancies logged in Issues table
Troubleshooting
| Issue | Possible Cause | Resolution |
|---|---|---|
| Server not powering on | PDU circuit breaker tripped or power cable loose | Verify PDU status lights, reseat power cables, check circuit allocation |
| iDRAC not accessible | Incorrect IP assignment or VLAN tagging | Verify iDRAC IP matches LLD, confirm OOB VLAN is trunked to management switch |
| Missing serial port labels | Cable labels not applied during rack installation | Cross-reference OpenGear port mapping document and re-label |
| Network link LED not lit | SFP+ module not seated or wrong cable type | Reseat SFP+, verify DAC cable type matches switch port requirements |
Validation
All checks passed?
- ☐ YES - Proceed to Task 2: Network Service Verification
- ☐ NO - Document issues and coordinate with site team for resolution before proceeding
Next Steps
| Step Complete? | Next Action |
|---|---|
| ✅ Yes | Proceed to Task 2: Network Service Verification |
| ❌ No | Resolve physical infrastructure issues before continuing |
Navigation
| ← Phase 02: Enterprise Readiness | ↑ Part 3: On-Premises Readiness | Task 02: Network Service Verification → |
Version Control
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-01-31 | Azure Local Cloud Azure Local Cloudnology | Initial document |
| 1.1 | 2026-03-03 | Azure Local Cloud Azure Local Cloudnology | Standardized runbook format |
End of Task