Skip to content

Bare metal provisioning (PXE boot)

flowchart TD
  subgraph controller[Initial controller]
    Ansible
    dhcp[DHCP server]
    tftp[TFTP server]
    http[HTTP server]
  end

  machine[Bare metal machine]

  Ansible -. 1 .-> machine
  machine <-. 2, 3 .-> dhcp
  machine <-. 4, 5 .-> tftp
  machine <-. 6, 7 .-> http
  1. Ansible: Hey MAC address xx:xx:xx:xx:xx:xx, wake up!
  2. Machine: Hello everyone, I just woke up in network mode, could someone please show me how to boot?
  3. DHCP server: I hear you, here's your IP address, proceed to the next server to obtain your bootloader.
  4. Machine: Hello, could you please send me my bootloader?
  5. TFTP server: Here you go. Grab your boot configuration, kernel, and initial ramdisk as well.
  6. Machine: Hi, I just booted into my bootloader, and my boot parameters instructed me to get the installation instructions, packages, etc. from this site.
  7. HTTP server: It's all yours.
  8. Machine: Great, now I can install the OS and reboot!

Here's how it looks like in action: