Rabbit Launch: Loading up the NUC cluster with a usable operating system

As you saw in my 3D Printing series, after years of pondering a 3D printer, I was finally inspired to buy one when a pile of clusters came up on eBay from the defunct rabb.it video streaming service. In this series, I’ll take you through turning a rabbit door into some useful computing resources.

You can do something similar even after the clusters are sold out; a lot of people have probably bought the clusters and ended up not using them, so you’ll see boards on eBay or local marketplaces… or you can adjust the plans here to other models.

The previous installment, Rabbit Reorganization, can be found here. Stay tuned for more coverage.

Update December 2021: This post languished in the drafts folder for about a year. I’ve updated links, and I’ll be reporting on some changes since the October 2020 launch of this cluster soon.

Let’s NUC this cluster out

  1. Install memory, SATA cable, and SSD
  2. Upgrade BIOS and set some annoying settings
  3. Install your operating system
  4. Set up central control

Install memory, SATA cable, and SSD

This is the least interesting part of the process, but you’ll need to do it before you can install an OS.

Start by loading the SODIMM of your choice onto the board. If you’re using an SSD like I am, you’ll connect the SATA cable to the black SATA connector next to the front USB stack, and the power cable to the beige connector perpendicular to the SATA connector. If you’re using a standard SD card, plug it into the SD slot to the right (as shown with the MAC address label). If you’re going with netboot (local storage? where we’re going we don’t need local storage!), just connect your network cable.

Upgrade BIOS and set some annoying settings

I created a bootable FreeDOS USB drive with Rufus, a common free software product used to create bootable USB media from ISOs (think Linux, Windows, etc). From there, we get the latest BIOS from Intel’s Download Center and place the file on the bootable drive. (Further BIOS instructions available on Intel Support.)

As of December 2021, 0079 is the latest BIOS, released April 20, 2020. You’ll need to search for NUC5PPYH even though the board’s model is PPYB.

Connect a monitor and keyboard, plug in the bootable drive, and apply power (or just reset the board). Use the F7 key to go into onboard flash update and load the BIOS file from the flash drive, or choose to boot from the flash drive and use the DOS-style flasher from there.

When you’ve done the upgrade and the system has rebooted, go into the BIOS with the F2 key and choose BIOS default values. Then go into the menus to enable all the USB ports (for some reason the default is to enable ports 1-3, leaving physical port 4 and header ports 5-6 disabled) as well as the SATA port if you are using that for storage. I’d also check the boot order (move net boot down in preference or disable outright if you don’t plan to use it). You can choose other settings as desired, and then press F10 to save and reboot.

Install your operating system

The easiest way to roll out the NUC side of the door would be to netboot an installation infrastructure like Cobbler. One of the first things I did when I went to work for the Mouse 10 years ago was setting up Cobbler for a deployment of RHEL 5.5.

Sure enough, Cobbler is still a thing, with very recent updates. I was able to get partway there this time and then, after several dozen runs to the garage and back to power cycle nodes, I gave up and installed from local media.

For CentOS 8, I did a manual install booting from a Rufus-created USB drive, with the SSD installed. I configured my storage and network options by hand, as well as user and root credentials. This left an “anaconda.ks” kickstart file on the installed system, which I copied to a second flash drive.

For the additional systems, I plugged both the CentOS 8 installer and the drive with the kickstart file into the NUCs and booted from USB. I ran into some strange storage issues with the drive not being blank, despite having chosen the kickstart option. Ideally, you would boot from the USB installer, it would find your kickstart config, and just roll out the software without intervention from there.

After that, if your DHCP server doesn’t assign hostnames you like, you can go in and set hostnames with hostnamectl or the like.

Set up central control

If you use a configuration management platform like Ansible, Puppet, Chef, cfengine, or the like, you’ll want to set those up at this point.

I’ve gone with the lightweight method so far, with shared SSH keys from a management host (an Intel NUC with CentOS on it, originally intended to be the cobbler server).

Use ssh-keygen to create your key files, and then ssh-copy-id can be used to push out the keys to your hosts. Then look into a more manageable option.

Where do we go from here?

As I finish this post in December 2021, a year after the original build, I’m looking at going back and making a few changes to the cluster to bring it up as a Kubernetes platform.

With the demise of CentOS as many of us know it, I’m planning to replace the installed OSes with Ubuntu LTS. I’m planning to test out some cryptocurrency cpu-based mining, and run Kubernetes platform(s) on it as well, and bring my second door up to speed (the RAM has been sitting in a box in the living room for a year now).

There’s a chance I’ll even do some lightweight Chia farming, using either bus-powered USB hard drives or some of the extra power connectors from the fused expanders for standard Seagate externals.

For those of you who have bought and built up these doors, what did you do with them? Feel free to share details and blog post links in the comments. I’ll put interesting ones into the body of this post as I see them.

