/AuroraBoot

:hatching_chick: Kairos bootstrapper

Primary LanguageGoApache License 2.0Apache-2.0


kairos-white-column 5bc2fe34
AuroraBoot

The Kairos bootstrapper

license docs go report card

With Kairos you can build immutable, bootable Kubernetes and OS images for your edge devices as easily as writing a Dockerfile. Optional P2P mesh with distributed ledger automates node bootstrapping and coordination. Updating nodes is as easy as CI/CD: push a new image to your container registry and let secure, risk-free A/B atomic upgrades do the rest.

Documentation

Contribute

📚 Getting started with Kairos
💡 Examples
🎥 Video
👐Engage with the Community

🙌 CONTRIBUTING.md
🙋 GOVERNANCE
👷Code of conduct

Description

AuroraBoot is an automatic boostrapper for Kairos:

  • Download release assets in order to provision a machine
  • Prepare automatically the environment to boot from network
  • Provision machines from network with a version of Kairos and cloud config
  • Customize The installation media for installations from USB

Check out the full reference of AuroraBoot in our documentation.

Usage

AuroraBoot can be used with its container image to provision machines on the same network that will attempt to netboot.

For instance, in one machine from your workstation, you can run:

$ docker run --rm -ti --net host quay.io/kairos/auroraboot --set "artifact_version=v2.4.2" --set "release_version=v2.4.2" --set "flavor=rockylinux"--set "flavor_release=9"  --set repository="kairos-io/kairos" --cloud-config /....

And then start machines attempting to boot over network.

This command will:

  • Download all the needed artifacts
  • Create a custom ISO with the cloud config attached to drive automated installations
  • Provision Kairos from network, with the same settings

Use container images

Auroraboot can also boostrap nodes by using custom container images or the official kairos releases, for instance:

docker run -v /var/run/docker.sock:/var/run/docker.sock --rm -ti --net host quay.io/kairos/auroraboot --set container_image=docker://quay.io/kairos/rockylinux:9-core-amd64-generic-v2.4.2

This command will:

  • Use the image in the docker daemon running in the local host to boot it over network
  • Create a custom ISO with the cloud config attached to drive automated installations
  • Provision Kairos from network, with the same settings

Pulling without docker

If you don't have a running docker daemon, Auroraboot can also pull directly from remotes, for instance:

docker run --rm -ti --net host quay.io/kairos/auroraboot --set container_image=quay.io/kairos/rockylinux:9-core-amd64-generic-v2.4.2

This command will:

  • Pull an image remotely to boot it over network
  • Create a custom ISO with the cloud config attached to drive automated installations
  • Provision Kairos from network, with the same settings

Disable Netboot

To disable netboot, and allow only ISO generation (for offline usage), use --set disable_netboot=true:

docker run -v /var/run/docker.sock:/var/run/docker.sock --rm -ti --net host quay.io/kairos/auroraboot --set container_image=quay.io/kairos/rockylinux:9-core-amd64-generic-v2.4.2 --set disable_netboot=true

Configuration

AuroraBoot takes configuration settings either from the CLI arguments or from a YAML configuration file.

A configuration file can be for instance:

artifact_version: "v2.4.2"
release_version: "v2.4.2"
container_image: "..."
flavor: "rockylinux"
flavor_release: "9"
repository: "kairos-io/kairos"

cloud_config: |

Any field of the YAML file, excluding cloud_config can be configured with the --set argument in the CLI. And by passing "-" to --cloud-config, the cloud config can be passed from the STDIN, for example:

cat <<EOF | docker run --rm -i --net host quay.io/kairos/auroraboot \
                    --cloud-config - \
                    --set "container_image=quay.io/kairos/kairos-opensuse-leap:v1.5.1-k3sv1.21.14-k3s1"
#cloud-config

install:
 device: "auto"
 auto: true
 reboot: true

hostname: metal-bundle-test-{{ trunc 4 .MachineID }}

users:
- name: kairos
  # Change to your pass here
  passwd: kairos
  ssh_authorized_keys:
  # Replace with your github user and un-comment the line below:
  - github:mudler

k3s:
  enabled: true

# Specify the bundle to use
bundles:
- targets:
  - run://quay.io/kairos/community-bundles:system-upgrade-controller_latest
  - run://quay.io/kairos/community-bundles:cert-manager_latest
  - run://quay.io/kairos/community-bundles:kairos_latest

kairos:
  entangle:
    enable: true
EOF

Note

  • Specyfing a container_image takes precedence over the specified artifacts.