Giter Site home page Giter Site logo

n7knightone / booty Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jeefy/booty

0.0 0.0 0.0 287 KB

A simple PXE Server for booting Flatcar-Linux

License: MIT License

JavaScript 1.28% Go 50.67% TypeScript 11.14% Makefile 0.95% HTML 2.01% Vue 32.72% Dockerfile 1.23%

booty's Introduction

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")
      --serverHttpPort int      Port to use for the client HTTP connection (default "80)
      --joinString string       The kubeadm join string to use to auto-join to a K8s cluster (kubeadm join 192.168.1.10:6443 --token TOKEN --discovery-token-ca-cert-hash sha256:SHA_HASH (default "")
      --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)
  • Web UI to add/edit/remove hosts
  • Unrecognized MAC addresses go into the brig (boot loop till the MAC is registered)

Examples

Example ignition config / helper scripts

Docker

docker run --rm -it \
--network=host \
-v $PWD:/data/ \
ghcr.io/jeefy/booty:main \
--dataDir=/storage/ \
--joinString="kubeadm join 192.168.1.10:6443 --token ${TOKEN} --discovery-token-ca-cert-hash sha256:${SHA_HASH}
--serverIP=192.168.1.10
--serverHttpPort=8080

Kubernetes

Example deployment

This creates a configmap with the example ignition yaml config, scripts, 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.

booty's People

Contributors

jeefy avatar jacaudi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.