Skip to main content

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).

VariableDefaultPurpose
INSTALL_RACORA_PLATFORMk3sk3s | kubernetes
INSTALL_RACORA_MODEserverk3s: 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_PROVISIONoffoff | 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_COREopen5gsthe 5G core provider (cores/): open5gs | external; on a k3s host racora installed, a server re-run and an uninstall default to the provider recorded at install time (/etc/racora/install.env)
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_CIDR10.45.0.0/16UE 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_URLhttps://gitlab.com/api/v4/projects/cognitive-network-solutions%2Fracora/packages/generic/racorarelease package host (GitLab generic package registry)
RACORA_OCI_CHARToci://registry.gitlab.com/cognitive-network-solutions/racora/charts/racorakubernetes platform: the chart source
RACORA_REGISTRYregistry.gitlab.com/cognitive-network-solutions/racorakubernetes 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).