Skip to content

Environment file reference ​

Every key that Invoke-ZtpEnvironment.ps1 and Initialize-ZtpNode.ps1 read from the environment file, what it's for, and an example.

The environment file is YAML. It describes the machines, the management network, and the Azure targets. It holds no secrets: each credential is a Key Vault reference. The file can hold other keys for other tools; ZTP ignores keys that aren't listed here.

A complete example with placeholder values is in examples/infrastructure.example.yml.

How the file is checked ​

  • The run checks the file before it does anything else and lists every problem at once. Invoke-ZtpEnvironment.ps1 needs the Provision keys. Initialize-ZtpNode.ps1 on its own (or -From Prepare) needs only the Prepare keys.
  • If a script named tools\Validate-Infrastructure.ps1 exists in the same folder as the environment file, the entry point runs it first and stops if it fails. If there's no such script, it prints a warning and goes on.

Keys ​

"Needed by" says which run needs the key: P+P means both Provision and Prepare, Prov means Provision only. "Optional" means the run works without it.

Nodes ​

cluster_nodes is a list with one entry per machine.

KeyNeeded byFormatUsed for
cluster_nodes[].nameP+PText, uniqueHost name, edge machine name, image name (ztp-usb-<name>.img).
cluster_nodes[].ip_addressP+PIPv4The node's static management address. Prepare connects to it over WinRM before it sets the static address, so the node must already answer on it after the OS install. Use a DHCP reservation for the management MAC.
cluster_nodes[].mac_addressP+PAA:BB:CC:DD:EE:FF or AA-BB-CC-DD-EE-FFPicks the management adapter on the node.
cluster_nodes[].service_tagProvTextThe machine's serial number. Maps each voucher (\vouchers\<serial>\) to its node.
cluster_nodes[].idrac_ipProvIPv4The BMC address. Redfish target, and the only source allowed to reach the SMB share.

Management network, time and the deployment admin ​

KeyNeeded byFormatUsed for
network_intents.management.subnetP+PCIDR, for example 192.0.2.0/24Prefix length of the static address.
network_intents.management.gatewayP+PIPv4The one default gateway, on the management adapter.
network_intents.management.dns_serversP+PList of IPv4DNS on the management adapter. Learn: DNS servers can't be changed after deployment (DNS server considerations).
onprem.ntp_serversP+P, optionalListTime source. Prepare sets it with w32tm and waits until the node syncs from one of them.
credentials.local_admin_usernameP+PText; not Administrator or GuestThe deployment admin that Prepare creates in local Administrators.
credentials.local_admin_password_secretP+Pkeyvault://<vault>/<secret>The deployment admin's password. The vault must be in the subscription named by ztp.admin_secret.subscription_id. Learn asks for at least 14 characters with lowercase, uppercase, a digit and a special character (install the OS).

Hardware ​

KeyNeeded byFormatUsed for
hardware.vendorP+PText, for example DellPicks config/oem/<vendor>.json: the SBE manifest URL, the driver folders inside the SBE, and the BMC log patterns.
hardware.modelProvText, for example AX-760SBE selection. Hyphens are removed, so AX-760 becomes AX760.

Azure ​

KeyNeeded byFormatUsed for
azure_identity.azure_tenant_idP+PGUIDTenant of every Azure call.
azure_resources.locationProvAzure regionRegion of the site configuration and edge machines, and of the resource group if the run creates it. In the preview only eastus works for the provisioning resources (Learn).
site.nameProvTextDisplay name of the Microsoft.Edge site.
ztp.subscription_idP+PGUIDSubscription of the site and edge machines.
ztp.resource_groupP+PTextResource group of the site and edge machines. Created if missing.
ztp.site_nameProvTextResource name of the Microsoft.Edge site. Also names the ARM deployment ztp-<site_name>.
ztp.time_zoneProvText, for example UTCSite time zone.
ztp.os_versionProvlatest, latest-preview, or a validated solution recipe version (12.YYMM.x.y)The OS the machines install. It's also the solution version the SBE must be validated with; latest skips that check. Pin a version. Get-ZtpOsImage.ps1 lists the catalog.
ztp.provisioning_isoProvlatest, a train (2610), a build, or a Microsoft download URLThe maintenance ISO. latest takes the newest published general-availability train.
ztp.azl_rp_object_idProv, optionalGUIDObject ID of the Azure Local resource provider's service principal in your tenant. If you leave it out, the run looks it up, which needs directory read rights. A managed identity doesn't have those by default, so set it for pipelines.
ztp.tagsProv, optionalMappingTags on the site configuration and the edge machines. The resource group gets them only if the run creates it. Learn: a policy that requires tags isn't supported (troubleshooting).

To find the resource provider's object ID once with an account that can read the directory:

powershell
(Get-AzADServicePrincipal -ApplicationId '1412d89f-b8a8-4111-b4fd-e82905cbd85d').Id

That application ID is what Invoke-ZtpEnvironment.ps1 uses for the lookup.

Secrets in Key Vault ​

KeyNeeded byFormatUsed for
ztp.admin_secret.subscription_idP+PGUIDSubscription of the vault. The BMC secret vault and the deployment admin vault are read in this subscription too.
ztp.admin_secret.resource_groupProvTextResource group of the vault. The template assigns roles on the vault there.
ztp.admin_secret.vaultP+PVault nameVault that holds the provisioning administrator secret.
ztp.admin_secret.nameP+PSecret nameThe provisioning administrator password. Create it before the run; the environment-file path doesn't create it. Learn asks for at least 12 characters with lowercase, uppercase, a digit and a special character (provision machines).
ztp.admin_secret.usernameP+PTextLocal administrator that the OS install creates. Prepare signs in as <node>\<username>.
ztp.bmc_secret.vaultProvVault nameVault that holds the BMC login.
ztp.bmc_secret.username_nameProvSecret nameSecret whose value is the BMC user name.
ztp.bmc_secret.password_nameProvSecret nameSecret whose value is the BMC password.

Media and share ​

KeyNeeded byFormatUsed for
ztp.share_hostProv, one of the twoIPv4The management host's address as the BMCs reach it. The BMCs mount //<share_host>/<share_name>/ztp-usb-<node>.img.
ztp.share_host_adapterProv, one of the twoAdapter nameInstead of share_host: the name of the local network adapter whose IPv4 address the BMCs reach. Useful when that address changes, for example on a VPN. It wins over share_host.
ztp.share_nameProvText, letters, digits and hyphensName of the SMB share for the images.
ztp.node_preparation.sbe_bundleP+PFolder path on the management hostFolder with the OEM's SBE: exactly one SBE_*.zip, its SBE_*.xml, and SBE_Discovery_<oem>.xml. See Download the SBE.

Values the entry point sets for you ​

Invoke-ZtpEnvironment.ps1 fixes these values in the generated inputs. To change one, run the orchestrator directly (see Orchestrator reference).

SettingValue
Site configuration namedefault
Provisioning networkLAN, IP assignment Automatic (DHCP during provisioning)
Provisioning timeNTP Automatic
ConnectivityPublic (no proxy)
Role assignmentsSite settings, Key Vault configuration, edge machine delegations and the Azure Local resource provider role are all on.
BMC handlingRfsWriteAttribute on, SkipCertificateCheck on (BMCs with self-signed certificates).
TimeoutsVoucher wait 120 min, bootstrap 120 min (voucher 90 min), Ready 180 min, poll 60 s. Prepare: Ready 240 min, sign-in 30 min.
Preview trainsNot considered for provisioning_iso: latest.
ProvisionOs retryOn: one automatic resubmit per node per run.

Released under the MIT License.