The Boot Orchestration Service (BOS) is responsible for booting, configuring, and shutting down collections of nodes. This is accomplished using BOS session templates and sessions.
BOS users create a BOS session template, and then create a BOS session, which applies an action to the session template. The available actions are boot, reboot, and shutdown. The session can be monitored to determine the status of the request.
For more information, see BOS Workflows.
BOS is made up of a number of different sub-services that combine to provide its functionality.
The API is the point of contact for the user and all other services that want to query or update BOS data. This includes other BOS sub-services, such as the operators and the BOS reporter.
For more information, see BOS API.
BOS data is stored in a Redis database.
For more information, see BOS Database.
BOS operators are always-running sub-services. They are each responsible for doing a single basic task, such as powering on nodes, discovering new nodes on the system, or initializing a new session.
For more information, see BOS Operators.
The BOS reporter is a sub-service that must be installed on all nodes managed by BOS. It is responsible for reporting the actual state of the node to BOS.
For more information, see BOS Reporter.
BOA was a feature of BOS v1 only. It was a Kubernetes job that was responsible for tracking all of the components in a BOS session and taking actions against them.
The source for BOA is located in the
Cray-HPE/boa open source GitHub repository.
The Cray CLI supports BOS commands, providing a more user friendly front-end for the BOS API.
The first CLI argument specifies the BOS version.
For ease of interactive CLI use, specifying the BOS version is optional; it defaults to v2.
However, explicitly specifying the version in scripts or documentation is highly recommended,
because the default BOS version for the CLI is subject to change.
For context-specific usage information, append --help to the CLI command. For example:
cray bos --helpcray bos v2 --helpcray bos sessions --helpcray bos v2 components list --help(ncn-mw#) API information, including the version, can be found with the following command:
cray bos list --format json
Example output:
{
"links": [
{
"href": "https://api-gw-service-nmn.local/apis/bos/",
"rel": "self"
},
{
"href": "https://api-gw-service-nmn.local/apis/bos/v2",
"rel": "versions"
}
],
"major": "2",
"minor": "48",
"patch": "2"
}
For more information, see BOS Commands Cheat Sheet.
BOS v1 is not present starting in CSM 1.6. See BOS v1 removal for more information.
There is only one supported API version for BOS – v2. Compared to BOS v1, BOS v2 takes a more flexible approach and relies on a number of permanent operators to guide components through state transitions in an independent manner. The BOS v2 session can be used to track progress of the operation, but there is no centralized Kubernetes pod in which the session resides. For more detailed information than is found on this page, see BOS API Versions.
BOS depends on each of the following services to complete its tasks:
The source code and Helm charts for BOS are located in the following open source GitHub repositories:
| Repository | Contents |
|---|---|
Cray-HPE/bos |
BOS API server, API specification, database, and operators. |
Cray-HPE/bos-reporter |
bos-reporter RPM. |
Cray-HPE/craycli |
The Cray CLI, including the BOS subcommands. |
Cray-HPE/cms-tools |
Health checks and utilities for several CSM services, including BOS. |