lustre

package
v0.83.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 2, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package lustre is the reusable host component for the Lustre 2.15.6 integration lab. It owns the bootstrap shell scripts (embedded here) and exposes command constructors that model the two host roles:

  • Server (combined MGS+MDS+OSS on ldiskfs): ServerUserData. The server needs the Whamcloud patched kernel 4.18.0-553.27.1.el8_lustre for the ldiskfs OSD kmods, so it installs the kernel + a boot-time systemd oneshot (format/mount) and reboots via cloud-init user-data on first boot — before the framework's first SSH — so no Pulumi remote command is ever severed by the reboot.
  • Client (Lustre client + Datadog Agent): NewClientSetup mounts the filesystem over LNet tcp0 and grants dd-agent passwordless sudo to the Lustre CLIs, and NewLoad drives continuous fio I/O so the check's performance families are non-zero.

The scenario (scenarios/aws/integrations/lustre) imports this component and wires the constructors into its Pulumi program; the check conf.yaml stays scenario-owned.

Index

Constants

View Source
const (
	// DefaultFilesystemName is the Lustre filesystem name (fsname) created on the
	// server and mounted by the client.
	DefaultFilesystemName = "lustrefs"
	// DefaultLNetInterface is the network interface LNet is configured over.
	DefaultLNetInterface = "eth0"
	// DefaultClientMountpoint is where the client mounts the Lustre filesystem.
	DefaultClientMountpoint = "/mnt/lustre"
)

Default topology values for the Lustre lab. Callers may override them.

Variables

This section is empty.

Functions

func NewClientSetup

func NewClientSetup(e config.Env, host *remote.Host, fsname, iface, mountpoint, clientVersion, elPath string, serverNID pulumi.StringInput, opts ...pulumi.ResourceOption) (command.Command, error)

NewClientSetup installs the Lustre client kmod (no reboot), configures LNet, and mounts the server filesystem at mountpoint. serverNID is the server's LNet NID (e.g. "<ip>@tcp", typically a resolved Pulumi output). clientVersion selects the Whamcloud Lustre release (e.g. "2.15.6" or "2.16.1") and elPath selects the matching client repo path (e.g. "el8.10" or "el9.4"); together they form the repo baseurl that client_setup.sh installs from. The 2.16.x client RPMs exist only for el9.4, so a 2.16.1 client must be paired with an EL9.4 elPath/AMI.

func NewLoad

func NewLoad(e config.Env, host *remote.Host, mountpoint string, opts ...pulumi.ResourceOption) (command.Command, error)

NewLoad installs and starts a continuous I/O generator (systemd service) on the client that reads/writes the mounted Lustre filesystem, so the check's performance metric families (llite/osc/mdc bandwidth + IOPS, LNET traffic) are non-zero rather than only config/capacity coverage.

func ServerUserData

func ServerUserData(fsname, iface string) string

ServerUserData returns the EC2 cloud-init user-data that provisions the Lustre server on first boot: it installs the Whamcloud patched kernel + ldiskfs OSD kmods and a boot-time systemd oneshot that formats + mounts the targets, then reboots into the patched kernel — all before the framework's first SSH, so no Pulumi remote command is ever severed by the reboot. The client waits for the server (lctl ping + retry mount) from its own host, which never reboots.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL