cluster-api-provider-aws
cluster-api-provider-aws copied to clipboard
:bug: Write sensitive cloud-init user-data into /etc/cloud/cloud.cfg.d
What type of PR is this? /kind bug
What this PR does / why we need it:
The boothook fetches sensitive user-data from an AWS service (Secrets Manager, or SSM Parameter Store). This PR changes the mechanism by the way this user-data is passed to cloud-init once it's fetched.
Previously, the boothook wrote the sensitive user-data to /etc/secret-userdata.txt
, and cloud-init read it via an #include
directive. Now, the boothook writes it to /etc/cloud/cloud.cfg.d/99_kubeadm_bootstrap.cfg
. The directory is a well-documented configuration source used by cloud-init, and exists wherever cloud-init is installed. The file is given the prefix 99_
to give it high priority over other configuration in that directory.
Previously, cloud-init read sensitive user-data from /etc/secret-userdata.txt
via an #include
directive. Now, it reads the sensitive user-data simply because it is located in the /etc/cloud/cloud.cfg.d
directory. Therefore, the #include
directive is no longer used, and is removed.
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...)
format, will close the issue(s) when PR gets merged):
Fixes #4745
Special notes for your reviewer:
If we merge this PR, we can revert the workaround introduced in https://github.com/kubernetes-sigs/image-builder/pull/406.
Checklist:
- [x] squashed commits
- [x] includes documentation
- [x] includes emojis
- [ ] adds unit tests
- [ ] adds or updates e2e tests
Release note:
Changes the mechanism to pass sensitive user-data to cloud-init, making CAPA compatible with cloud-init v23.3 and newer.