Skip to content

cidata.iso is missing user-data file #3308

Open
@jandubois

Description

@jandubois

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.

Footnotes

  1. I'm creating this bug before the PR is ready for review so I can reference this bug in the PR.

  2. I don't know why I get the Input/output error, but I get the same thing even for a working cidata.iso.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions