Description
Description
The repro case for this bug requires #33021 to allow creation of an additional provision.data
directory.
Using this template:
base: template://ubuntu-22.04
provision:
- mode: dependency
script: "touch /tmp/dependency"
- mode: system
script: "touch /tmp/system"
- mode: user
script: "touch /tmp/user"
- mode: data
path: /tmp/data
will create a cidata.iso
image that is missing the user-data
file and therefore will not perform cloud-init processing. I checked by copying the cidata.iso
into a working instance and mounted it there2:
root@lima-docker:~# mount -o loop cidata.iso /root/cidata
mount: /root/cidata: WARNING: source write-protected, mounted read-only.
root@lima-docker:~# ls cidata
ls: reading directory 'cidata': Input/output error
boot etc_environment lima.env nerdctl-full.tgz param.env provision.dependency provision.user
boot.sh lima-guestagent meta-data network-config provision.data provision.system
If any of the other provisioning types are removed, then user-data
will be created normally.
I've changed the code to create provision/system
instead of provision.system
etc. to reduce the number of entries in the root directory, but that didn't make a difference.
I can create multiple scripts of the same type, and everything works as long as there are only 3 different provision.*
directories.
But once all 4 provision.*
directories exist, user-data
no longer gets written.