Skip to content

fix: attach azure per-op identities to custom runner templates#1953

Merged
im-Amitto merged 2 commits into
mainfrom
am/azure-custom-runner-identities
Jul 20, 2026
Merged

fix: attach azure per-op identities to custom runner templates#1953
im-Amitto merged 2 commits into
mainfrom
am/azure-custom-runner-identities

Conversation

@im-Amitto

Copy link
Copy Markdown
Contributor

Fixes the Azure per-operation identity footgun for custom runner templates, once and for all.

Today: if an azure-bicep app defines per-operation identities (any azure permission role) AND pins a custom runner_nested_template_url, ctl-api creates the user-assigned identities but never attaches them to the runner VMSS — only the built-in runner attaches them. The runner then can't get an IMDS token for the per-op identity and provisioning fails with an opaque "Identity not found".

  • getRunnerLinkedDeployment: when a custom runner template declares a userAssignedIdentities object parameter, inject the per-op identity attachment map + the dependsOn on the identity resources. Backward compatible — templates without the param are unaffected.
  • hard error at render if per-op identities exist but the custom template can't accept them (points to the fix or the built-in runner).
  • sync-time validation (ValidateAzureRunnerIdentities): the same check at nuon apps validate, so vendors catch it before any install exists instead of at sandbox runtime.

Pairs with install-stacks: the shared azure/runner.json now declares the param.

@im-Amitto
im-Amitto enabled auto-merge (squash) July 20, 2026 14:16
@im-Amitto im-Amitto added the promote-all Trigger a promotion of all nuon services and binaries. label Jul 20, 2026
@im-Amitto
im-Amitto merged commit 1c2252b into main Jul 20, 2026
26 checks passed
@im-Amitto
im-Amitto deleted the am/azure-custom-runner-identities branch July 20, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api auto-update canary integration promote-all Trigger a promotion of all nuon services and binaries.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants