Skip to content

build_library: fix Exoscale image format, size, and compression#4075

Open
jheidel wants to merge 2 commits into
flatcar:mainfrom
jheidel:fix-exoscale-image
Open

build_library: fix Exoscale image format, size, and compression#4075
jheidel wants to merge 2 commits into
flatcar:mainfrom
jheidel:fix-exoscale-image

Conversation

@jheidel

@jheidel jheidel commented Jun 7, 2026

Copy link
Copy Markdown

Fix Exoscale image format, size, and compression

Exoscale requires Custom Templates to be at least 10GB, expects a .qcow2 extension, and Exoscale Custom Templates do not support compressed (.bz2) images. Currently, Flatcar releases an 8GB compressed .img.bz file.

This change ensures the output file uses the .qcow2 extension, applies a post-conversion resize to exactly 10G, and disables compression in the release pipeline, matching that of similar platforms (scaleway, etc).

Related to flatcar/Flatcar#2163

How to use

Reviewers can verify that the generated .qcow2 image can be directly used by Exoscale Custom Template and that this instance can be used to create a new compute instance with 10G disk size.

Testing done

The changes were verified using the Flatcar SDK:

  1. Build base image and oem sysexts:
./run_sdk_container ./build_image --board=amd64-usr --getbinpkg
./run_sdk_container ./build_image --board=amd64-usr --getbinpkg oem_sysext
  1. Generate Exoscale image:
./run_sdk_container ./image_to_vm.sh --board=amd64-usr --getbinpkg --format=exoscale --image_compression_formats=none
  1. Verify image metadata:

    qemu-img info __build__/images/amd64-usr/latest/flatcar_production_exoscale_image.qcow2
     image: flatcar_production_exoscale_image.qcow2
     file format: qcow2
     virtual size: 10 GiB (10737418240 bytes)
     disk size: 522 MiB
    
  2. Real-world test: The resulting image was hosted on a public web server and successfully imported into Exoscale's 'Add Custom Template' UI without any manual renaming, resizing, or decompression required.

CI: https://jenkins.flatcar.org/job/container/job/packages_all_arches/163/cldsv/

@tormath1

tormath1 commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Hey @jheidel thanks a lot for your contribution, I kicked-off a CI job to see if everything continues to build correctly but the changes look good from a first look.

I was talking about Exoscale support a moment ago, and I'm wondering if the documentation is up-to-date for Exoscale: https://www.flatcar.org/docs/latest/installing/community-platforms/exoscale/ - did you use this documentation?

@tormath1 tormath1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a changelog entry in changelog/changes ?

@chewi

chewi commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Great to hear that someone is using Exoscale, as we were very doubtful! Also great to hear that this is (hopefully) the only issue.

@tormath1

tormath1 commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Image has been built successfully in the CI. Here's the diff with current Alpha:

-584353002 flatcar_production_exoscale_image.img.bz2
-      369 flatcar_production_exoscale_image.img.bz2.DIGESTS
-     1328 flatcar_production_exoscale_image.img.bz2.DIGESTS.asc
-      622 flatcar_production_exoscale_image.img.bz2.DIGESTS.sig
-      622 flatcar_production_exoscale_image.img.bz2.sig
+584712352 flatcar_production_exoscale_image.qcow2
+      363 flatcar_production_exoscale_image.qcow2.DIGESTS
+     1322 flatcar_production_exoscale_image.qcow2.DIGESTS.asc
+      622 flatcar_production_exoscale_image.qcow2.DIGESTS.sig
+      622 flatcar_production_exoscale_image.qcow2.sig

And for the metadata:

$ wget https://bincache.flatcar-linux.net/images/amd64/9999.0.1+tormath1-fix-exoscale-image/flatcar_production_exoscale_image.qcow2
$ qemu-img info flatcar_production_exoscale_image.qcow2
image: flatcar_production_exoscale_image.qcow2
file format: qcow2
virtual size: 10 GiB (10737418240 bytes)
disk size: 558 MiB
cluster_size: 65536
Format specific information:
    compat: 0.10
    compression type: zlib
    refcount bits: 16
Child node '/file':
    filename: flatcar_production_exoscale_image.qcow2
    protocol type: file
    file length: 558 MiB (584712704 bytes)
    disk size: 558 MiB

@jheidel may I ask you to try this image just to confirm: https://bincache.flatcar-linux.net/images/amd64/9999.0.1+tormath1-fix-exoscale-image/flatcar_production_exoscale_image.qcow2 ?

@jheidel

jheidel commented Jun 8, 2026

Copy link
Copy Markdown
Author

https://www.flatcar.org/docs/latest/installing/community-platforms/exoscale/ - did you use this documentation?

It is indeed out of date. The screenshots are showing an old UI and they suggest selecting CoreOS but this image is no longer provided as one of the Exoscale templates. That means you need to use Custom Templates. I was considering doing a pass through that documentation once we have a .qcow2 image available in a release. Alternatively, I can document the workaround instructions temporarily.

If you have a line to Exoscale support, It would be really nice if we could get Flatcar as one of the Exoscale-provided templates. Otherwise users need to manually create new custom templates after each release (if they want newly-deployed compute instances to track the latest release), and they end up paying a roughly $1/month cost for the custom template image as block storage. I can file a separate feature request for this if you like, but I have no idea if it's feasible or worth your time.

try this image just to confirm: https://bincache.flatcar-linux.net/images/amd64/9999.0.1+tormath1-fix-exoscale-image/flatcar_production_exoscale_image.qcow2

Excellent, yes this works:

2026-06-08_08-23 2026-06-08_08-24 2026-06-08_08-27 2026-06-08_08-30

Exoscale requires Custom Templates to be at least 10GB, expects a
.qcow2 extension, and Exoscale Custom Templates do not support
compressed (.bz2) images. Currently, Flatcar releases an 8GB
compressed .img file.

This change ensures the output file uses the .qcow2 extension,
applies a post-conversion resize to exactly 10G, and disables
compression in the release pipeline to match platform requirements
and UI prompts.

Signed-off-by: Jeff Heidel <jheidel@gmail.com>
@jheidel jheidel force-pushed the fix-exoscale-image branch from c91974e to 3ca2ddf Compare June 8, 2026 15:56
@tormath1

tormath1 commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

I can file a separate feature request for this if you like, but I have no idea if it's feasible or worth your time.

Yes please create an issue for this, this can help coordinating the effort (documentation, Exoscale discussions, etc.) and we might gather feedback from other Exoscale users. I'll have a look on my side to contact Exoscale folks.

For the documentation itself, I'd say for now we can keep it as it is and update once we heard back from Exoscale.

@jheidel

jheidel commented Jun 8, 2026

Copy link
Copy Markdown
Author

Can we add a changelog entry in changelog/changes ?

Done, added changelog/changes/2026-06-06-fix-exoscale-image.md

Comment thread changelog/changes/2026-06-06-fix-exoscale-image.md Outdated
Co-authored-by: Mathieu Tortuyaux <mathieu.tortuyaux@gmail.com>
Signed-off-by: Jeff Heidel <jheidel@gmail.com>
@jheidel

jheidel commented Jun 8, 2026

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Testing / in Review

Development

Successfully merging this pull request may close these issues.

3 participants