HashiDays Talks

systemd - The Good Parts

James Nugent

Engineering at Samsung Research

Ever since the release of systemd eight years ago, the now de-facto init system for Linux has courted controversy - derided by critics as being overly-complicated or insufficiently UNIX-like. Whilst there is room for claims of scope creep, given that systemd acts as a platform and API, in addition to a service manager. This criticism has led many operators and developers to discount systemd entirely as not worth learning, when in fact, it largely succeeds in the aim of "unifying the pointless differences between [Linux] distributions".

In this talk, we will walk through features both known and relatively unknown of the systemd service management components. We will look at how these features can be used in the construction of machine images perfectly suited to building self-assembling and self-healing systems with Packer and Terraform.

A thorough understanding of the primitives afforded by the operating system is an important step in building systems which do not have lock-in to a particular cloud or infrastructure provider. Through bootstrapping a production-grade Consul cluster, we'll look at how service dependency trees are built, how pre-execution and post-execution scripts are incorporated, how logging is managed, how notifying downstream dependencies of important events can be achieved, and how cgroups and namespaces - the building blocks of Linux containers - can be used as parts of service configurations without additional tools.