-
Notifications
You must be signed in to change notification settings - Fork 9
Software
The OpenCHAMI project contains a collection of software built to discover, manage, and provision nodes. This sections contains a brief introduction and user guide to quickly get you started with each tool or service.
- Magellan - Redfish-based tool for automatic node discovery and firmware management
- State Management Database (SMD) - Compute Node Inventory Daemon with support for ad-hoc group
- Boot Script Service (BSS) - Automatic boot script generation for diskless/diskful HPC Compute Nodes
- Image Builder - Tooling for creating SquashFS filesystems for remote booting HPC Nodes
- Cloud-Init Server - Automatic generation of cloud-init payloads with optional machine identity and optional transport layer security through WireGuard
- CoreSMD - CoreDHCP plugin for autmatically updating the DHCP configuration based on information from the rest of OpenCHAMI
- OpenCHAMI Client (ochami) - A frontend tool that abstracts interactions with OpenCHAMI services
- Step-CA - ACME certificate authority designed to be run as a microservice
- Haproxy - Reverse proxy for allowing all microservices to be accessible through a single http(s) host
- Ory Hydra - OIDC provider to use site identity for authorization within OpenCHAMI
- Postgresql - Database persistence for services that need it
We can use CLI tools like magellan for dynamic discovery using Redfish.
Some of the features include:
- Scanning IPv4 addresses for Redfish devices
- Attempts to read inventory
- Write to flat files
- Manages BMC secret credentials securely
Here's a quick rundown how to use magellan:
- Perform a scan on a network
- Add BMC credentials to secret store
- Collect inventory data from BMCs
- Store inventory data in SMD
More information about the tool can be found here.
This is a fork from the original service inherited from CSM to manage inventory. Some features have been modified for SMD to work with OpenCHAMI, such as the inclusion of JWT verification for authorization and optionally enabling the internal discovery feature.
The OpenCHAMI version of SMD can be found here.
Like SMD, this service is a fork inherited from CSM for managing boot scripts. This service generates custom iPXE scripts and allows specifying kernel, initramfs, and kernel cmdline args. BSS must read instance details from SMD and can inject per-instance information like spire tokens.
Also like SMD, the OpenCHAMI fork allows protecting API endpoints with JWT verification. When making requests to modify boot parameters, a JWT must be supplied in the request header.
The OpenCHAMI version of BSS can be found here.
This is a simple Python wrapper around the buildah CLI. The tool uses YAML config files to define image recipes. Images are built to be OCI compatible or SquashFS formats. Image layers can be reused as parents to build new images and served using S3 buckets.
The main repository with examples can be found here
The cloud-init-server is a HPC-centric metadata server built from the ground up for post-boot configuration. It uses SMD groups to decide which configurations to send to each node. The cloud-init server is also capable of establishing a WireGuard VPN to protect traffic to and from nodes.
The server is built to work in conjunction with the upstream cloud-init client by Canonical.
The server code can be found here.
This is a plugin for CoreDHCP that pulls MAC addresses, IP addresses, and name information from SMD. Needs more information.
The plugin can be found here.
The ochami CLI provides a frontend for interacting with OpenCHAMI services and simplifies most operations that would normally be peformed with curl. It contains a wealth of documentation in its man pages for. It makes managing a collection of node clusters simple and adds conveniences designed specifically for OpenCHAMI, such as:
- static ("fake") hardware discovery
- configuring boot parameters
- set cloud-init metadata
- manage system hardware inventory
Documentation about the ochami CLI can be found here.