A minimal Linux environment setup using Ansible to handle configs and software packages.
The roles
contain groups of setup tasks that serve to document and manage
changes to our machine. Every role contains a README file that summarizes
its purpose, usage and provides hints. Most common roles are:
role | description |
---|---|
system | Base Linux system settings. |
flatpak | Flatpak application deployment framework and packages. |
gnome-shell | Gnome window manager configuration. |
vim | Configuration via unused/.vim. |
ruby | Ruby development stuff. |
kubernetes | Local kubernetes development and testing environment. |
podman | Container image development environment. |
minecraft | Linux client setup for Minecraft. |
To get some insights one might inspect the packages vars of system role or gnome file templates.
On a blank box install Ansible, build-tools, then run make system
.
$ make pre-setup # uses dnf to install ansible and build-tools
$ make setup # setup machine, install packages, place configurations, etc.
$ make update TAGS=ruby,vim # update roles ruby and vim
What the hack?
Yes, why should you setup a machine using yaml files but trust me, it totally makes sense. For several years I managed a lot of development environments and after a while I did no longer recognize the difference of installing smth via package manager or config file that triggers package manager, editing configs or editing config templates. Therefor you suffer from no disadvantage when Ansible manage your setup but many profits like versioning, reproducing, structure, documentation and transparency.
Does this run on any Linux box?
Although the configuration is partly prepared for, currently the system is only used and tested with a RedHat based Fedora Linux to automatically setup a development workstation. If you really want to run this thing on your favourite distribution, let me know, maybe we can take the challenge together.
Man, there is so much missing in your machine!
That's the point of a minimal setup. Fork it and adapt it to your needs.
System is setup, trash this thing now?
Nope, keep using it to make any changes to your systems. Ansible is clever and will check changes and run the specific commands. Take care for conflicts, if you adapt some Ansible managed file, you might end up with your changes getting overridden.