Skip to content

Bootenvs

BootEnv Overrides

BootEnv overrides provide a mechanism to customize boot environments without creating multiple bootenv objects. Using the bootenv-customize parameter, you can override various aspects of bootenvs on a per-machine (via parameter inheritance) or global (via the global profile) basis.

For the complete technical reference, see Customization using bootenv-customize.

Note

  • The Templates section is merged with the bootenv's templates, with identically-named templates from the parameter overriding the bootenv templates
  • You must use the per-arch SupportedArchitectures section to override kernel, initrd, ISO, boot parameter, and bootloader values

Warning

  • This is not compatible with bootenv purging and may cause UI pauses when uploading ISOs
  • Avoid creating multiple overrides for the same bootenv with the same OS name but different ISOs or kernel/initrd settings
  • Do not override sledgehammer on a per-machine basis - any overrides for sledgehammer must be matched by identical changes in the OS section of the discovery bootenv (discovery assumes the machine can transition to sledgehammer without a reboot)

What Can Be Overridden

The bootenv-customize parameter allows for dynamic customizations on bootenvs. You can override the following bootenv fields:

  • Loaders - Override bootloader files for different architectures (key-value map)
  • OS - Override OS metadata and architecture-specific settings
  • Name - Operating system identifier
  • Version - OS version number
  • Codename - OS codename (e.g., esxi, alma, rocky)
  • Family - OS family classification
  • SupportedArchitectures - Architecture-specific configurations including:
    • IsoFile - ISO filename to use
    • IsoUrl - URL to download the ISO file
    • Sha256 - ISO checksum for validation
    • Kernel - Kernel file path
    • Initrds - List of initrd file paths
    • Loader - Architecture-specific loader path
    • BootParams - Kernel boot parameters
  • Templates - Override or add template configurations (array of template objects)
  • Name - Template name (required)
  • Path - Path where template will be rendered
  • ID - Template ID to reference
  • Contents - Inline template contents
  • Link - Link to template resource
  • Meta - Template metadata (key-value map)

Structure

The parameter is structured as a map of bootenv name to override values:

YAML
Params:
  bootenv-customize:
    <bootenv-name>:
      Loaders:
        <arch-type>: <loader-path>
      OS:
        Name: <os-name>
        Version: <version-string>
        Codename: <os-codename>           # optional
        Family: <os-family>               # optional
        SupportedArchitectures:
          <arch>:
            IsoFile: <iso-filename>
            IsoUrl: <iso-download-url>    # optional
            Sha256: <checksum>
            Kernel: <kernel-path>
            Initrds:
              - <initrd-path>
            Loader: <loader-path>         # optional
            BootParams: <boot-parameters>
      Templates:
        - Name: <template-name>           # required
          Path: <template-path>
          ID: <template-id>               # optional, mutually exclusive with Contents
          Contents: <inline-template>     # optional, mutually exclusive with ID
          Link: <template-link>           # optional
          Meta:                           # optional
            <key>: <value>

Automated Profile Generation

The drpcli profiles genbootenv command can automatically generate bootenv override profiles from a CSV file, useful for managing multiple ISO versions:

Bash
drpcli profiles genbootenv --csvFile /path/to/versions.csv --outputDir /path/to/output

CSV format (first 5 columns required, additional columns become custom params):

Text Only
Name,IsoFile,Sha256,BootEnv,Version,param1,param2
profile-name,os-installer.iso,checksum-here,base-bootenv,version,value1,value2

This generates profiles with complete bootenv-customize parameters automatically. See drpcli profiles genbootenv --help for full usage details.

Use Cases

BootEnv overrides are particularly useful for:

  1. Multiple ISO versions - Support different versions of the same OS without creating separate bootenvs
  2. Sledgehammer versioning - Pin specific Sledgehammer versions for discovery
  3. Bootloader customization - Switch bootloaders for specific hardware or security requirements

To Do

  • Describe bootenv iso building

  • Describe kickstart/preseed usage

  • Describe runner.tmpl inclusion

  • Describe kernel parameters