Progress Report 2022-09-05
By Ryan J. Price @ 2022-09-05 01:45:00 -0500 CDT; reading time 4mWooooo boy howdy, what a STRETCH it’s been. Lots of things in life & work have come up and kept me away from working on OSC, but I wanted to throw out something quick to let folks know that neither I nor the project are dead.
-
rhad
has been under a lot of recent work. It is now versionv0.3.0
. While most of the updates were a lot of internal refactoring that aren’t going to be very visible to users, the minor-version bump is becauserhad
now runsgo vet
as part of its Go linter runs. New feature, new minor version. Internal changes include a filesystem-based state tracking mechanism (previouslyrhad
used global vars to track run state), and decoupling of reusable components to a separate repo (discussed in the next bullet below).Additionally: some months ago, the concept of a
Rhadfile
was introduced to the codebase, which is a config-file format forrhad
executions. The first pass at this was targeting an INI format, for its simplicity & readability. As it turns out, parsing an INI file is… interesting, to say the least. So,Rhadfiles
are now TOML-formatted. TOML is a nice middle-ground format of being readable, writable, and parseable. Right now,Rhadfiles
only support providing a version number for your code tree modules, but more options will spring up as they become apparent.There’s also a helper script that runs the GitHub Super-Linter, and
rhad
following, as well as amake add-local-symlinks
target to symlink the script onto (what I hope is) your$PATH
. Try it out and let me know if you run into any notable bugs.The container image on GHCR reflects this in its
:latest
tag (I’ll get around to getting version-tagged builds done in GHA at some point). -
While working on
rhad
, I started to think that abstracting out some of the reusable Go functionality might be beneficial in the long run – so now we havea repo to house that
(currently it’s just logging functionality). This kind of felt like premature optimization, since nothing else exceptghostwriter
is using this shareable functionality, but it ended up teaching me an awful lot about how to work with dependency packages in Go that you control – like being able to override exported fields in child packages to disable log output for tests, set custom log prefixes without boilerplate, etc. Seeing it all come together was a cool feeling.
And now for the parts that I haven’t touched in long enough that I forget most of the finer details:
-
The
osc-infra
bootstrapper is almost ready to support AWS! we’re using Terraform Provisioners like sinners. It’s neat. Also, as mentioned in the last postosc-infra
is now under tagged releases, and the most recent version is now v0.2.0. -
The
local-vm
bootstrapper has been refactored to not build separate images for ever ysingle subsystem, and just run provision calls at runtime. This makes the OSC cluster way faster to bootstrap, saves on disk space since there’s no persistent storage of other images, etc. This also came along with a number of other cleanup changes while I was crawling around in the codebase, e.g. theimgbuilder
subsystem is now namedbaseimg
. -
Previously, when setting up a
redis
service ondatastore
, I must have stumbled onto a docs page that told readers that the ideal way to installredis
was to compile it from source, and not use something like an APT repo. I’m not sure what I found, or if something changed, butredis
is now installed via an APT repo, and it works fine:shrug:
-
configmgmt
had a Salt block that added a swapfile to cluster nodes, and that block was commented out. I don’t recall why it was commented out, but now it’s not, and is working as expected. All nodes now have a swapfile (insert Oprah “you get a car” meme here).
Like I said above, this isn’t a massive update, nor is it super clean, but posting all this to say that I’ve not disappeared, nor stopped working on OSC. Life, uh, finds a way (to get in the way).
<-- Subscribe for updates!