shoelaces(8)

✨ shoelaces(8) β€” the system manager's manual but make it cute ✨

okay bestie, buckle UP πŸ’… this is the shoelaces page from the System Manager's Manual, and it's literally about automated server bootstrapping. yes. servers. getting their lil shoes tied. that's the whole vibe. πŸŽ€


🌸 NAME 🌸

shoelaces β€” automated server bootstrapping πŸ₯Ύβœ¨


πŸ¦‹ SYNOPSIS πŸ¦‹

shoelaces [options...]

that's it. that's the whole thing. options go brrr. πŸ’«


πŸ’– OPTIONS πŸ’–

every single one, no skips, no cap:

  • -base-url <string> β€” optional, bestie. it sets the base address used when generating URLs. if you don't pass it, the value of -bind-addr gets used instead. lowkey convenient. ✨
  • -bind-addr <host:port> β€” where Shoelaces listens for requests. defaults to localhost:8081. πŸ“
  • -config <config> β€” points at a config file. and guess what β€” every option below can live in that config too. so you can just vibe with a file instead of 800 flags. πŸŽ€
  • -data-dir <directory> β€” a directory holding mappings, configs, templates, etc. the whole lil treasure chest. πŸ—‚οΈ
  • -debug β€” turns on debug mode. πŸ‘€
  • -env-dir <directory> β€” a directory with environment overrides. the README of the project has the tea on how environment overrides work. β˜•
  • -mappings-file <file> β€” a mappings YAML file. defaults to mappings.yaml. again, README of the project for the deets on mappings. πŸ“„
  • -static-dir <directory> β€” a custom web directory full of static files. defaults to web. 🌐
  • -template-extension <extension> β€” the Shoelaces template extension. defaults to .slc. slc stands for slay, probably. πŸ’…

πŸ‘‘ DESCRIPTION πŸ‘‘

so here's the main character energy: Shoelaces serves over HTTP iPXE boot scripts, cloud-init configuration, and literally any other configuration files to baremetal or virtual machines booting using iPXE. πŸ–₯️✨

and it does a few other things too, to make managing server deployments easier:

  • Has a simple but nice UI to show the current configuration, and history of servers that booted. πŸŽ€
  • Uses Go templates to handle complex configurations. 🐹
  • Allows specifying the boot entry point for a given server based on its IP address or DNS PTR record. πŸ”
  • Supports the notion of environments for Development and Production environment configurations, while trying to minimize template duplication. 🌱🏭
  • Puts unknown servers into iPXE script boot retry loop, while at the same time showing them in the UI allowing the user to select a specific boot configuration. πŸ”

and fr fr β€” Shoelaces is better when used along a DHCP server. the CONFIGURATION section below has examples of how to hook a DHCP server up with Shoelaces. 🫢


🌈 CONFIGURATION 🌈

Shoelaces goes looking for a config file whenever the -config flag is specified. simple as that. πŸ’«

here's an example config file, iconic:

bind-addr=localhost:8081
data-dir=/etc/shoelaces/data-dir/
template-extension=.slc
mappings-file=mappings.yaml
debug=true

and now the fun part β€” dhcpd(8) can be hooked with Shoelaces by adding this snippet into dhcpd.conf(5):

# dhcp.conf
next-server <your-tftp-server>;
if exists user-class and option user-class = "iPXE" {
  filename "http://<shoelaces-server>/start";
} else {
  filename "undionly.kpxe";
}

same energy with dnsmasq(8) β€” configure it for working with Shoelaces using this snippet:

dhcp-match=set:ipxe,175 # iPXE sends a 175 option.
dhcp-boot=tag:!ipxe,undionly.kpxe
dhcp-boot=http://<shoelaces-server>/start
⚠️ and don't forget, bestie β€” a TFTP server such as tftpd(8) must be configured to serve the iPXE executable, undionly.kpxe. no tftp, no boots. periodt. πŸ’€

πŸ¦„ SEE ALSO πŸ¦„

dhcpd(8) dhcpd.conf(5) dnsmasq(8) tftpd(8)

go read those too, iykyk πŸ“šβœ¨


πŸ’œ AUTHORS πŸ’œ

Maintained by ThousandEyes Inc. <opensource@thousandeyes.com>. 🫢

Up-to-date sources can be found at https://github.com/thousandeyes/shoelaces. πŸ”—

Bugs reports and patches can be submitted via GitHub's interface or contacting the maintainers directly via email. πŸ›πŸ’Œ


and that's the whole page, bestie!! this was the shoelaces(8) manual from the System Manager's Manual, dated 2023-08-24. go tie some server shoes. slay. πŸ‘‘πŸ’–πŸ¦‹

πŸ“¦ where this page comes from