Set of Ansible playbooks to provision a Fedora machine with all my applications and settings.
Setup a new machine from scratch is always a very time consuming task. Last time I did it, it took an entire weekend to install everything.
And there is a high chance I forgot someting, that I not use everyday. Also as the Developer I install many tools directly from GitHub and so checking if for new versions is a very manual process, like going to GitHub, check latest release, download the binary and move it to the correct place.
What if most of this setup, can be automated? That´s where Ansible and this reposiory comes in.
- A machine running Fedora OS. This playbook was tested with Fedora 39, but it should work on other versions.
- GitHub personal access token. You can get one here.
- Initial system update.
- Install Dotfiles from my private dotfiles repository, using Yet Another Dotfiles Manager - yadm
- Install all my applications. Check APPLICATIONS.md for a detailed list.
To provision a new machine, open a terminal window and run the following commands:
export GITHUB_TOKEN=<my_github_token>
sudo dnf update && dnf install -y git
git clone https://github.com/brpaz/my-linux-setup
cd my-linux-setup
sudo chmod +x setup.sh
./setup.sh
Note When installing dotfiles you will be prompted for the "pgp" key to decrypt the secure files. Make sure to have it at hand.
Unfortunately not everything can be automated and some manual steps will be required after running this scripts.
The Ansible playbook syncs mostly of the dotfiles. Still, user data like Pictures, Music etc, must be restored manually from backup.
To do so, you can run the [scripts/restore_home.sh] script.
sudo chmod +x scripts/restore_home.sh
BACKUP_PATH=/path/to/home/backup scripts/restore_home.sh
This will rsync the most important folders like Documents
, Video
, Music
, Code
etc from the specified backup location.
- WebCatalog Desktop for Mac, Windows, Linux - WebCatalog
- script-kit/app
- Proxyman Proxyman - macOS, iOS, Windows and Linux
- heyman/heynote: A dedicated scratchpad for developers
- Immich
- ChatGPT
- Excalidraw | Hand-drawn look & feel • Collaborative • Secure
- Online FlowChart & Diagrams Editor - Mermaid Live Editor
- [] Execute Jetbrains toolbox and install the IDEs. (DataGrip, Goland, IDEA, PHPStorm, WebStorm, CLion, Android Studio).
- [] Open Chrome and Firefox browsers and login to start syncing all the extensions, bookmarks etc.
- [] Login into applications (Gnome Accounts, Spotify, etc).
- [] Configure Pika Backup
Most of the tasks are idenpotent and you can use this playbook to keep your system updated. This is useful, for example, to automatically update all the programs installed from GitHub, as the playbooks will try to fetch and install always the latest release.
You can execute a specific tag, by running:
TAG=node task run-tag
TAG=github task run-tag
- http://radeksprta.eu/automatically-setup-computer-ansible-playbook/
- http://blog.josephkahn.io/articles/ansible/
- https://github.com/Benoth/ansible-ubuntu
👤 Bruno Paz
- Website: brunopaz.dev
- Github: @brpaz
Copyright © 2019 Bruno Paz.
This project is MIT licensed.