iPXE

iPXE #

#!ipxe
# Boot a persistent BurmillaOS to RAM

# Location of Kernel/Initrd images
set base-url <url>

kernel ${base-url}/vmlinuz rancher.state.dev=LABEL=BURMILLA_STATE rancher.state.autoformat=[/dev/sda] rancher.state.wait rancher.cloud_init.datasources=[url:http://example.com/cloud-config]
initrd ${base-url}/initrd
boot

If you want to autoformat the disk when booting by iPXE, you should add the rancher.state.autoformat part to kernel cmdline. However, this does not install the bootloader to disk, so you cannot upgrade BurmillaOS.

If you don’t add rancher.state.autoformat, BurmillaOS will run completely in memory, you can execute ros install to install to disk.

Hiding sensitive kernel commandline parameters #

Available as of RancherOS v0.9

Secrets can be put on the kernel parameters line afer a -- double dash, and they will be not be shown in any /proc/cmdline. These parameters will be passed to the BurmillaOS init process and stored in the root accessible /var/lib/burmilla/conf/cloud-init.d/init.yml file, and are available to the root user from the ros config commands.

For example, the kernel line above could be written as:

kernel ${base-url}/vmlinuz rancher.state.dev=LABEL=BURMILLA_STATE rancher.state.autoformat=[/dev/sda] -- rancher.cloud_init.datasources=[url:http://example.com/cloud-config]

The hidden part of the command line can be accessed with either sudo ros config get rancher.environment.EXTRA_CMDLINE, or by using a service file’s environment array.

An example service.yml file:

test:
  image: alpine
  command: echo "tell me a secret ${EXTRA_CMDLINE}"
  labels:
    io.rancher.os.scope: system
  environment:
  - EXTRA_CMDLINE

When this service is run, the EXTRA_CMDLINE will be set.

cloud-init Datasources #

Valid cloud-init datasources for BurmillaOS.

typedefault
ec2Default metadata address
digitaloceanDefault metadata address
packetDefault metadata address
cloudstackDefault metadata address
aliyunDefault metadata address
gceDefault metadata address
filePath
cmdlineKernel command line: cloud-config-url=http://link/user_data
configdrive/media/config-2
urlURL address
vmwareSet guestinfo cloud-init or interface data as per VMware ESXi
*This will add [“configdrive”, “vmware”, “ec2”, “digitalocean”, “packet”, “gce”] into the list of datasources to try

The vmware datasource was added as of v1.1.

Cloud-Config #

When booting via iPXE, BurmillaOS can be configured using a cloud-config file.