Operator Inputs: Environment File and OEM SBE
DOCUMENT CATEGORY: Runbook SCOPE: Operator inputs for the azurelocal-ztp zero-touch automation PURPOSE: Fill in the environment file and download the OEM SBE MASTER REFERENCE: azurelocal-ztp repository
Status: Active
Overview
The operator supplies two inputs. Everything else is automated, with a gate at each step.
- The environment file, a YAML file that describes the machines, the network, the Azure target and the ZTP settings.
- The OEM SBE folder, the Solution Builder Extension files that you download from the hardware vendor.
Invoke-ZtpEnvironment.ps1 validates the environment file, then generates the JSON inputs that the stage scripts need. Those generated files are specific to your environment. Don't copy them between environments or commit them.
The environment file
The file is passed with -InfrastructureFile. The scripts read the keys below. The tables list only the keys the ZTP scripts use. Your environment file can carry more keys for other tools.
If a tools\Validate-Infrastructure.ps1 script sits next to the environment file's folder, Invoke-ZtpEnvironment.ps1 runs it first and stops if it fails. If the script is absent, the run warns that the file wasn't checked. Check the file yourself in that case.
Example
All values are placeholders. Addresses use the documentation ranges from RFC 5737.
azure_identity:
azure_tenant_id: "<tenant-id>"
azure_resources:
location: eastus
site:
name: "<site display name>"
hardware:
vendor: Dell
model: AX-760
cluster_nodes:
- name: node-01
service_tag: "<service-tag-1>"
idrac_ip: 192.0.2.11
ip_address: 192.0.2.21
mac_address: "AA:BB:CC:DD:EE:01"
- name: node-02
service_tag: "<service-tag-2>"
idrac_ip: 192.0.2.12
ip_address: 192.0.2.22
mac_address: "AA:BB:CC:DD:EE:02"
network_intents:
management:
subnet: 192.0.2.0/24
gateway: 192.0.2.1
dns_servers:
- 192.0.2.53
onprem:
ntp_servers:
- 192.0.2.123
credentials:
local_admin_username: "<deployment-admin-user>"
local_admin_password_secret: "keyvault://<vault-name>/<secret-name>"
ztp:
subscription_id: "<subscription-id>"
resource_group: "<resource-group>"
site_name: "<site-name>"
time_zone: UTC
provisioning_iso: latest
os_version: "<solution-version-or-latest>"
share_host_adapter: "<adapter-name-the-BMCs-reach>"
share_name: ztp-virtual-usb
azl_rp_object_id: "<azure-local-resource-provider-object-id>"
tags:
purpose: ztp
admin_secret:
subscription_id: "<vault-subscription-id>"
vault: "<vault-name>"
resource_group: "<vault-resource-group>"
username: "<provisioning-admin-user>"
name: "<secret-name>"
bmc_secret:
vault: "<vault-name>"
username_name: "<secret-name-for-bmc-user>"
password_name: "<secret-name-for-bmc-password>"
node_preparation:
sbe_bundle: 'D:\sbe\<oem>'
Machines and network
| Key | What it is |
|---|---|
cluster_nodes[].name | The node name. Also the name of its provisioned machine in Azure. |
cluster_nodes[].service_tag | The machine serial or service tag. It must match the serial in the voucher. |
cluster_nodes[].idrac_ip | The BMC address. |
cluster_nodes[].ip_address | The static management address that the Prepare stage sets. |
cluster_nodes[].mac_address | The MAC of the management adapter. The Prepare stage puts the static address on the adapter with this MAC and fails if no adapter has it. |
network_intents.management.subnet | Management subnet in CIDR form. The prefix length is read from it. |
network_intents.management.gateway | The one default gateway. |
network_intents.management.dns_servers | DNS servers set on the node. |
onprem.ntp_servers | Time servers set on the node. |
hardware.vendor | The OEM, such as Dell. It selects the OEM definition for SBE discovery and BMC log signals. |
hardware.model | The model, such as AX-760. The SBE selection uses it with the dash removed. |
Azure target and identity
| Key | What it is |
|---|---|
azure_identity.azure_tenant_id | Tenant for sign-in and for the Azure context. |
azure_resources.location | Region. The preview supports East US only. |
site.name | Display name of the site. |
ztp.subscription_id | Subscription of the site and the machines. |
ztp.resource_group | Resource group of the site and the machines. The run creates it if it doesn't exist. |
ztp.site_name | Name of the Azure Local site resource. |
ztp.time_zone | Site time zone. |
ztp.tags | Tags for the resource group and for the resources the deployment creates. |
ztp.azl_rp_object_id | Object ID of the Azure Local resource provider in your tenant. If you leave it out, the script looks it up, which needs directory read rights that a managed identity doesn't have by default. |
ZTP settings
| Key | What it is |
|---|---|
ztp.provisioning_iso | Which maintenance ISO to resolve: latest, a train such as 2610, a build, or a Microsoft download URL. |
ztp.os_version | The Azure Local OS solution version to install: latest, latest-preview, or a validated solution recipe version. It also checks the SBE for compatibility. |
ztp.share_host or ztp.share_host_adapter | The address of the management host as the BMCs reach it. Use share_host_adapter to name the network adapter and let the script read its IPv4 address, or share_host to give the address. One of them is required. |
ztp.share_name | Name of the SMB share for the images. |
ztp.node_preparation.sbe_bundle | The OEM SBE folder. See below. |
Secrets
The environment file holds names and references only, never values.
| Key | What it points to |
|---|---|
ztp.admin_secret.* | The Key Vault secret that holds the provisioning administrator password, and that administrator's user name. Provisioning sets this account on the installed OS, and the Prepare stage signs in to each node with it. The secret must exist before the run. |
ztp.bmc_secret.* | The vault and the names of the secrets that hold the BMC user name and the BMC password. |
credentials.local_admin_password_secret | The deployment administrator's password, as keyvault://<vault>/<secret>. |
Don't put a password, token or key in the environment file or in any file you commit. The run reads the values from Key Vault at run time.
The OEM SBE folder
A Solution Builder Extension (SBE) is the hardware vendor's package for an Azure Local release. The automation needs it because the OEM requires its network drivers to be on the machine before Validate and Deploy. For Dell, the SBE can't install drivers or firmware during deployment. The Prepare stage installs the drivers.
What to download
Download these from the OEM into one folder. Dell requires a support account for the download.
| File | Purpose |
|---|---|
SBE_<...>.zip | The SBE package. The folder must hold exactly one SBE_*.zip. |
SBE_<...>.xml | The package's metadata. It has the same name as the zip, with .xml. |
SBE_Discovery_<oem>.xml | The OEM's SBE discovery manifest. |
Set the path
Set ztp.node_preparation.sbe_bundle to the folder.
What the automation does with it
- Resolve stages the package you supplied. The package pins the SBE version. The automation checks its SHA-256 against the OEM's published manifest and checks it against the OS build in
ztp.os_version. - Prepare verifies the zip again, unpacks the network driver folders once, chooses the drivers for each adapter by PCI hardware ID, checks their catalog signatures, and copies the three files to
C:\SBEon each node.
The hash check in Resolve runs at the start, so a package that doesn't match the OEM manifest stops the run before it touches a machine. The Prepare stage is the one that needs all three files, and it runs last, after the OS is installed. Check that the folder holds all three before you start, so a missing file doesn't stop the run late.
Validation
- The environment file passes the validator, or you have checked it by hand
- Every machine has
name,service_tag,idrac_ip,ip_addressandmac_address -
ztp.share_hostorztp.share_host_adapteris set to the address the BMCs reach - The secrets named in the file exist in Key Vault, and the file holds no secret values
- The SBE folder holds the zip, its XML and the discovery XML, and
ztp.node_preparation.sbe_bundlepoints to it
Navigation
| ← Prerequisites | ↑ Simplified Provisioning | Run from a management host → |
References
- azurelocal-ztp repository — full parameter reference and JSON schemas
- Microsoft Learn — Simplified Machine Provisioning
- Microsoft Learn — Solution Builder Extension updates
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-11-05 | Azure Local Cloud | Initial release |