Build custom unattended Fedora CoreOS installer ISOs and—when you need full air‑gap support—spin up a local registry that holds every container image your nodes will fetch during first boot.
- Downloads the latest Fedora CoreOS live ISO
- Generates an Ignition configuration from a Butane template
- Embeds the Ignition payload into the ISO
- Adds the kernel arg
coreos.inst.install_dev=so the image auto‑installs to your chosen disk (/dev/nvme0n1by default) - Drops a timestamped ISO in
./output/ - Optionally starts a self‑contained OCI registry (with a minimal UI) and mirrors the required images there
| Tool | Purpose | Install |
|---|---|---|
| Go 1.22+ | build the CLI | https://go.dev/dl/ |
| Podman | runs containerised helpers (coreos-installer, butane, registry) |
brew install podman / distro package |
| jq, gpg | coreos‑installer verifications | distro packages |
| cosign (optional) | release checksum signing | brew install cosign |
brew tap mainsail-industries/airdrop
brew install airdropbrew tap mainsail-industries/airdrop
brew install airdrop# Pick the correct archive from the Releases page:
https://github.com/Mainsail-Industries/airdrop/releases/latest
tar -xf airdrop_<VERSION>_<OS>_<ARCH>.tar.gz
sudo mv airdrop /usr/local/bin/git clone https://github.com/Mainsail-Industries/airdrop.git
cd airdrop
go install ./...cat > .airdrop.yaml <<'EOF'
install_disk: /dev/nvme0n1
fcos:
password_hash: "$6$…$…"
ssh_keys:
- "ssh-ed25519 AAAAC3Nz… [email protected]"
EOF
airdrop iso createThe ISO appears at ./output/custom-fedora-coreos-<timestamp>.iso.
airdrop registry wraps a tiny local registry+UI so CoreOS pulls stay on‑prem.
| Command | What it does |
|---|---|
up |
1) Launches a root‑less registry:2 + joxit/docker-registry-ui under Podman2) Pulls the Fedora CoreOS image set, retags, and pushes to the local registry 3) Prints URLs and available image tags |
status |
Displays registry URL, UI URL, and a table of images/tags currently mirrored. |
logs |
Streams combined logs from both registry and UI containers (useful for troubleshooting). |
# 1. Start the registry and mirror images (idempotent)
airdrop registry up
# → Registry : http://<host-ip>:5000
# → UI : http://<host-ip>:8080
# Images : quay.io/coreos/fedora-coreos:stable@sha256:…
# 2. Build an ISO that points Ignition to this registry (airdrop picks up certs)
airdrop iso create
# 3. Boot nodes — they’ll pull from http://<host-ip>:5000
# 4. Check what’s mirrored
airdrop registry status
# 5. Watch activity in real time
airdrop registry logsAll blobs live under ./registry-data/.
Certificates can be placed in ./certs/ and are automatically mounted so
CoreOS trusts the local mirror out of the box.
$ airdrop --help
Build custom Fedora CoreOS ISO and manage a local container registry
Usage:
airdrop [command]
Available Commands:
iso Build custom Fedora CoreOS ISO
registry Manage local OCI registry
help Help about any command
| Flag | Description |
|---|---|
--download-only |
Only fetch & verify the upstream CoreOS ISO |
--cert-dir |
Path holding registry TLS certs (default certs) |
| Command | Key flags | Notes |
|---|---|---|
up |
--port 5000, --data registry-data/ (defaults) |
One‑shot launch + mirror |
status |
— | Prints URLs & mirrored images |
logs |
--follow (default) |
Tail registry & UI logs |
| Channel | Stream | Trigger |
|---|---|---|
stable |
Fedora CoreOS stable | Upstream stable tag detected |
Each release ships Darwin & Linux (arm64 / amd64) tarballs,
checksums.txt, and an updated Homebrew formula in homebrew/airdrop.rb.
- Fork & clone.
go test ./...before PR.- Sign commits with GPG if you can.
Airdrop is licensed under the MIT License – see LICENSE for
details.
