Description

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.

Declarative configuration management systems like Consfigurator and Propellor share a number of goals with projects like the GNU Guix System and NixOS. However, 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. Let’s get as much as we can out of all that existing distro policy-compliant work!

Most of the features described above are implemented; a few are works in progress.

Installation and usage

Please see the user’s manual, which includes a tutorial/quick start guide.

Source code

Discussion

There is a low-volume discussion list, shared with some other small free software projects: sgo-software-discuss. Please prepend [consfigurator] to the subject line of your e-mail. See CONTRIBUTING.rst, included in the source tree, for more information.

You can also ask questions and discuss Consfigurator in #consfigurator on server irc.oftc.net. Please prefer using the mailing list or IRC channel for questions, rather than e-mailing individuals.

Bug reports, patches etc.

Please see CONTRIBUTING.rst, included in the source tree, for information regarding the reporting of bugs and submission of patches/pull requests.

License

Copyright (C) 2020-2021 Sean Whitton

Consfigurator is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Consfigurator is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Consfigurator. If not, see <http://www.gnu.org/licenses/>.