The “” example shows how to have Tinkerbell boot a machine with a custom iPXE script and into the installer menu. This example does not require creating a template or a workflow.


Hardware Data

This is the only Tinkerbell resource you’ll need to create. Use the example below as a template. At a minimum update the "mac", "address", "netmask", and "gateway" fields for your targeted machine and network. Setting the “ipxe_script_url”, “distro”, and “slug” are what tell boots to load into the iPXE menu.


  1. Modify the example hardware data below
  2. Save the hardware data to a file, e.x. hardware.json
  3. Push the hardware data to Tink server using the Tink cli
docker exec -i deploy_tink-cli_1 tink hardware push < ./hardware.json
    "id": "ce2e62ed-826f-4485-a39f-a82bb74338e3",
    "metadata": {
        "facility": {
            "facility_code": "onprem",
            "plan_slug": "c2.medium.x86",
            "plan_version_slug": ""
        "instance": {
            "ipxe_script_url": "",
            "operating_system": {
                "distro": "custom_ipxe",
                "slug": "custom_ipxe"
        "state": ""
    "network": {
        "interfaces": [
                "dhcp": {
                    "mac": "00:50:56:25:11:0e",
                    "name_servers": [
                    "arch": "x86_64",
                    "ip": {
                        "address": "",
                        "netmask": "",
                        "gateway": ""
                "netboot": {
                    "allow_pxe": true,
                    "allow_workflow": true

Boot the machine

Now you can set the machine to pxe boot and either reboot or start it up. The machine will boot into the menu. netboot-menu.png