Summary
In the early private-preview phase, the azurelocal-ztp repository served as a monolithic solution combining both documentation and reusable automation. Now that ZTP is part of the broader Azure Local public initiative, we need to split these concerns: keep the guides here, but move all reusable scripts and tools to the azurelocal-toolkit (the canonical home for shared automation across the organization).
Current State
The repo currently contains production scripts under scripts/common/:
Core Modules
AzureLocalConfig.psm1 — Configuration loading and environment setup
RedfishUtils.psm1 — BMC/Redfish API operations (iDRAC, XCC, iLO abstraction)
Discovery & Inventory
scripts/common/discovery/ — Hardware inventory and BMC discovery
scripts/common/service-principals/ — Azure service principal management
Standalone Tools
scripts/common/utilities/tools/Discover-Servers.ps1 — BMC discovery
scripts/common/utilities/tools/Mount-AzureLocalISO.ps1 — Virtual media mounting
scripts/common/utilities/tools/Set-ServerBootSource.ps1 — UEFI boot order configuration
scripts/common/utilities/tools/Restart-Servers.ps1 — Server reboot orchestration
scripts/common/utilities/tools/Reset-BootSequence.ps1 — UEFI boot variable cleanup (SysPrepClean)
scripts/common/utilities/tools/Reset-BOSSVirtualDisk.ps1 — Dell BOSS card reset for boot loops
scripts/common/utilities/tools/Generate-ConfigFromReference.ps1 — Config generation from template
scripts/common/utilities/tools/Create-AzureResourceGroup.ps1 — Azure resource group setup
scripts/common/utilities/tools/Download-ConfiguratorApp.ps1 — Configurator app download
Entry Point
scripts/Trigger-ZTPDeployment.ps1 — Main orchestration script
Why Move Now
- Reusability: These scripts are not ZTP-specific. The Redfish automation (iDRAC, XCC, iLO) is useful for any Azure Local deployment, not just ZTP.
- Maintenance: Centralized in toolkit = single source of truth for BMC automation patterns
- Discoverability: Operators looking for "how do I automate iDRAC" should find it in toolkit, not hidden in a ZTP doc repo
- Separation of concerns: azurelocal-ztp becomes a guide repo (what to do, step-by-step), while toolkit holds implementation (how to do it, reusable code)
Implementation Plan
Phase 1: Structure in azurelocal-toolkit
- Create
scripts/bmc-automation/ directory in toolkit for Redfish/BMC work
- Move
RedfishUtils.psm1 there
- Move iDRAC/XCC/iLO-specific scripts there
- Create
scripts/discovery/ for hardware inventory tools
- Create
scripts/azure/ for Azure-specific setup (service principals, resource groups)
- Create
scripts/boot-management/ for boot sequence and UEFI manipulation
Phase 2: Update Documentation
- Update all guide files in azurelocal-ztp to reference toolkit scripts:
docs/server-preparation.md → points to toolkit repo for script location
docs/azure-portal-provisioning.md → points to toolkit
docs/automation-pipelines.md → documents how workflows call toolkit
- Add "Prerequisites" section to each guide showing
git clone azurelocal-toolkit
- Update repo-management/automation.md to link to toolkit script docs
Phase 3: Cleanup
- Delete
scripts/ from azurelocal-ztp (except placeholder README if needed for clarity)
- Update
.github/workflows/ to check out both repos as needed
- Verify all documentation builds without broken references
Phase 4: Update azurelocal-toolkit
- Add toolkit README section documenting the BMC automation suite
- Create
scripts/bmc-automation/README.md with supported hardware matrix (iDRAC, XCC, iLO)
- Add toolkit CHANGELOG entry
Acceptance Criteria
Notes
- This maintains the separation: docs stay in ZTP repo, reusable code moves to toolkit
- Allows toolkit to be a complete "everything you need to automate Azure Local" resource
- ZTP becomes the "how-to guide for Simplified machine provisioning" rather than a toolkit repo
- Future contributors looking for iDRAC automation find it in toolkit, not scattered across repos
Summary
In the early private-preview phase, the azurelocal-ztp repository served as a monolithic solution combining both documentation and reusable automation. Now that ZTP is part of the broader Azure Local public initiative, we need to split these concerns: keep the guides here, but move all reusable scripts and tools to the azurelocal-toolkit (the canonical home for shared automation across the organization).
Current State
The repo currently contains production scripts under
scripts/common/:Core Modules
AzureLocalConfig.psm1— Configuration loading and environment setupRedfishUtils.psm1— BMC/Redfish API operations (iDRAC, XCC, iLO abstraction)Discovery & Inventory
scripts/common/discovery/— Hardware inventory and BMC discoveryscripts/common/service-principals/— Azure service principal managementStandalone Tools
scripts/common/utilities/tools/Discover-Servers.ps1— BMC discoveryscripts/common/utilities/tools/Mount-AzureLocalISO.ps1— Virtual media mountingscripts/common/utilities/tools/Set-ServerBootSource.ps1— UEFI boot order configurationscripts/common/utilities/tools/Restart-Servers.ps1— Server reboot orchestrationscripts/common/utilities/tools/Reset-BootSequence.ps1— UEFI boot variable cleanup (SysPrepClean)scripts/common/utilities/tools/Reset-BOSSVirtualDisk.ps1— Dell BOSS card reset for boot loopsscripts/common/utilities/tools/Generate-ConfigFromReference.ps1— Config generation from templatescripts/common/utilities/tools/Create-AzureResourceGroup.ps1— Azure resource group setupscripts/common/utilities/tools/Download-ConfiguratorApp.ps1— Configurator app downloadEntry Point
scripts/Trigger-ZTPDeployment.ps1— Main orchestration scriptWhy Move Now
Implementation Plan
Phase 1: Structure in azurelocal-toolkit
scripts/bmc-automation/directory in toolkit for Redfish/BMC workRedfishUtils.psm1therescripts/discovery/for hardware inventory toolsscripts/azure/for Azure-specific setup (service principals, resource groups)scripts/boot-management/for boot sequence and UEFI manipulationPhase 2: Update Documentation
docs/server-preparation.md→ points to toolkit repo for script locationdocs/azure-portal-provisioning.md→ points to toolkitdocs/automation-pipelines.md→ documents how workflows call toolkitgit clone azurelocal-toolkitPhase 3: Cleanup
scripts/from azurelocal-ztp (except placeholder README if needed for clarity).github/workflows/to check out both repos as neededPhase 4: Update azurelocal-toolkit
scripts/bmc-automation/README.mdwith supported hardware matrix (iDRAC, XCC, iLO)Acceptance Criteria
scripts/directory removed (docs only remain)Notes