Skip to content

Implement Bootable Container (bootc) image & deployment #22

Description

@janhalen

1. Image Creation & Local Build

  • Draft Containerfile: Create a multi-stage Containerfile based on a bootc-compatible image

  • Local Build: Use Podman Desktop/CLI to build the image locally to verify there are no layer errors.

  • Decide directory stucture and make a PR with the Container file and a minimal documentation for how to test and use it

2. Registry Integration (GitHub Packages)

  • GHCR Authentication: Configure local Podman to authenticate with ghcr.io using a Personal Access Token (PAT).

  • Initial Push: Manually push the first stable image to the GitHub Container Registry associated with the repo.

3. Provisioning & Deployment

  • Boot test device (or VM) with a bootc distro.

  • Use bootc swith to deploy the image from the container repo (e.g. with bootc switch ghcr.io/os2sandbox/openclient-core:0.02)

  • Status Verification: Confirm the node is running the containerized OS (e.g. with bootc status)

4. Auto-Update Testing

  • Trigger Update: Modify a small component in the Containerfile, rebuild, and push a new version to GHCR.

  • Verify Pull: Ensure the remote node detects the new image version via the bootc-fetcher or a manual bootc update command.

  • Reboot Validation: Confirm the system performs a transactional update and reboots into the new image state without manual intervention.

Definition of Done (DoD)

  • The system boots successfully from an image hosted on GHCR.
  • bootc status shows the system is tracking the GitHub registry correctly.
  • A change pushed to the registry is automatically pulled and applied to the device.
  • Documentation provided for the Containerfile structure.

Metadata

Metadata

Assignees

Labels

OpenGitOpsWork related to proving OpenGitOps as a viable administration standard for linux devicesbootcWork related to using 'bootable containers' concept for OS management

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions