Serves a static iPXE boot script which gathers client machine attributes and chainloads to the iPXE endpoint. Configure your DHCP server or iPXE server to boot from this script.
GET http://bootcfg.foo/boot.ipxe
GET http://bootcfg.foo/boot.ipxe.0 // for dnsmasq
Response
#!ipxe
chain ipxe?uuid=${uuid}&mac=${net0/mac:hexhyp}&domain=${domain}&hostname=${hostname}&serial=${serial}
Finds the profile for the machine and renders the network boot config (kernel, options, initrd) as an iPXE script.
GET http://bootcfg.foo/ipxe
Query Parameters
Name | Type | Description |
---|---|---|
uuid | string | Hardware UUID |
mac | string | MAC address |
Response
#!ipxe
kernel /assets/coreos/899.6.0/coreos_production_pxe.vmlinuz coreos.config.url=http://bootcfg.foo:8080/ignition?uuid=${uuid}&mac=${net0/mac:hexhyp} coreos.first_boot=1 coreos.autologin
initrd /assets/coreos/899.6.0/coreos_production_pxe_image.cpio.gz
boot
Finds the profile for the machine and renders the network boot config as a GRUB config.
GET http://bootcfg.foo/grub
Query Parameters
Name | Type | Description |
---|---|---|
uuid | string | Hardware UUID |
mac | string | MAC address |
Response
default=0
timeout=1
menuentry "CoreOS" {
echo "Loading kernel"
linuxefi "(http;bootcfg.foo:8080)/assets/coreos/899.6.0/coreos_production_pxe.vmlinuz" "coreos.autologin" "coreos.config.url=http://bootcfg.foo:8080/ignition" "coreos.first_boot"
echo "Loading initrd"
initrdefi "(http;bootcfg.foo:8080)/assets/coreos/899.6.0/coreos_production_pxe_image.cpio.gz"
}
Finds the profile matching the machine and renders the network boot config as JSON to implement the Pixiecore API. Currently, Pixiecore only provides the machine's MAC address for matching.
GET http://bootcfg.foo/pixiecore/v1/boot/:MAC
URL Parameters
Name | Type | Description |
---|---|---|
mac | string | MAC address |
Response
{
"kernel":"/assets/coreos/899.6.0/coreos_production_pxe.vmlinuz",
"initrd":["/assets/coreos/899.6.0/coreos_production_pxe_image.cpio.gz"],
"cmdline":{
"cloud-config-url":"http://bootcfg.foo/cloud?mac=ADDRESS",
"coreos.autologin":""
}
}
Finds the profile matching the machine and renders the corresponding Cloud-Config.
GET http://bootcfg.foo/cloud
Query Parameters
Name | Type | Description |
---|---|---|
uuid | string | Hardware UUID |
mac | string | MAC address |
Response
#cloud-config
coreos:
units:
- name: etcd2.service
command: start
- name: fleet.service
command: start
Finds the profile matching the machine and renders the corresponding Ignition Config.
GET http://bootcfg.foo/ignition
Query Parameters
Name | Type | Description |
---|---|---|
uuid | string | Hardware UUID |
mac | string | MAC address |
Response
{
"ignitionVersion": 1,
"storage": {},
"systemd": {
"units": [
{
"name": "hello.service",
"enable": true,
"contents": "[Service]\nType=oneshot\nExecStart=\/usr\/bin\/echo Hello World\n\n[Install]\nWantedBy=multi-user.target"
}
]
},
"networkd": {},
"passwd": {}
}
OpenPGPG signature endpoints serve detached binary and ASCII armored signatures of rendered configs, if enabled. See OpenPGP Signing.
Endpoint | Signature Endpoint | ASCII Signature Endpoint |
---|---|---|
Ignition | http://bootcfg.foo/ignition.sig |
http://bootcfg.foo/ignition.asc |
Cloud-init | http://bootcfg.foo/cloud.sig |
http://bootcfg.foo/cloud.asc |
iPXE | http://bootcfg.foo/boot.ipxe.sig |
http://bootcfg.foo/boot.ipxe.asc |
iPXE | http://bootcfg.foo/ipxe.sig |
http://bootcfg.foo/ipxe.asc |
Pixiecore | http://bootcfg/pixiecore/v1/boot.sig/:MAC |
http://bootcfg/pixiecore/v1/boot.asc/:MAC |
GRUB2 | http://bootcf.foo/grub.sig |
http://bootcfg.foo/grub.asc |
Get a config and its detached ASCII armored signature.
GET http://bootcfg.foo/ipxe?attribute=value
GET http://bootcfg.foo/ipxe.asc?attribute=value
Response
-----BEGIN PGP SIGNATURE-----
wsBcBAEBCAAQBQJWoDHyCRCzUpbPLRRcKAAAqQ8IAGD+eC9kzc/U7h9tgwvvWwm9
suTmVSGlzC5RwTRXg6CKuW31m3WAin2b5zWRPa7MxxanYMhhBbOfrqg/4xi1tfdE
w7ipmmgftl3re0np75Jt9K1rwGXUHTCs3yooz/zvqSvNSobG13FL5tp+Jl7a22wE
+W7x9BukTytVgNLt3IDIxsJ/rAEYUm4zySftooDbFVKj/SK5w8xg4zLmE6Jxz6wp
eaMlL1TEXy3NaFR0+hgbqM/tgeV2j6pmho8yaPF63iPnksH+gdmPiwasCfpSaJyr
NO+p24BL3PHZyKw0nsrm275C913OxEVgnNZX7TQltaweW23Cd1YBNjcfb3zv+Zo=
=mqZK
-----END PGP SIGNATURE-----
If you need to serve static assets (e.g. kernel, initrd), bootcfg
can serve arbitrary assets from -assets-path
at /assets/
.
bootcfg.foo/assets/
└── coreos
└── 835.9.0
├── coreos_production_pxe.vmlinuz
└── coreos_production_pxe_image.cpio.gz
└── 899.6.0
├── coreos_production_pxe.vmlinuz
└── coreos_production_pxe_image.cpio.gz