I like Ansible, but I’m tired of writing YAML when what I want to write is Python.
progfiguration
is an experimental system management package where you just write Python.
It’s so nice to use, I love working with it so much.
Just like psyopsOS,
it’s easy for one person to fit it in their head and understand the whole thing.
- GitHub: mrled/progfiguration
- Home page: https://pages.micahrl.com/progfiguration
Goals
- Configure systems by just writing Python code
- Extremely fast
- As few dependencies as possible
- Operating system independent (not the case currently)
- Easy for one person to understand completely
- Nodes can be configured without a centralized server, or even (if the configuration is written to do so) without network access at all
Features
- It’s just a Python package that you build the normal Python package way.
It can be installed in a venv.
- Because the Alpine Package Keeper can build Python packages very fast, that means it can also be an APK package. I use this to install it to the livecd filesystem in psyopsOS
- It’s designed to work with zipapp, which means that you can just copy the result and have Python run it directly, just like a standalone script. (What a useful part of the standard library!) This is even faster than APK and much faster than building a pip package (which is also supported).
- It has almost no dependencies. Currently, it just requires PyYAML, pytz, and requests.
- It can build itself as a zipapp, copy itself to a remote server, and run itself in a single command:
progfiguration deploy -n NODE apply
- It keeps track of age keys for each node,
which enables keeping encrypted secrets in the git repo.
- Nodes can only decrypt their own secrets