feat: add CoreOS-based immutable image for remote test labs#213
Open
feat: add CoreOS-based immutable image for remote test labs#213
Conversation
Add containerized infrastructure for running labgrid coordinator and exporter on Fedora CoreOS with automatic updates. Components: - Container images for labgrid, pdudaemon, dnsmasq, ser2net - Quadlet systemd units for container management - Butane/Ignition configuration generator - Simple YAML config template for lab setup - GitHub Actions workflow for container builds Features: - Immutable OS with automatic updates via Zincati - Container auto-updates via Podman - VLAN-based device isolation - USB serial device passthrough - TFTP/DHCP for device provisioning
Add simplified lab node setup for Raspberry Pi using Docker Compose: - docker-compose.yml with all services (labgrid, pdudaemon, dnsmasq) - cloud-init user-data for automatic first-boot configuration - setup.sh for manual installation - Watchtower for automatic container updates This provides an easier alternative to Fedora CoreOS for Raspberry Pi based lab nodes, with the same containerized architecture.
Add flash-coreos.sh that: - Downloads Fedora CoreOS aarch64 image - Installs RPi4 UEFI firmware automatically - Generates Ignition from lab-config.yaml - Handles all setup in one command Update README to make CoreOS the primary approach for Raspberry Pi, with Docker/RPi OS as fallback option.
- Add flash-sd.sh: simpler script that just flashes + adds ignition - Update README with multiple methods (coreos-installer, script, manual) - Add -o flag to build-ignition.sh for output file - Remove overcomplicated flash-coreos.sh The key insight: just flash the official image and drop ignition file into /mnt/ignition/config.ign - no complex tooling needed.
No need to install coreos-installer - run it via container: podman run quay.io/coreos/coreos-installer:release install ... flash-sd.sh now: - Uses podman (or docker) to run coreos-installer - Downloads CoreOS image automatically - Adds UEFI firmware for Raspberry Pi - Only requires: podman + unzip + curl
Split into two steps: 1. build-image.sh - generates .img file (no root needed) 2. dd - user flashes manually (only root operation) Image manipulation runs inside fedora container via podman, so no root/sudo needed on the host for building. User workflow: ./build-image.sh config.ign -o labnode.img sudo dd if=labnode.img of=/dev/sdX bs=4M status=progress
build-image.sh now just downloads files to a directory: - fcos.raw.xz (CoreOS image) - uefi/ (RPi firmware) - config.ign (if provided) - flash.sh (simple script user can inspect) No containers, no --privileged. User runs sudo only on flash.sh which they can review first. Workflow: ./build-image.sh config.ign # no root cd coreos-rpi cat flash.sh # inspect if desired sudo ./flash.sh /dev/sdX # user controls this
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add containerized infrastructure for running labgrid coordinator and
exporter on Fedora CoreOS with automatic updates.
Components:
Features: