A simple (i)PXE Server for booting Flatcar-Linux

Booty

A simple PXE Server for booting Flatcar-Linux

> booty --help

Easy iPXE server for Flatcar

Usage:
  booty [flags]

Flags:
      --architecture string     Architecture to use for the iPXE server (default "amd64")
      --channel string          Flatcar channel to look for updates (default "stable")
      --dataDir string          Directory to store stateful data (default "/data")
      --debug                   Enable debug logging
  -h, --help                    help for booty
      --httpPort int            Port to use for the HTTP server (default 8080)
      --serverIP string         IP address that clients can connect to (default "127.0.0.1")
      --updateSchedule string   Cron schedule to use for cleaning up cache files (default "* */1 * * *")

Features

  • PXE boot into the latest Flatcar-Linux
  • MAC address based hostnames
  • Automatic conversion of Container Linux Config to Ignition JSON
  • JSON "Hardware Database" (right now just a MAC-to-hostname mapping)
  • Automatic updates retrieved from Flatcar-Linux
  • Automatic drain/reboot of nodes (in conjunction with Kured)

Examples

Example ignition config / helper scripts

Docker

docker run --rm -it \
-v $PWD:/data/ \
-p 69:69/udp \
-p 80:8080 \
ghcr.io/jeefy/booty:main \
--dataDir=/storage/ \
--serverIP=192.168.1.10

Kubernetes

Example deployment

This creates a configmap with the example ignition yaml config, a deployment of booty, and a service.

Additional Thoughts

Why?

I like treating (most of) my machines like cattle. This is an easier and more lightweight way to tackle PXE booting and patch management.

Can you make it do X?

Feature requests / optimizations / PRs are welcome! Feel free to ping me @jeefy on Twitter.

Owner
Jeffrey Sica
SWE | @orchestructure Board Member | Kubernetes & OSS Advocate
Jeffrey Sica
Similar Resources

OliveTin is a web interface for running Linux shell commands.

OliveTin is a web interface for running Linux shell commands.

OliveTin OliveTin is a web interface for running Linux shell commands. Some example use cases; Give controlled access to run shell commands to less te

Dec 29, 2022

A Fyne login manager for linux desktop computers

A Fyne login manager for linux desktop computers

Fin, the Fyne Login Manager This app is in it's very early stages and has only been tested with pam and systemd to log in users with a .xinitrc file.

Oct 12, 2022

fbstatus graphically shows the gokrazy system status on the Linux frame buffer, which is typically available via HDMI when running on a Raspberry Pi or a PC.

fbstatus graphically shows the gokrazy system status on the Linux frame buffer, which is typically available via HDMI when running on a Raspberry Pi or a PC.

gokrazy framebuffer status (fbstatus) fbstatus graphically shows the gokrazy system status on the Linux frame buffer, which is typically available via

Aug 4, 2022

IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port

IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port

IRC bot for launch ddos attack, Mainly of scan target are IoT device that run linux and open default SSH port

Nov 10, 2021

A pair of local reverse proxies (one in Windows, one in Linux) for Tailscale on WSL2

tailscale-wsl2 TL;DR Running two reverse proxies (one in Windows, one in the WSL2 Linux VM), the Windows Tailscale daemon can be accessed via WSL2: $

Dec 9, 2022

eBPF-based EDR for Linux

ebpf-edr A proof-of-concept eBPF-based EDR for Linux Seems to be working fine with the 20 basic rules implemented. Logs the alerts to stdout at the mo

Nov 9, 2022

Library for directly interacting and controlling an Elgato Stream Deck on Linux.

Stream Deck Library for directly interacting and controlling an Elgato Stream Deck on Linux. This library is designed to take exclusive control over a

Dec 17, 2022

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Creates a linux group of users synced to your Google Workspace users and automatically imports their public SSH keys.

Jan 27, 2022

SailFirewall - Linux firewall powered by eBPF and XDP

SailFirewall Linux firewall powered by eBPF and XDP Requirements Go 1.16+ Linux

May 4, 2022
Related tags
Seesaw v2 is a Linux Virtual Server (LVS) based load balancing platform.

Seesaw v2 Note: This is not an official Google product. About Seesaw v2 is a Linux Virtual Server (LVS) based load balancing platform. It is capable o

Jan 3, 2023
A distributed Layer 2 Direct Server Return (L2DSR) load balancer for Linux using XDP/eBPF

VC5 A distributed Layer 2 Direct Server Return (L2DSR) load balancer for Linux using XDP/eBPF This is very much a proof of concept at this stage - mos

Dec 22, 2022
A simple Go library to toggle on and off pac(proxy auto configuration) for Windows, MacOS and Linux

pac pac is a simple Go library to toggle on and off pac(proxy auto configuration

Dec 26, 2021
Broadcast-server - A simple Go server that broadcasts any data/stream

broadcast A simple Go server that broadcasts any data/stream usage data You can

Oct 21, 2022
A Go package for sending and receiving ethernet frames. Currently supporting Linux, Freebsd, and OS X.

ether ether is a go package for sending and receiving ethernet frames. Currently supported platform: BPF based OS X FreeBSD AF_PACKET based Linux Docu

Sep 27, 2022
netstat-nat - Display NAT entries on Linux systems

netstat-nat This is a reimplementation of the netstat-nat tool, written entirely in Go. It uses the same command line flags and almost the same output

Oct 26, 2021
一个不限速的天翼云网盘下载器。(支持分享链接下载、支持Windows、Linux、macOS)Based Go.

189Cloud-Downloader 一个不限速的天翼云网盘下载器。(支持分享链接下载、支持Windows、Linux、macOS)Based Go. 使用说明 NAME: 189Cloud-Downloader - 一个189云盘的下载器。(支持分享链接) USAGE: 189Cl

Dec 6, 2022
Automatically spawn a reverse shell fully interactive for Linux or Windows victim
Automatically spawn a reverse shell fully interactive for Linux or Windows victim

Girsh (Golang Interactive Reverse SHell) Who didn't get bored of manually typing the few lines to upgrade a reverse shell to a full interactive revers

Dec 14, 2022
Experimental system call tracer for Linux x86-64, written in Go

gtrace A system call tracer for Linux x86-64. DISCLAIMER: This software is experimental and not considered stable. Do not use it in mission-critical e

Nov 29, 2022
eBPF library for Go based on Linux libbpf
eBPF library for Go based on Linux libbpf

libbpfgo libbpfgo is a Go library for working with Linux's eBPF. It was created for Tracee, our open source Runtime Security and eBPF tracing tools wr

Jan 5, 2023