Money Pit: 3D Printing Part 3 – OctoPrint and OctoPi

This is one topic in a series of what I’m calling “money pit” projects. To be fair, it’ll be money and time pit topics, and nothing that you’d really have to get a second mortgage on your house to do… but things always get a bit out of hand.

This project is the 3D Printing project. Expect it to be an ongoing series, and I’m hoping to have some friends join the effort and offer their feedback as well. Links and prices are accurate as of November 2020, and may get updated in the future… but don’t count on it.

See the previous parts for the lead-in to this project. From here we’ll get into the enhancements and early printing.

Octopi / OctoPrint

The first day or two, I was running out to the garage to check on prints, and shuttling the included 8GB MicroSD card back and forth to load print files onto it. Since the only storage the printer has is this MicroSD card, I couldn’t add files during a print run, and it got somewhat tiring.

Enter OctoPrint and OctoPi.

OctoPrint is an open-source management program and web front-end for many/most 3D printers. It communicates with the printer over a USB cable. It can be installed on a Linux, Windows, or MacOS computer. However, you might not want to dedicate a full-sized computer to this task.

OctoPi is a Raspbian (Raspberry Pi Debian image) based distribution with Octoprint and the video streamer software included. you just need a Pi 3B or later board (and case and power supply) and an SD card with OctoPi installed. Older boards will work, but with the camera option or other intense plugins (like gcode viewers) you won’t like it according to the folks behind OctoPrint and OctoPi. Continue reading

Money Pit: A quick sidebar on my 3D printing (mis-)adventure

You’ve seen the first two parts of my 3D printing series, and I promised part three in the near future.

I decided to postpone the third part a little bit, in order to share a cautionary tale and some printer gore with you. I’m hoping this will be a one-time error, but if you’re like me, you might not think it’s so bad until it shuts down your printing operation for a week or two and potentially costs you $30+ in replacement parts.

First, the gore

Second, the TLDR

(tl;dr means too long;didn’t read. However, I hope you’ll read on.)

Continue reading

Money Pit: 3D Printing Part 2 – First Round of Enhancements

This is one topic in a series of what I’m calling “money pit” projects. To be fair, it’ll be money and time pit topics, and nothing that you’d really have to get a second mortgage on your house to do… but things always get a bit out of hand.

This project is the 3D Printing project. Expect it to be an ongoing series, and I’m hoping to have some friends join the effort and offer their feedback as well.

See the previous part (The Back Story, The Rationale, and The Assembly) for the lead-in to this project. From here we’ll get into the enhancements and early printing.

Our first round of enhancements include:

  • Power protection
  • Metal extruder and printed filament guide
  • PEI print bed
  • Upgraded Bowden tubing

I mentioned OctoPi / OctoPrint in the first installment, so I’ll leave the details out this time other than to say you really should set one of these up. Let me know in the comments if you’d like more details in a future post. 

Continue reading

Money Pit: 3D Printing Part 1 – The Back Story, The Rationale, and The Assembly

This is one topic in a series of what I’m calling “money pit” projects. To be fair, it’ll be money and time pit topics, and nothing that you’d really have to get a second mortgage on your house to do… but things always get a bit out of hand.

This project is the 3D Printing project. The second part is available at First Round of Enhancements and part 3 should be out within a week. 

The Back Story

It all goes back to five or so years ago, when I bought a couple of Banana Pro single board computers from LeMaker in France.The Banana Pro was a Raspberry Pi-inspired board, but with gigabit Ethernet and external SATA on board. Great idea, but they didn’t sell as much as the RPi, so the accessory market was a lot lighter. I think there were 4 cases I found in the past 5 years, many of which were not readily available in the US.

I did order a few cases from China that had a section for the SATA drive, and stocked up on cables for the SATA drives. But I wasn’t too happy with what was out there.I found some of the 3D printer sites where people had built some cases, and thought “someday I’ll get a printer and make some cases.” I said that about every year for 4 years.

Then earlier this year, some more usable cluster kits came onto the used market from the now-defunct rabb.it startup. By “some,” I mean about a thousand of them. (Click on the photo below if you want to buy one of the kits yourself. It is an eBay partner network link but I have no association with the seller other than as a buyer of one cluster kit so far.)Single Board Computer Array with Intel NUC5PPYH and NVIDIA Jetson TK1They each contain ten NUC5PPYB quad-core pentium NUC machines and five NVIDIA Jetson TK1 dev boards. I pondered it for several months (not as long as the printer), finally bought one, and it showed up a week later. (I’ll write more about that project separately, and you can read my friend Stephen Foskett’s Pack Rat series about the rabb.it clusters here.)

About the same time, I broke down and bought a Creality Ender 3 Pro printer from my local geek shop, Central Computers. Central also stocks the Creality-branded filament for $20 per 1kg roll, and they’re about four miles from home. You can also buy directly from Creality, or choose some sellers on Amazon like SainsmartContinue reading