{"id":17200235,"url":"https://github.com/jeefy/booty","last_synced_at":"2025-03-17T11:30:29.633Z","repository":{"id":40584781,"uuid":"453911262","full_name":"jeefy/booty","owner":"jeefy","description":"A simple (i)PXE Server for booting Flatcar-Linux and CoreOS","archived":false,"fork":false,"pushed_at":"2024-10-13T03:02:09.000Z","size":509,"stargazers_count":43,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-27T23:03:04.158Z","etag":null,"topics":["flatcar","flatcar-linux","ignition","k8s","kubernetes","pxe"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeefy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-31T07:12:32.000Z","updated_at":"2024-10-17T22:24:51.000Z","dependencies_parsed_at":"2023-02-09T18:46:24.739Z","dependency_job_id":"e0cd400c-75b0-4238-b445-b43aed54f7f7","html_url":"https://github.com/jeefy/booty","commit_stats":{"total_commits":72,"total_committers":4,"mean_commits":18.0,"dds":"0.20833333333333337","last_synced_commit":"5afdd5f03a7c5654f5466403518f621a0ee4e051"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeefy%2Fbooty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeefy%2Fbooty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeefy%2Fbooty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeefy%2Fbooty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeefy","download_url":"https://codeload.github.com/jeefy/booty/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243858056,"owners_count":20359271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flatcar","flatcar-linux","ignition","k8s","kubernetes","pxe"],"created_at":"2024-10-15T02:06:49.720Z","updated_at":"2025-03-17T11:30:28.949Z","avatar_url":"https://github.com/jeefy.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Booty\n\nA simple (i)PXE Server for booting Flatcar-Linux, CoreOS, and [Universal Blue](https://universal-blue.org)\n\n```\n\u003e booty --help\n\nEasy iPXE server for Flatcar, CoreOS, and more\n\nUsage:\n  booty [flags]\n\nFlags:\n      --coreOSArchitecture string    Architecture to use for CoreOS downloads (default \"x86_64\")\n      --coreOSChannel string         CoreOS channel to look for updates (default \"stable\")\n      --dataDir string               Directory to store stateful data (default \"/data\")\n      --debug                        Enable debug logging\n      --flatcarArchitecture string   Architecture to use for the Flatcar downloads (default \"amd64\")\n      --flatcarChannel string        Flatcar channel to look for updates (default \"stable\")\n  -h, --help                         help for booty\n      --httpPort int                 Port to use for the HTTP server (default 8080)\n      --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\n      --serverHttpPort int           Alternative HTTP port to use for clients (default 80)\n      --serverIP string              IP address that clients can connect to (default \"127.0.0.1\")\n      --updateSchedule string        Cron schedule to use for cleaning up cache files (default \"*/5 * * * *\")\n```\n\n## Features\n\n* (i)PXE boot into the latest Flatcar-Linux or CoreOS\n* MAC address based hostnames\n* Automatic conversion of Butane YAML to Ignition JSON\n  * Variable injection in Butane/Ignition\n* JSON \"Hardware Database\" (Containing boot-time config data)\n* Automatic updates retrieved from Flatcar-Linux and CoreOS\n* Automatic drain/reboot of nodes (in conjunction with [Kured](https://github.com/weaveworks/kured))\n* Web UI to add/edit/remove hosts\n* Unrecognized MAC addresses go into the brig (boot loop till the MAC is registered)\n* Support for different operating systems and ignition files per machine\n* **EXPERIMENTAL**: Support for per-ostree images per machine (in conjunction with [ignition rebase scripts](examples/bazzite.but))\n  * Auto-caches OCI images used for hosts (and has a page listing cached artifacts)\n  * When \"Install\" is set to Y, it will auto-flip to N when iPXE file is grabbed the first time\n\n## Examples\n\n[Example ignition config / helper scripts](examples/README.md)\n\n### Docker\n\n```\ndocker run --rm -it \\\n--network=host \\\n-v $PWD:/data/ \\\nghcr.io/jeefy/booty:main \\\n--dataDir=/storage/ \\\n--joinString=\"kubeadm join 192.168.1.10:6443 --token ${TOKEN} --discovery-token-ca-cert-hash sha256:${SHA_HASH}\n--serverIP=192.168.1.10\n--serverHttpPort=8080\n--flatcarChannel=beta\n--coreOSChannel=testing\n```\n\n### Kubernetes\n\n[Example deployment](examples/k8s.yaml)\n\nThis creates a configmap with the example ignition yaml config, scripts, a deployment of booty, and a service.\n\n### PXE vs iPXE\n\nThe boot target file is different depending on whether you want to use PXE or iPXE. While iPXE is recommended due to performance, there may be some use cases where PXE is required.\n\nTo boot into PXE, use `pxelinux.cfg/default`\n\nTo boot into iPXE, use `undionly.kpxe`\n\n## Additional Thoughts\n\n**Why?**\n\nI like treating (most of) my machines like cattle. This is an easier and more lightweight way to tackle PXE booting and patch management.\n\n**Can you make it do X?**\n\nFeature requests / optimizations / PRs are welcome! Feel free to ping me [@jeefy](https://twitter.com/jeefy) on Twitter.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeefy%2Fbooty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeefy%2Fbooty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeefy%2Fbooty/lists"}