Skip to main content

Options

Every option is a change to inputs.yaml followed by a regenerate, or a small edit to the generated files. This page shows which.

How to change an option

  1. Edit inputs.yaml.
  2. Validate: Test-MLOpsAcceleratorInput -InputFile inputs.yaml.
  3. Regenerate over an existing project (commit first, then review the diff):
Deploy-MLOpsAccelerator -InputFile inputs.yaml -OutputPath ./my-mlops -Upgrade

Add -Deploy only if you also need to re-run the bootstrap (new repository, environments or identity). Changes to the workload and infrastructure are rolled out by the pipelines after you merge to main.

Warning

Regenerating overwrites files. Anything you edited by hand in the generated project is replaced, so keep local edits small and review the diff.

Options

  1. Two environments
  2. Terraform or Bicep
  3. GitHub or Azure DevOps
  4. Your own data (ADLS)
  5. Outbound allow-list
  6. VNet address space
  7. Existing platform
  8. Budget alerts
  9. Tags
  10. Compute sizes
  11. Switch scenario
  12. Policy mode
  13. CSV or parquet

All inputs

InputTypeDefaultNotes
project_namestringrequired3 to 10 lowercase alphanumerics, used in resource names
locationstringrequiredAzure region, for example eastus2
subscription_id, tenant_idstringrequired
iacterraform or biceprequired
cicdgithub or azdorequired
scenariostringrequiredSee scenarios
data_sourcetaxi-csv, taxi-parquet, nyc-taxi-open or adlstaxi-csv
environmentslist[dev, test, prod]Ordered subset
tagsmap{}
github_org, github_repostringcicd: github
azdo_org_url, azdo_projectstringcicd: azdo
workload_typetabulartabularKind of workload pack. nlp and vision are planned. The old name workload still works and prints a deprecation warning
vnet_address_spaceCIDR10.20.0.0/16Scenario 4
allowed_outbound_fqdnslistPyPI and conda hostsScenario 3
policy_modeaudit, deny or noneaudit (none for scenario 11)Azure Policy
compute_vm_sizestringStandard_DS3_v2Training cluster and online endpoint VM size
compute_max_nodesinteger4Training cluster maximum nodes
workloadslistSingle workloadWorkload names (not types) sharing the platform; reserved names such as src, data and mlops are rejected; each gets workloads/<name>/ and its own pipelines
use_private_networkingboolfalseGitHub only, rejected with Azure DevOps: deploy self-hosted ACI runners in a VNet and make the state storage private-endpoint only
runners_vnet_address_spacestring10.250.0.0/24Runner VNet address space
runner_labelstringubuntu-latestGitHub runs-on label for generated workflows. Must be a self-hosted label when use_private_networking is true
approverslist[]GitHub usernames that must approve deployments to non-dev environments
name_suffixstringderivedexactly 5 lowercase alphanumerics; override to redeploy after a destroy (soft-delete holds names)
keyvault_retention_daysinteger7Key Vault soft-delete retention (7 to 90 days, fixed at creation)
budget_amountnumber500Scenarios 9 and 11
alert_emailslist[]Scenarios 9 and 11
existing_platformobjectScenario 11
adlsobjectdata_source: adls

The authoritative definition is schema/inputs.schema.json.

Validation rules

The inputs are checked against the schema and a set of semantic rules before anything is generated.

  • rag, existing_platform and adls are accepted only with rag-llmops, existing-platform and data_source: adls.
  • use_private_networking: true is rejected with cicd: azdo and needs a self-hosted runner_label. Labels that start with ubuntu-, windows- or macos-, or end with -latest, are rejected.
  • Environments are sorted into dev, test, prod order whatever order you write. dev is optional. Registry promotion scenarios need at least two environments. A warning is printed when prod is first, or when a non-dev environment has no approvers on GitHub.
  • vnet_address_space (scenario 4) must be a network address in private space (10.0.0.0/8, 172.16.0.0/12 or 192.168.0.0/16) with a prefix from /16 to /18. runners_vnet_address_space needs a prefix from /16 to /27. The two must not overlap.
  • name_suffix is exactly 5 lowercase letters or digits.