Het installeren van Linux (Desktop) op een nieuwe machine kan variëren van snel tot tijdrovend, afhankelijk van je configuratiebehoeften. Na veel geëxperimenteerd te hebben met verschillende Linux-distro’s, desktopomgevingen, en terminalemulators, ben ik uiteindelijk tot een ideale set-up gekomen die ik steeds opnieuw wil gebruiken (famous last words). Het opnieuw instellen van alle configuratiebestanden in ~/.config
(dotfiles) en het installeren van alle benodigde pakketten kostte me veel tijd. Daarom zocht ik naar een oplossing.
In eerste instantie gebruikte ik Stow om symlinks voor mijn dotfiles te beheren, maar ik wilde verder gaan en meer automatiseren. Na wat onderzoek ontdekte ik Ansible: een open-source tool voor automatisering die configuratiebeheer en systeeminstellingen vereenvoudigt. Het werkt zonder extra software op de doelmachines, maakt gebruik van SSH, en schrijft configuraties in leesbare YAML-bestanden.
Hoewel Ansible meestal wordt gebruikt voor serverbeheer, besloot ik het ook lokaal op mijn desktop te gebruiken. Dit bespaart me een hoop handmatig werk bij het installeren van een nieuwe machine of het herstellen van mijn configuratie.
In mijn Ansible-playbook definieer ik:
- De benodigde packages
- Locaties voor configuratiebestanden
- Services die geactiveerd of gedeactiveerd moeten worden
- Systeeminstellingen die aangepast moeten worden
Het mooie van Ansible is dat het idempotent is: het maakt alleen de noodzakelijke aanpassingen bij het uitvoeren van het playbook (dus je kunt aangeven wanneer iets niet moet worden uitgevoerd, zodat er geen acties dubbel worden uitgevoerd). Hierdoor kan ik mijn setup snel herstellen, zonder zorgen over onverwachte resultaten.
Mijn repository bevat verschillende rollen voor diverse aspecten van mijn setup, van het installeren van pakketten tot het configureren van mijn favoriete desktopomgevingen zoals Hyprland, Sway, i3, en Cinnamon. Mijn Ansible-playbook ondersteunt zowel Debian als Arch Linux, afhankelijk van mijn behoefte aan stabiliteit of de nieuwste features.
Omdat Ansible bepaalde dependencies zoals Python nodig heeft, heb ik een script geschreven om deze eerst te installeren. Verder gebruik ik bijvoorbeeld Bitwarden voor mijn wachtwoordbeheer, wat ik ook integreer in mijn playbook.
Dit project bespaart me uren werk en maakt het mogelijk om binnen een uur een nieuwe machine klaar te zetten (exclusief inloggen op accounts). Natuurlijk blijft het aan project wat nooit af is, want als ik iets nieuws toe wil voegen of een verandering maak ik mijn configuratiebestanden, commit ik deze naar de Dotfiles repository.
De link naar de repository vind je bovenaan de pagina.
Heb je feedback of vragen over dit project? Of ben je op zoek naar hulp bij softwareontwikkeling? Neem gerust contact op