Skip to content

Mainsail-Industries/airdrop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

airdrop

Airdrop illustration

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.


✨ What does airdrop do?

  • 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/nvme0n1 by default)
  • Drops a timestamped ISO in ./output/
  • Optionally starts a self‑contained OCI registry (with a minimal UI) and mirrors the required images there

🏗 Prerequisites

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

📦 Installation

macOS (Apple Silicon & Intel)

brew tap mainsail-industries/airdrop
brew install airdrop

Linux (x86_64 & ARM 64)

brew tap mainsail-industries/airdrop
brew install airdrop

Manual download

# 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/

Build from source

git clone https://github.com/Mainsail-Industries/airdrop.git
cd airdrop
go install ./...

⚙️ Quick start – ISO only

cat > .airdrop.yaml <<'EOF'
install_disk: /dev/nvme0n1
fcos:
  password_hash: "$6$…$…"
  ssh_keys:
    - "ssh-ed25519 AAAAC3Nz… [email protected]"
EOF

airdrop iso create

The ISO appears at ./output/custom-fedora-coreos-<timestamp>.iso.


🚚 Air‑gap support – airdrop registry

airdrop registry wraps a tiny local registry+UI so CoreOS pulls stay on‑prem.

Sub‑commands

Command What it does
up 1) Launches a root‑less registry:2 + joxit/docker-registry-ui under Podman
2) 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).

Typical flow

# 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 logs

All 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.


🖥 CLI overview

$ 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

airdrop iso create flags

Flag Description
--download-only Only fetch & verify the upstream CoreOS ISO
--cert-dir Path holding registry TLS certs (default certs)

airdrop registry cheat‑sheet

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

🔄 Release cadence

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.


🤝 Contributing

  1. Fork & clone.
  2. go test ./... before PR.
  3. Sign commits with GPG if you can.

📄 License

Airdrop is licensed under the MIT License – see LICENSE for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published