Skip to content

Provision workers on Bare Metal

There are essentially two ways to enroll your bare metal machines with meltcloud.

  • through a locally attached ISO (a USB Stick/SD-card or virtual media)
  • through loading the enrollment ISO via UEFI HTTP Boot

Prerequisites

  1. Create an Enrollment Image
  2. Prepare the network environment
  3. Make sure you have a bare metal machine at hand 😉
  4. To be used as a Machine, the machine requires at least 3GB RAM and some disk space for docker images.

WARNING

Be aware that meltcloud will wipe the contents of the disk device during enrollment – ensure to save your holiday pictures beforehand!

Bootstrap via ISO

Booting machines over a locally attached ISO can be considered if a DHCP/UEFI HTTP Boot supported network boot is not possible within the environment or not supported by the server.

  1. Download the ISO file from your Enrollment Image and either mount it as a virtual media or flash it onto a SD-Card or USB drive. To create a bootable drive either use a tool like Etcher or built-in command line tools of your OS.
shell
# identify the USB/SD device on your local machine
# make sure the device is not mounted
sudo umount /dev/sdd
# copy the ISO with dd onto your drive
sudo dd if=/path/to/iso/enrollment.iso of=/dev/sdd
  1. Once finished, safely remove your drive and plug it into your bare metal machine.
  2. Make sure your BIOS/UEFI boot settings are configured to allow booting from your SD/USB drive
  3. The machine will now automatically boot into the immmutable OS and register itself on meltcloud.io

INFO

After installation, the USB drive can be ejected, as the system will have been installed to the disk.

Bootstrap via network (UEFI HTTP Boot)

Launching machines via UEFI HTTP Boot is the preferred option for meltcloud environments to avoid having to touch the physical machines.

Configure the DHCP server for UEFI HTTP Boot

You can provide the URL for UEFI HTTP Boot via DHCP option to your server. An example for dnsmasq:

shell
...
# define an IP range for DHCP
dhcp-range=<ip-from>,<ip-to>,<mask>,<lease-time>

# default DHCP options for gateway and DNS
dhcp-option=option:router,<gateway-ip>
dhcp-option=option:dns-server,<dns-ip>
dhcp-option=option:ntp-server,<ntp-ip>

# Select architecture.
dhcp-match=set:arch_x64,option:client-arch,16

# Send enrollment url as boot file
dhcp-boot=tag:arch_x64,https://app.meltcloud.io/enroll/8/.../amd64.iso

# Send HTTPClient as vendor dhcp options in the dhcp response. 
# If this is not set, most UEFI HTTP Boot Server will just ignore the DHCPOffer and time out. 
dhcp-pxe-vendor=HTTPClient
dhcp-option-force=tag:arch_x64,option:vendor-class,HTTPClient
...

Be aware that most BIOS' also allow you to enter an UEFI HTTP Boot URL manually as a boot option. This allows you to verify that your server supports UEFI HTTP Boot, before you go ahead and configure the DHCP server.

Example: https://github.com/tianocore/tianocore.github.io/wiki/HTTP-Boot#uri-configuration-in-home-environment

WARNING

Be aware that UEFI HTTP Boot support varies heavily between vendors. Check your server's manual to check the support first.

Boot Machine

Make sure your machine's BIOS/UEFI boot configuration is set to boot from network.

Power on the machine and verify that it is booting from the enrollment image and has started to enroll. It will reboot once finished. The boot order will be set to automatically boot from disk.

You should be able to find the machine on app.meltcloud.io

INFO

Before assigning the machine to a machine pool, verify that the machine pool's configuration (e.g. network profile) matches the devices detected by meltcloud.

Assign the machine to the designed machine pool as described here and turn it into a worker node.