|
Caution
|
Pre-Release Solution — This project is under active development and has not been officially released. It should be considered experimental. Scripts, configuration formats, and module interfaces may change without notice. Use in production environments is not recommended at this time. |
Comprehensive load testing framework for Azure Local (formerly Azure Stack HCI) clusters. Validates storage, network, and compute performance before production workloads are migrated or deployed.
Azure Local Load Tools provides an automated, config-driven pipeline for running load tests against Azure Local clusters using multiple industry-standard tools:
| Tool | Type | Status | Description |
|---|---|---|---|
VMFleet |
Storage I/O |
✅ Implemented |
Fleet VMs running DiskSpd on S2D clusters |
fio |
Storage I/O |
🔲 Planned |
Flexible I/O tester for Linux VMs |
iPerf3 |
Network |
🔲 Planned |
Network throughput and latency testing |
HammerDB |
Database |
🔲 Planned |
TPC-C/TPC-H benchmarks against SQL Server |
stress-ng |
Compute |
🔲 Planned |
CPU, memory, and I/O stress testing |
-
Config-driven: Master YAML config with tagged variables → per-solution JSON configs
-
Parameterized: Three-level override chain (explicit param > solution config > master default)
-
Credential management: Azure Key Vault, interactive, or parameter-based — never hardcoded
-
State tracking: Checkpoint-based resume with JSON state files and mutex locking
-
Structured logging: JSON-lines per component with correlation IDs
-
Monitoring: Local PerfMon collection + optional Azure Monitor push
-
Multi-format reports: PDF (asciidoctor-pdf), DOCX (Pandoc), XLSX (ImportExcel)
-
CI/CD ready: GitHub Actions primary, Azure DevOps + GitLab CI placeholders
# 1. Clone the repository
git clone https://github.com/AzureLocal/azurelocal-loadtools.git
cd azurelocal-loadtools
# 2. Install PowerShell prerequisites
Install-Module powershell-yaml -Force
Install-Module ImportExcel -Force
Install-Module VMFleet -Force
# 3. Copy and edit environment configuration
cp config/variables.example.yml config/variables/variables.yml
# Edit variables.yml with your cluster details
# 4. Initialize environment
.\common\helpers\Initialize-Environment.ps1 `
-ClusterConfigPath config\variables\variables.yml `
-Solution VMFleet
# 5. Run the full VMFleet pipeline
.\tools\vmfleet\Invoke-VMFleetPipeline.ps1 `
-ClusterConfigPath config\variables\variables.yml `
-ProfilePath tools\vmfleet\config\profiles\general.yml `
-ReportFormats @('PDF', 'XLSX')azurelocal-loadtools/
├── common/ # Shared modules, helpers, ansible roles, bicep
│ ├── modules/ # 6 core PowerShell modules
│ ├── helpers/ # Bootstrap & common functions
│ ├── ansible/ # Roles for Linux tool deployment
│ └── bicep/ # Shared Bicep templates (Key Vault)
├── config/ # Global configuration
│ └── variables/ # Master config + schema
├── docs/ # MkDocs documentation
├── tools/ # One directory per load tool
│ ├── vmfleet/ # Full implementation
│ │ ├── scripts/ # 7 pipeline scripts
│ │ ├── monitoring/ # 5 metric collection scripts
│ │ ├── infrastructure/ # Bicep templates (monitoring)
│ │ ├── config/profiles/ # Workload profiles
│ │ ├── logs/ # Runtime logs
│ │ └── reports/templates/ # Report templates
│ ├── fio/ # Placeholder
│ ├── iperf/ # Placeholder
│ ├── hammerdb/ # Placeholder
│ └── stress-ng/ # Placeholder
├── examples/ # Sample result files
├── logs/ # Pipeline-level logs
├── state/ # Run state files
├── tests/ # Pester tests & PSScriptAnalyzer
└── .github/workflows/ # GitHub Actions workflowsFull documentation is available in AsciiDoc format at docs/main.adoc. Build PDF with:
asciidoctor-pdf -a pdf-theme=docs/themes/azurelocal-theme.yml docs/main.adoc-
PowerShell 7.2+
-
powershell-yamlmodule -
VMFleetmodule (for VMFleet solution) -
Azure Local cluster with WinRM access
-
Optional:
ImportExcel,Az.KeyVault,Az.Monitor,asciidoctor-pdf,pandoc
This project is licensed under the MIT License — see LICENSE for details.