fix: add ACL-specific butane config with first-boot service workaround#8447
Merged
awesomenix merged 1 commit intomainfrom May 4, 2026
Merged
fix: add ACL-specific butane config with first-boot service workaround#8447awesomenix merged 1 commit intomainfrom
awesomenix merged 1 commit intomainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds an ACL (Azure Container Linux) specific Butane template to ensure first-boot systemd services run correctly when /etc/machine-id is left empty after VHD build, and updates the Flatcar/ACL Ignition generation path to select the appropriate template. It also reorders nodecustomdata.yml conditionals so ACL nodes don’t incorrectly take the AzlOSGuard path when both match.
Changes:
- Add
parts/linux/cloud-init/acl.ymlwith ACL-specific systemd enablement symlink workaround. - Parameterize
cloudInitToButane()to accept a Butane YAML path and select ACL vs Flatcar template based onconfig.IsACL(). - Reorder
nodecustomdata.ymlconditionals to checkIsACLbeforeIsAzlOSGuard.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/agent/const.go | Adds a constant for the ACL Butane template path (linux/cloud-init/acl.yml). |
| pkg/agent/baker.go | Parameterizes Butane conversion and selects ACL vs Flatcar Butane template when generating Ignition customData. |
| pkg/agent/baker_test.go | Updates tests to pass the Flatcar Butane template path into cloudInitToButane. |
| parts/linux/cloud-init/nodecustomdata.yml | Reorders templating conditionals so ACL uses ACL-specific provisioning scripts instead of AzlOSGuard ones. |
| parts/linux/cloud-init/acl.yml | Introduces ACL-specific Butane config with explicit sysinit.target.wants symlinks. |
ec15dff to
9f57d5c
Compare
9f57d5c to
4e79cfe
Compare
awesomenix
reviewed
May 2, 2026
awesomenix
reviewed
May 4, 2026
awesomenix
approved these changes
May 4, 2026
Devinwong
approved these changes
May 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this PR does / why we need it:
Adds an ACL-specific Butane config (acl.yml) with explicit storage.links symlinks for the ignition-bootcmds and ignition-file-extract services into sysinit.target.wants.
Reorder nodecustomdata.yml conditionals to check IsACL before IsAzlOSGuard
Why: On ACL, machine-id is empty (not absent) after VHD build. systemd only triggers ConditionFirstBoot=yes when machine-id is missing, so enabled services don't start on first boot. On Flatcar, waagent's CoreOS deprovisioning removes machine-id entirely, avoiding this issue. The explicit symlinks ensure these services start regardless of first-boot stat
Testing
[TEST All VHDs] AKS Linux VHD Build - Msft Tenant
Vendored this changed into aks-rp to run AKS E2Es
Which issue(s) this PR fixes:
Fixes #