Weekly Journal 128 - DevOps, Infrastructure as Code, Linux

DevOps Pipelines

I’ve been looking at Dagger as new player in the build runner/continuous integration tool space. I think they have an interesting product, but like many recent developer tools they are using an open core model. While the core engine and SDKs are open source, the supporting services needed to make it work beyond running on a single host are proprietary SaaS services. Plus, this project was started by the same person who started Docker, so I’m also expecting a rug pull at some point when they’ve achieved critical mass and want to focus on company profits. I think this is a tool that I will pass on for now. For me, the cons greatly outweigh the pros.

Future of Infrastructure as Code

I’ve been thinking a lot about infrastructure as code (IaC) thanks to some challenges we’ve been experiencing at work. We’ve had various IaC languages and tools for over a decade now, but it doesn’t feel like we’ve made much progress since the early days. Declarative languages are interesting in that they allow you to specify what the state of a resource should look like, but there aren’t any really good tools for testing infrastructure code managing large IaC repositories, and performing standard operations patterns. It’s very easy over time to create an IaC configuration that works incrementally, but wouldn’t install from scratch due to circular dependencies and other complex state that the planning tools are unable to work with. Common operations patterns like blue/green or canary deployments have to be manually implemented by every user in the declarative language. The dynamic nature of something like a canary deployment doesn’t map well to a static, declarative language definition. These important details aren’t covered by the tools and are left as an exercise to the user to figure out.

I don’t have any answers to these challenges, other than to note there is a lot of opportunity to improve these tools.

Linux

I’ve been playing around with openSuse MicroOS as a Linux distribution for my Raspberry Pi systems. MicroOS, as the name implies, is a minimalist distribution designed for running containers. It looks promising as base operating system for building a self hosted container orchestration cluster. Currently I’m working on learning how the Combustion and Ignition tools work for bootstrapping a new system on first boot.

Last week I mentioned I tried out NixOS. While I wasn’t overly impressed with NixOS itself, I’m intrigued by the Nix package manager as a possible replacement for Ansible. I’m experimenting with other tools to help bootstrap my personal workstations, like when I purchase a new laptop or repave an old one. I’m fairly familiar with Ansible, but I’m interested in looking at alternatives that may fit my purpose better.