Skip to content

Conversation

@slagle
Copy link
Contributor

@slagle slagle commented Sep 25, 2025

Add comprehensive documentation for building EDPM bootc container images
and QCOW2 disk images, including:

  • Step-by-step build instructions for bootc containers
  • QCOW2 image generation and packaging
  • Usage with OpenStackDataPlaneNodeSet resources
  • Configuration examples for baremetal deployment
  • Field descriptions for osImage and osContainerImageUrl

🤖 Generated with Claude Code

Jira: OSPRH-20326
Co-Authored-By: Claude noreply@anthropic.com
Signed-off-by: James Slagle jslagle@redhat.com

Add comprehensive documentation for building EDPM bootc container images
and QCOW2 disk images, including:

- Step-by-step build instructions for bootc containers
- QCOW2 image generation and packaging
- Usage with OpenStackDataPlaneNodeSet resources
- Configuration examples for baremetal deployment
- Field descriptions for osImage and osContainerImageUrl

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Jira: OSPRH-20326
Signed-off-by: James Slagle <jslagle@redhat.com>
Add comprehensive documentation for the USER_PACKAGES build argument:

- Environment variable configuration
- Usage in build commands
- Multiple practical examples (debugging, storage, network, development tools)
- Important notes about package availability and image size impact
- Integration with existing build process

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: James Slagle <jslagle@redhat.com>
bootc.md Outdated
Comment on lines 141 to 142

If you need a QCOW2 disk image for bare metal deployment:

Choose a reason for hiding this comment

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

As a nit, I would frame this as a "deployment image" in general. Because your likely not going direct to a VM with the container either.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

sounds good, i can make that change


- **`baremetalSetTemplate.osImage`**: The filename of the QCOW2 image that will be extracted from the container. This should match the filename inside your QCOW2 container image (typically `edpm-bootc.qcow2`).

- **`baremetalSetTemplate.osContainerImageUrl`**: The full URL to your QCOW2 container image that was built and pushed in the previous steps. This is the image tagged with `-qcow2` suffix (e.g., `your-registry.example.com/edpm-bootc:latest-qcow2`).

Choose a reason for hiding this comment

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

A note for other reviewers in terms of long term context:

When Metal3 natively supports invoking Ironic's bootc deploy interface, this will need to change to only be an OCI URL. The osImage value would no longer apply because we won't need images anymore to deploy the workload.

bootc.md Outdated
target bootc container image using the following ansible variable:

```yaml
edpm_bootc_os_container_image: "your-registry.example.com/edpm-bootc:updated-version"

Choose a reason for hiding this comment

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

Question, This is being done with tags in the OCI registry. Tags can be changed/moved as time goes on.

Have we tested with a shadigest url for absolute matching to a specific manifest, i.e. skipping the tag match.

Furthermore, Do we want to create a pattern of changing/retargetting the tag? Presumably operators could just update the tag reference in the registry and not actually have to change this value, but we likely need to validate if it works happily or not.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I tested bootc switch (which is how this variable gets used) using an image reference by sha256, and that worked fine.

I think we default to using images by sha256 in the product, so if that's the case, we ought to do the same for this image.

@juliakreger
Copy link

Overall, I think this is in really good shape to merge. I'd prefer a little more reviewer activity and I have noted other items in the docs but I don't think they require this PR to be updated to merge it as is.

@slagle slagle force-pushed the bootc branch 2 times, most recently from b191664 to 25df836 Compare September 30, 2025 15:46
bootc.md Outdated
sudo podman push ${EDPM_QCOW2_IMAGE}
```

## Step 8: Extract QCOW2 from Container (Usage)
Copy link

Choose a reason for hiding this comment

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

This isn't really a step is it? It is just for if they want to examine the qcow2 for some reason

Copy link

@steveb steveb Sep 30, 2025

Choose a reason for hiding this comment

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

Maybe move this to a ### section in Image Contents?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done

@steveb
Copy link

steveb commented Sep 30, 2025

Overall this looks good to me. I do wonder though if it is time we published upstream centos edpm-bootc:[version] and edpm-bootc:[version]-qcow2 images. Then these docs can be reworked around customisation of these "base" images.

@slagle
Copy link
Contributor Author

slagle commented Oct 1, 2025

Overall this looks good to me. I do wonder though if it is time we published upstream centos edpm-bootc:[version] and edpm-bootc:[version]-qcow2 images. Then these docs can be reworked around customisation of these "base" images.

The images are being built and pushed to quay on edpm-image-builder commits (or can be triggered on demand).

https://quay.io/repository/openstack-k8s-operators/edpm-bootc?tab=tags

I could add something to the docs to describe customizing that, but until we get it shipped downstream as well, we'd still need the build steps.

Copy link
Contributor

@jistr jistr left a comment

Choose a reason for hiding this comment

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

/lgtm


2. **Build updated bootc image**: If needed, rebuild your bootc image with the newer `openstack-selinux` version

3. Create `edpm-update-system-selinux.yaml`
Copy link
Contributor

Choose a reason for hiding this comment

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

Makes sense if it's desired to deploy minimal changes that allow to update OpenStack. I'd guess many customers would take the approach "if i'm already rebooting, i might as well update the whole OS image". So i'm not sure how often would it come to updating selective packages like this, but +1 to have this approach spelled out.

Add comprehensive EDPM update documentation for bootc nodes:

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: James Slagle <jslagle@redhat.com>
@slagle
Copy link
Contributor Author

slagle commented Oct 8, 2025

There's no automated merge with tide on this repo. Given the previous acks, going to merge this one.

@slagle slagle merged commit 48b5071 into openstack-k8s-operators:main Oct 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants