talk on conference website
Consfigurator is a system for declarative configuration management using Common Lisp. You can use it to configure hosts as root, deploy services as unprivileged users, build and deploy containers, install operating systems, produce disc images, and more. Some key advantages:
- Apply configuration by transparently starting up another Lisp image on the machine to be configured, so that you can use the full power of Common Lisp to inspect and control the host.
- Also define properties of hosts in a more restricted language, that of :POSIX properties, to configure machines, containers and user accounts where you canβt install Lisp. These properties can be applied using just an SSH or serial connection, but they can also be applied by remote Lisp images, enabling code reuse.
- Flexibly chain and nest methods of connecting to hosts. For example, you could have Consfigurator SSH to a host, sudo to root, start up Lisp, use the setns(2) system call to enter a Linux container, and then deploy a service. Secrets, and other prerequisite data, are properly passed along.
- Combine declarative semantics for defining hosts and services with a multiparadigmatic general-purpose programming language that wonβt get in your way.
Consfigurator is particularly well-suited for deploying Debian systems because it was written by an experienced DD. But moreover, I see Consfigurator as part of the project of bringing over to Debian the best ideas we find in contemporary alternatives to Debian-style package management, like the GNU Guix System and NixOS. Tools like Consfigurator and Propellor try to layer the power of declarative and reproducible configuration semantics on top of traditional, battle-tested UNIX system administration infrastructure like distro package managers, package archives and daemon configuration mechanisms, rather than seeking to replace any of those.
I'll share some of Consfigurator's unique features that might make administrators of Debian systems interested in using it, and explain how one of the project's goals is to get as much as possible out of all that existing distro policy-compliant work.