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.
-
rhadhas 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 becauserhadnow runsgo vetas part of its Go linter runs. New feature, new minor version. Internal changes include a filesystem-based state tracking mechanism (previouslyrhadused 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
Rhadfilewas introduced to the codebase, which is a config-file format forrhadexecutions. 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,Rhadfilesare now TOML-formatted. TOML is a nice middle-ground format of being readable, writable, and parseable. Right now,Rhadfilesonly 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
rhadfollowing, as well as amake add-local-symlinkstarget 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
:latesttag (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 exceptghostwriteris 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-infrabootstrapper is almost ready to support AWS! we’re using Terraform Provisioners like sinners. It’s neat. Also, as mentioned in the last postosc-infrais now under tagged releases, and the most recent version is now v0.2.0. -
The
local-vmbootstrapper 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. theimgbuildersubsystem is now namedbaseimg. -
Previously, when setting up a
redisservice ondatastore, I must have stumbled onto a docs page that told readers that the ideal way to installrediswas to compile it from source, and not use something like an APT repo. I’m not sure what I found, or if something changed, butredisis now installed via an APT repo, and it works fine:shrug: -
configmgmthad 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!