The Installer
Generated at build time from the header of
install-racora.sh(the front door served at get.racora.io); edit the source, not this page.
Racora is a RAN platform that ships as a distribution. This script selects the
cluster platform, validates the host or cluster against it, and hands off to
the platform module (platforms/<name>/install.sh). Run it as a normal user;
every privileged step elevates per command through $SUDO.
k3s (default) — stand up k3s + the RAN on this host, join a worker, uninstall:
curl -sfL https://get.racora.io | sh -
curl -sfL https://get.racora.io | INSTALL_RACORA_VERSION=vX.Y.Z sh -
curl -sfL https://get.racora.io | INSTALL_RACORA_MODE=node INSTALL_RACORA_VERSION=vX.Y.Z K3S_URL=https://<control>:6443 K3S_TOKEN=<t> sh -
INSTALL_RACORA_ARTIFACT_PATH=/path/to/bundle sh install-racora.sh # offline bundle
kubernetes — lay the RAN onto a cluster you already run (helm, no host changes):
curl -sfL https://get.racora.io | INSTALL_RACORA_PLATFORM=kubernetes sh -
provision-rf — provision this host as an RF/DU node only (platform-independent):
curl -sfL https://get.racora.io | INSTALL_RACORA_MODE=provision-rf INSTALL_RACORA_VERSION=vX.Y.Z sh -
uninstall — scope follows ownership (the Uninstall page): ran | host | cluster
curl -sfL https://get.racora.io | INSTALL_RACORA_MODE=uninstall sh -
The copy served at get.racora.io is a bootstrapper: for a release install it
resolves the version, downloads that release's installer package
(racora-installer-<tag>.tar.gz: this script plus platforms/, node-provisioning/
and the core modules, checksum-verified) and runs it, so what runs on the host
is exactly the installer that shipped and was tested with that release. The
same script run from a checkout, an offline bundle or the persisted copy
(/opt/racora/installer) is already that tree and installs directly.
Environment
Every operator variable the front door and the platform modules read; the test, developer and internal hooks stay in the script's header. "—" means unset by default. Exit codes: 0 runs, 1 a fatal error (bad input), 2 refused (the platform or mode does not fit the host or cluster), 3 unsupported (not a platform module).
| Variable | Default | Purpose |
|---|---|---|
INSTALL_RACORA_PLATFORM | k3s | k3s | kubernetes |
INSTALL_RACORA_MODE | server | k3s: server | node | provision-rf | uninstall; kubernetes: attach (default: lay the RAN onto the cluster) | provision-rf | uninstall |
INSTALL_RACORA_UNINSTALL_SCOPE | — | ran | host | cluster; default = what racora installed here: cluster where racora installed k3s (servers AND workers), ran on attach. ran is refused on a worker (the RAN lives on the server) |
INSTALL_RACORA_VERSION | — | release tag; default = latest release (bundles need none) |
INSTALL_RACORA_ARTIFACT_PATH | — | offline bundle directory (k3s platform); alias RACORA_ARTIFACT_PATH |
INSTALL_RACORA_ARTIFACT_NO_IMAGES | — | 1: accept a bundle without the image archive (images then pull from a registry the cluster can reach) |
INSTALL_RACORA_PROVISION | off | off | check | ensure; node mode defaults to ensure. In server mode ensure on a host that is not rf-ready STARTS provisioning and exits (re-run once rf-ready); node mode joins by itself |
INSTALL_RACORA_GPU | — | provisioner pass-through (auto | on | off); node mode defaults to off |
INSTALL_RACORA_PRO_TOKEN, INSTALL_RACORA_ISOLCPUS, INSTALL_RACORA_FRONTHAUL, INSTALL_RACORA_PTP_MODE | — | provisioner pass-throughs (the node provisioner reference on the docs site) |
INSTALL_RACORA_CORE | open5gs | the 5G core provider (cores/ |
INSTALL_RACORA_AMF_ADDR | — | external only: the AMF the CU-CP dials (DNS name or IP the cluster reaches over SCTP); recorded on the k3s server and reused by a server re-run and an uninstall when not given |
INSTALL_RACORA_UE_CIDR | 10.45.0.0/16 | UE pool the core provider's host egress NAT masquerades (open5gs); must contain the open5gs chart's ueIpBase (k3s server only) |
INSTALL_RACORA_SKIP_VALIDATE | — | true: downgrade validator refusals (exit 2) to warnings |
RACORA_DRY_RUN | — | 1: resolve + validate statically, print the plan, exit 0 |
RACORA_ARTIFACT_URL | https://gitlab.com/api/v4/projects/cognitive-network-solutions%2Fracora/packages/generic/racora | release package host (GitLab generic package registry) |
RACORA_OCI_CHART | oci://registry.gitlab.com/cognitive-network-solutions/racora/charts/racora | kubernetes platform: the chart source |
RACORA_REGISTRY | registry.gitlab.com/cognitive-network-solutions/racora | kubernetes platform: the image registry every image is pulled from |
RACORA_HELM_EXTRA_ARGS | — | kubernetes platform: extra helm upgrade arguments (word-split), e.g. -f my-values.yaml |
RACORA_UNINSTALL_KEEP_CRD, RACORA_UNINSTALL_KEEP_DATA, RACORA_UNINSTALL_DRY_RUN | — | 1: the uninstall wrappers' --keep-crd / --keep-data / --dry-run, as env |
The k3s platform is amd64 only (the mirrored binaries). Every INSTALL_K3S_* / K3S_* variable of the upstream k3s installer still applies there (documented at the top of the k3s platform module) EXCEPT: INSTALL_K3S_VERSION is set from INSTALL_RACORA_VERSION (the racora tag addresses the mirrored binary), INSTALL_K3S_ARTIFACT_URL defaults to RACORA_ARTIFACT_URL, and INSTALL_K3S_CHANNEL / INSTALL_K3S_CHANNEL_URL are never consulted (the k3s version is the release's pin).