GitLab Geo on Raspberry Pi 4s
While I am not averse to using VMs in my personal computers for hosting testing tools like my local office install of GitLab, I really wanted to create a lab with multiple computers and some persistence that would not rely on my PC being operational all the time. I tend to switch from my Desktop to my Laptop multiple times per day.
Having been inspired by the work of Jeff Geerling over the years and his immersive work with Raspberry Pis, I had something of a “why not” moment after the Pi 4B was released. When the Pi 4B was released we learned it had four ARM cores, could be had with 8G of RAM, and booting from SSD was solidly supported using USB. This particular combination had the resources needed to be a pretty solid test bed for what I had in mind.
I still had one more requirement, which was to run a native OS of the type I like to deploy to servers. Rasbian is awesome, and based on Debian, but I really wanted a native server OS on my testbeds. Just about everyone of significance in Linux distribution and package communities was getting into and supporting ARM as the arch ARM64 then. That included Ubuntu 20.04, which was what I decided to use. Fortunately (because it saves time) the Raspberry Pi OS installer also supports Ubuntu as an alternative OS. It required some changes at the time to boot properly to SSD on USB, but once sorted worked extremely well.
With some tweaking, I found it relatively straightforward to install GitLab onto my new Raspberry Pis. I ended up going with 512G USB boot drives, and keeping the SD Cards with my Pis set to boot first from USB. The SD cards have Rasbian installed with native tooling. This allows me to turn the Pis off, unplug the USB drives, restart the Pi, and boot into the SD to configure and update the firmware.