layout: true
--- class: center, middle .logo[ ![Grendel](logo-lg.png) ] ### Bare Metal Provisioning System for High Performance Computing Andrew E. Bruno • Salvatore J. Guercio • Dori Sajdak Tony Kew • Matthew D. Jones --- ## About Us .mainimg[ ![CCR Overview](about-ccr-overview.png) ] --- ## CCR Resources .mainimg[ ![CCR Resources](about-ccr-systems.png) ] --- class: center, middle ## What is Grendel? ### Bare metal provisioning system specifically tailored to High Performance Computing (HPC) Linux clusters --- class: center, middle ## Motivation ### HPC clusters are challenging to operate in large heterogeneous environments. We wanted an easy way to manage operating system installs across thousands of nodes. --- class: center, middle ## Project Goal ### Grendel aims to be a modern, easy to use provisioning system for netbooting a rack of servers with minimal fuss --- # 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 - Rest API - Single binary --- class: center, middle ## What does it do? --- .center.mainimg[ ![Grendel Overview](pxe.png) ] --- class: center, middle ## How to install Grendel? --- ## Installing Grendel Written in Go. Shipped as single binary.
https://github.com/ubccr/grendel/releases ```bash $ tar xzvf grendel-0.0.4-0-g18ef325-linux-amd64.tar.gz grendel-0.0.4-0-g18ef325-linux-amd64/ grendel-0.0.4-0-g18ef325-linux-amd64/grendel grendel-0.0.4-0-g18ef325-linux-amd64/grendel.toml.sample grendel-0.0.4-0-g18ef325-linux-amd64/README.md grendel-0.0.4-0-g18ef325-linux-amd64/AUTHORS.md grendel-0.0.4-0-g18ef325-linux-amd64/CHANGELOG.md grendel-0.0.4-0-g18ef325-linux-amd64/LICENSE grendel-0.0.4-0-g18ef325-linux-amd64/NOTICE $ cd grendel-0.0.4-0-g18ef325-linux-amd64 $ ./grendel --version grendel version 0.0.4-0-g18ef325 ``` --- ## How to run Grendel? ```bash $ 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 ``` --- class: center, middle ## Grendel can PXE boot any linux kernel and initrd --- ## PXE Boot Linux Installations - Stateful (diskful) - Anaconda Kickstart - DebianInstaller Preseed - Stateless (diskless) - LiveOS squashfs - kernel + initramfs / initrd - Root filesystem via NFS (nfsroot) --- ## Building LiveOS Images Build custom LiveOS images for use with Grendel. Uses mkosi.
https://github.com/ubccr/grendel-images ```bash # Build generic Ubuntu Focal Fossa image $ sudo mkosi --default=./mkosi.files/mkosi.ubuntu-focal mkosi.output/ubuntu-focal-vmlinuz mkosi.output/ubuntu-focal-initramfs.img mkosi.output/ubuntu-focal-squashfs.img ``` Configure boot image in Grendel ```json { "name": "ubuntu-focal-live", "kernel": "ubuntu-focal-vmlinuz", "initrd": [ "ubuntu-focal-initramfs.img" ], "liveimg": "ubuntu-focal-squashfs.img", "cmdline": "root=live:$liveimg BOOTIF=$mac rd.neednet=1 ip=dhcp" } ``` --- ## Configure kickstart images Grendel ships with kickstart template which uses liveimg: ```bash install liveimg --url="{{ .baseuri }}/boot/file/liveimg?token={{.token}}" lang en_US.UTF-8 selinux --disabled keyboard us timezone --utc America/New_York skipx ``` Configure boot image for kickstarting: ```json { "name": "centos7", "kernel": "/var/grendel/images/centos7-vmlinuz", "initrd": [ "/var/grendel/images/centos7-initrd.img" ], "liveimg": "/var/grendel/images/compute-node-squashfs.img", "cmdline": "BOOTIF=`$mac` ks=`$kickstart` inst.stage2=`$repo`/centos7" } ``` --- ## Add Hosts to provision with Grendel ```json [ { "name": "cpn-d13-08", "interfaces": [ { "mac": "41:69:AE:E6:61:06", "ip": "10.129.30.36", "fqdn": "bmc-d13-08.compute.ccr.buffalo.edu", "bmc": true }, { "mac": "41:69:AE:E6:19:07", "ip": "10.65.30.12", "fqdn": "cpn-d13-08.compute.ccr.buffalo.edu", } ], "provision": true, "boot_image": "ubuntu-focal-live" } ] ``` --- #### Grendel Demo
--- class: center ## Where to find us?
Documentation https://grendel.readthedocs.io/en/latest/
Source code https://github.com/ubccr/grendel
Building OS Images https://github.com/ubccr/grendel-images --- class: center, middle ## Thank you! ### Questions?