Skip to content

Conversation

@s3rj1k
Copy link
Member

@s3rj1k s3rj1k commented Dec 16, 2025

No description provided.

@metal3-io-bot
Copy link
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@metal3-io-bot metal3-io-bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 16, 2025
@metal3-io-bot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign rozzii for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@netlify
Copy link

netlify bot commented Dec 16, 2025

Deploy Preview for metal3io-website ready!

Name Link
🔨 Latest commit 88b7cdb
🔍 Latest deploy log https://app.netlify.com/projects/metal3io-website/deploys/6942d548181ef900089081d2
😎 Deploy Preview https://deploy-preview-601--metal3io-website.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@metal3-io-bot metal3-io-bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Dec 16, 2025
@s3rj1k s3rj1k force-pushed the custom-deploy branch 4 times, most recently from 5d70888 to 91ecd87 Compare December 17, 2025 16:00
@s3rj1k s3rj1k marked this pull request as ready for review December 17, 2025 16:02
@metal3-io-bot metal3-io-bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 17, 2025
@dtantsur
Copy link
Member

The post does not render in the listing, I wonder why: https://deploy-preview-601--metal3io-website.netlify.app/blog/

@s3rj1k
Copy link
Member Author

s3rj1k commented Dec 23, 2025

The post does not render in the listing, I wonder why: https://deploy-preview-601--metal3io-website.netlify.app/blog/

yea, had to run render locally


## Introducing the deb_oci_efi_lvm Hardware Manager

The `DebOCIEFILVMHardwareManager` is a custom IPA hardware manager that
Copy link
Member

Choose a reason for hiding this comment

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

nit: a link would be handy here

partition
- **Optional RAID1** - Software mirroring across two disks for
redundancy
- **Cloud-init integration** - Ironic configdrive data is written
Copy link
Member

Choose a reason for hiding this comment

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

nit: maybe make "configdrive" a link to https://book.metal3.io/bmo/instance_customization.html#implementation-notes for context?

The deployment process extracts an OCI image using Google's `crane` tool,
then installs the necessary boot infrastructure on top. The default image
is `ubuntu:24.04`, but any Debian-based image can be specified via an
annotation on the BareMetalHost object.
Copy link
Member

Choose a reason for hiding this comment

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

Side question: why not use the standard spec.image.url? Is there some validation that gets in your way?

Copy link
Member Author

Choose a reason for hiding this comment

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

I guess you are referring to metal3-io/baremetal-operator@0d9fc3a, I would very much like using spec.image.url and might just migrate to that with newer BMO.

Still, for the post, I think it is worth keeping annotation configuration example, and maybe adding a note about a possibility to use spec.image.url with newer BMO.

Annotation config is not directly obvious when reading general CustomDeploy docs.

online: true
bootMode: UEFI
rootDeviceHints:
# Two space-separated serial numbers enable RAID1
Copy link
Member

Choose a reason for hiding this comment

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

Side note: you could probably also use MetaData to pass arbitrary stuff to the installation process.

Copy link
Member

Choose a reason for hiding this comment

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

I'm mentioning it because the way it is here, this BMH cannot be used by any other Metal3MachineTemplate. This is not a concern for you, but may become a concern for somebody following your post.


# Get the download URL
if [ "${CRANE_VERSION}" = "latest" ]; then
DOWNLOAD_URL=$(curl -s https://api.github.com/repos/google/go-containerregistry/releases/latest |
Copy link
Member

Choose a reason for hiding this comment

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

I'm curious if you considered using podman, which is readily available in CS9 and also has the export command.

Copy link
Member Author

Choose a reason for hiding this comment

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

hmm, I guess that can also be an option

DEVICE_WAIT_DELAY = 5


def run_command(cmd, check=True, capture_output=True, timeout=300):
Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Member Author

Choose a reason for hiding this comment

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

yea, I was avoiding reusing IPA code as much as possible, reason is to avoid keeping this in constant sync with IPA changes and retesting, but might be a good idea to mention that similar function exists in IPA and can be reused


<!-- markdownlint-enable MD033 -->

```python
Copy link
Member

Choose a reason for hiding this comment

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

It could be useful to split this very large code block into smaller parts with separate commentary, and potentially organize it in a reversed way: start by showing the highest level code (the deploy step itself), then descend into details. You may even decide to omit helper functions, pointing at your repository instead.

Copy link
Member Author

Choose a reason for hiding this comment

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

I wanted to have a code snapshot in the post itself, so maybe splitting into separate code functions would be nicer, repo link for a full solution yes

@dtantsur
Copy link
Member

This is awesome! I've left a couple of comments, the only important one is about reorganizing the code block.

We also need to figure out why the post does not render...

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

Labels

size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants