Skip to content

AzureLocal/azurelocal-loadtools

Repository files navigation

Azure Local Load Tools

Platform: Azure Local PowerShell 7.2+ License: MIT Status: Pre-Release

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.

Overview

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

Key Features

  • 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

Quick Start

# 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')

Project Structure

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 workflows

Documentation

Full 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

Prerequisites

  • PowerShell 7.2+

  • powershell-yaml module

  • VMFleet module (for VMFleet solution)

  • Azure Local cluster with WinRM access

  • Optional: ImportExcel, Az.KeyVault, Az.Monitor, asciidoctor-pdf, pandoc

License

This project is licensed under the MIT License — see LICENSE for details.

About

Load testing and benchmarking framework for Azure Local — FIO, HammerDB, iPerf, stress-ng, and VMFleet

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors