All Projects → ubccr → grendel

ubccr / grendel

Licence: GPL-3.0 license
Bare Metal Provisioning system for HPC Linux clusters

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to grendel

Provision
Digital Rebar Provision is a simple and powerful Golang executable that provides a complete API-driven DHCP/PXE/TFTP provisioning system.
Stars: ✭ 252 (+620%)
Mutual labels:  provisioning, bare-metal
Stacki
Linux Cluster Builder - Bare Metal Red Hat & SUSE
Stars: ✭ 223 (+537.14%)
Mutual labels:  provisioning, bare-metal
Xcat Core
Code repo for xCAT core packages
Stars: ✭ 273 (+680%)
Mutual labels:  provisioning, bare-metal
luna
Provisioning tool for clusters
Stars: ✭ 58 (+65.71%)
Mutual labels:  hpc, provisioning
rackshift
RackShift 是开源的裸金属服务器管理平台,功能覆盖裸金属服务器的发现、带外管理、RAID 配置、固件更新、操作系统安装等。
Stars: ✭ 467 (+1234.29%)
Mutual labels:  provisioning, bare-metal
warewulf
Warewulf is a stateless and diskless container operating system provisioning system for large clusters of bare metal and/or virtual systems.
Stars: ✭ 90 (+157.14%)
Mutual labels:  hpc, provisioning
Gentoo Build
shell scripts that builds systemd based gentoo box for x86_64 platform
Stars: ✭ 24 (-31.43%)
Mutual labels:  provisioning, bare-metal
Openpbs
An HPC workload manager and job scheduler for desktops, clusters, and clouds.
Stars: ✭ 427 (+1120%)
Mutual labels:  hpc, provisioning
Fgci Ansible
🔬 Collection of the Finnish Grid and Cloud Infrastructure Ansible playbooks
Stars: ✭ 49 (+40%)
Mutual labels:  hpc, provisioning
seedbox
Baremetal CoreOS cluster provisioner with web UI
Stars: ✭ 23 (-34.29%)
Mutual labels:  provisioning, bare-metal
nerd
Your personal nerd that takes care of running jobs on the Nerdalize cloud
Stars: ✭ 15 (-57.14%)
Mutual labels:  hpc
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (-20%)
Mutual labels:  hpc
SmartSim
SmartSim Infrastructure Library.
Stars: ✭ 133 (+280%)
Mutual labels:  hpc
helix-sandbox
Middleware for secure IoT provisioning, access and control.
Stars: ✭ 23 (-34.29%)
Mutual labels:  provisioning
AdvanceOS
Tiny Operating System to emulate GBA on Raspberry Pi
Stars: ✭ 46 (+31.43%)
Mutual labels:  bare-metal
parallel
PARALLEL: Stata module for parallel computing
Stars: ✭ 97 (+177.14%)
Mutual labels:  hpc
forward
Port Forwarding Utility
Stars: ✭ 41 (+17.14%)
Mutual labels:  hpc
claw-compiler
CLAW Compiler for Performance Portability
Stars: ✭ 38 (+8.57%)
Mutual labels:  hpc
ansible-bootstrap-server
the bare essentials when you spin up a server
Stars: ✭ 14 (-60%)
Mutual labels:  provisioning
pxe-pilot
API and CLI to manage PXE configurations
Stars: ✭ 56 (+60%)
Mutual labels:  pxe-server

Grendel

Grendel - Bare Metal Provisioning for HPC

Documentation Status

Grendel is a fast, easy to use bare metal provisioning system for High Performance Computing (HPC) Linux clusters. Grendel simplifies the deployment and administration of physical compute clusters both large and small. It's developed by the University at Buffalo Center for Computational Research (CCR) with more than 20 years of experience in HPC. Grendel is under active development and currently runs CCR's production HPC clusters ranging from 200 to 1500 nodes.

Key Features

  • DHCP/PXE/TFTP provisioning
  • DNS forward and reverse resolution
  • Automatic host discovery
  • Diskful and Stateless (Live image) provisioning
  • BMC/iDRAC control via RedFish and IPMI
  • Authorized provisioning using Branca tokens
  • Rest API
  • Easy installation (single binary with no deps)

Project status

Grendel is under heavy development and any API's will likely change considerably before a more stable release is available. Use at your own risk. Feedback and pull requests are more than welcome!

Quickstart with QEMU/KVM

The following steps will show how to PXE boot a linux virtual machine using QEMU/KVM and install Flatcar linux using Grendel. A demo of installing and using Grendel can be found here.

Installation

To install Grendel download a copy of the binary here.

$ tar xvzf grendel-0.x.x-linux-amd64.tar.gz
$ cd grendel-0.x.x-linux-amd64/
$ ./grendel --help

Create a TAP device

$ sudo ip tuntap add name tap0 mode tap user ${LOGNAME}
$ sudo ip addr add 192.168.10.254/24 dev tap0
$ sudo ip link set up dev tap0

For RedHat/CentOS

$ sudo firewall-cmd --zone=trusted --change-interface=tap0

For Debian/Ubuntu

$ sudo ufw allow in on tap0

Create a boot Image file

$ wget http://stable.release.flatcar-linux.net/amd64-usr/current/flatcar_production_pxe_image.cpio.gz
$ wget http://stable.release.flatcar-linux.net/amd64-usr/current/flatcar_production_pxe.vmlinuz

Create the following JSON file image.json:

[{
    "name": "flatcar",
    "kernel": "flatcar_production_pxe.vmlinuz",
    "initrd": [
        "flatcar_production_pxe_image.cpio.gz"
    ],
    "cmdline": "flatcar.autologin"
}]

Create a host file

Create the following JSON file host.json:

[{
    "name": "tux01",
    "provision": true,
    "boot_image": "flatcar",
    "interfaces": [
        {
            "fqdn": "tux01.localhost",
            "ip": "192.168.10.12",
            "mac": "DE:AD:BE:EF:12:8C"
        }
    ]
}]

Start Grendel services

$ sudo ./grendel --verbose serve --hosts host.json --images image.json --listen 192.168.10.254

Note: The serve command requires root privileges to bind to lower level ports. If you don't want to run as root you can allow Grendel to bind to privileged with the following command:

$ sudo setcap CAP_NET_BIND_SERVICE,CAP_NET_RAW=+eip /path/to/grendel

PXE Boot the linux virtual machine

In another terminal window run the following commands:

$ qemu-system-x86_64 -m 2048 -boot n -device e1000,netdev=net0,mac=DE:AD:BE:EF:12:8C -netdev tap,id=net0,ifname=tap0,script=no

Hacking

Building Grendel requires Go v1.16 or greater. Building iPXE requires packages lzma-sdk-devel and xz-devel:

$ git clone --recursive https://github.com/ubccr/grendel
$ cd grendel/firmware
$ make build
$ make bindata
$ cd ..
$ go build .
$ ./grendel help
Bare Metal Provisioning for HPC

Usage:
  grendel [command]

Available Commands:
  bmc         Query BMC devices
  discover    Auto-discover commands
  help        Help about any command
  host        Host commands
  image       Boot Image commands
  serve       Run services

Flags:
  -c, --config string     config file
      --debug             Enable debug messages
      --endpoint string   Grendel API endpoint (default "grendel-api.socket")
  -h, --help              help for grendel
      --verbose           Enable verbose messages

Use "grendel [command] --help" for more information about a command.

Publications

  • Andrew E. Bruno, Salvatore J. Guercio, Doris Sajdak, Tony Kew, and Matthew D. Jones. 2020. Grendel: Bare Metal Provisioning System for High Performance Computing. In Practice and Experience in Advanced Research Computing (PEARC ’20). Association for Computing Machinery, New York, NY, USA, 13–18. DOI: https://doi.org/10.1145/3311790.3396637

  • PEARC ’20 Paper Presentation: video | slides

Acknowledgments

PXE booting is based on Pixiecore by Dave Anderson. DHCP implementation makes heavy use of this excellent packet library. DNS implementation uses this library. TFTP implementation uses this library. Backend database runs BuntDB. NodeSet/RangeSet algorithms ported from ClusterShell

License

Grendel is released under the GPLv3 license. See the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].