Skip to content

BootEnv

The bootenv object defines an environment to boot a machine. It has two main components: an OS information section, and a templates list. The OS information section defines what makes up the installation base for this bootenv. It defines the install ISO, a URL to get the ISO, and SHA256 checksum to validate the image. These are used to provide the basic install image, kernel, and base packages for the bootenv.

Field Definition
BootParams A template that will be expanded to create the full list of
boot parameters for the environment. This list will generally be passed as command line
arguments to the Kernel as it boots up.

required: true
Description Description is a string for providing a simple description
Documentation Documentation is a string for providing additional in depth information.
EndDelimiter EndDelimiter is an optional end delimiter.

required: false
Initrds Partial paths to the initrds that should be loaded for the boot
environment. These should be paths that the initrds are located
at in the OS ISO or install archive.

required: true
Kernel The partial path to the kernel for the boot environment. This
should be path that the kernel is located at in the OS ISO or
install archive. Kernel must be non-empty for a BootEnv to be
considered net bootable.

required: true
Loaders Loaders contains the boot loaders that should be used for various different network
boot scenarios. It consists of a map of machine type -> partial paths to the bootloaders.
Valid machine types are:

- 386-pcbios for x86 devices using the legacy bios.

- amd64-uefi for x86 devices operating in UEFI mode

- arm64-uefi for arm64 devices operating in UEFI mode

Other machine types will be added as dr-provision gains support for them.

If this map does not contain an entry for the machine type, the DHCP server will fall back to
the following entries in this order:

- The Loader specified in the ArchInfo struct from this BootEnv, if it exists.

- The value specified in the bootloaders param for the machine type specified on the machine, if it exists.

- The value specified in the bootloaders param in the global profile, if it exists.

- The value specified in the default value for the bootloaders param.

- One of the following vaiues:

- lpxelinux.0 for 386-pcbios

- ipxe.efi for amd64-uefi

- ipxe-arm64.efi for arm64-uefi

required: true
Meta Meta contains the meta data of the object.

The type of this field is a key / value map/dictionary.
The key type is string.
The value type is also string.

The general content of the field is undefined and can be an arbritary store.
There are some common known keys:

color - The color the UX uses when displaying
icon - The icon the UX uses when displaying
* title - The UX uses this for additional display information. Often the source of the object.

Specific Object types use additional meta data fields. These are described at:
https://docs.rackn.io/stable/redirect/?ref=rs_object_metadata
Name Name is the name of the boot environment. Boot environments that install
an operating system must end in '-install'. All boot environment names must be unique.

required: true
OS OS is the operating system specific information for the boot environment.
OS/Codename The codename of the OS, if any.
OS/Family The family of operating system (linux distro lineage, etc)
OS/IsoFile The name of the ISO that the OS should install from. If
non-empty, this is assumed to be for the amd64 hardware
architecture.
OS/IsoSha256 The SHA256 of the ISO file. Used to check for corrupt downloads.
If non-empty, this is assumed to be for the amd64 hardware
architecture.
OS/IsoUrl The URL that the ISO can be downloaded from, if any. If
non-empty, this is assumed to be for the amd64 hardware
architecture.

swagger:strfmt uri
OS/Name The name of the OS this BootEnv has. It should be formatted as
family-version.

required: true
OS/SupportedArchitectures SupportedArchitectures maps from hardware architecture (named
according to the distro architecture naming scheme) to the
architecture-specific parameters for this OS. If
SupportedArchitectures is left empty, then the system assumes
that the BootEnv only supports amd64 platforms.
OS/SupportedArchitectures/BootParams A template that will be expanded to create the full list of
boot parameters for the environment. If empty, this will fall back
to the top-level BootParams field in the BootEnv

required: true
OS/SupportedArchitectures/Initrds Partial paths to the initrds that should be loaded for the boot
environment. These should be paths that the initrds are located
at in the OS ISO or install archive. If empty, this will fall back
to the top-level Initrds field in the BootEnv

required: true
OS/SupportedArchitectures/IsoFile IsoFile is the name of the ISO file (or other archive)
that contains all the necessary information to be able to
boot into this BootEnv for a given arch.
At a minimum, it must contain a kernel and initrd that
can be booted over the network.
OS/SupportedArchitectures/IsoUrl IsoUrl is the location that IsoFile can be downloaded from, if any.
This must be a full URL, including the filename. dr-provision does
not use this field internally. drpcli and the UX use this field to
provide a default source for downloading the IsoFile.

swagger:strfmt url
OS/SupportedArchitectures/Kernel The partial path to the kernel for the boot environment. This
should be path that the kernel is located at in the OS ISO or
install archive. If empty, this will fall back to the top-level
Kernel field in the BootEnv

required: true
OS/SupportedArchitectures/Loader Loader is the bootloader that should be used for this boot
environment. If left unspecified and not overridden by a subnet
or reservation option, the following boot loaders will be used:

lpxelinux.0 on 386-pcbios platforms that are not otherwise using ipxe.

ipxe.pxe on 386-pcbios platforms that already use ipxe.

ipxe.efi on amd64 EFI platforms.

ipxe-arm64.efi on arm64 EFI platforms.

This setting will be overridden by Subnet and Reservation
options, and it will also only be in effect when dr-provision is
the DHCP server of record. It will also be overridden by the corresponding
entry in the Loaders field of the BootEnv, if present and secure boot is enabled by
the license.
OS/SupportedArchitectures/Sha256 Sha256 should contain the SHA256 checksum for the IsoFile.
If it does, the IsoFile will be checked upon upload to make sure
it has not been corrupted.
OS/Version The version of the OS, if any.
OnlyUnknown OnlyUnknown indicates whether this bootenv can be used without a
machine. Only bootenvs with this flag set to true be used for
the unknownBootEnv preference. If this flag is set to True, then the
Templates provided byt this boot environment must take care to be able
to chainload into the appropriate boot environments for other machines
if the bootloader that machine is using does not support it natively.
The built-in ignore boot environment and the discovery boot environment
provided by the community content bundle should be used as references for
satisfying that requirement.

required: true
OptionalParams The list of extra optional parameters for this
boot environment. They can be present as Machine.Params when
the bootenv is applied to the machine. These are more
other consumers of the bootenv to know what parameters
could additionally be applied to the bootenv by the
renderer based upon the Machine.Params
RequiredParams The list of extra required parameters for this
boot environment. They should be present as Machine.Params when
the bootenv is applied to the machine.

required: true
StartDelimiter StartDelimiter is an optional start delimiter.

required: false
Templates Templates contains a list of templates that should be expanded into files for the
boot environment. These expanded templates will be available via TFTP and static HTTP
from dr-provision. You should take care that the final paths for the temmplates do not
overlap with ones provided by other boot environments.

required: true
Templates/Contents Contents that should be used when this template needs
to be expanded. Either this or ID should be set.

required: false
Templates/EndDelimiter EndDelimiter is an optional end delimiter.

required: false
Templates/ID ID of the template that should be expanded. Either
this or Contents should be set

required: false
Templates/Link Link optionally references another file to put at
the path location.
Templates/Meta Meta for the TemplateInfo. This can be used by the job running
system and the bootenvs to handle OS, arch, and firmware differences.

required: false
Templates/Name Name of the template

required: true
Templates/Path A text/template that specifies how to create
the final path the template should be
written to.

required: true
Templates/StartDelimiter StartDelimiter is an optional start delimiter.

required: false