Automated set up of Fedora Workstation and Fedora Server using Ansible
The goal of this repository is to:
- keep all dotfiles and configurations in version control
- ensure system settings are reproducible across machines
- automate setup to the highest reasonable extent with minimal manual intervention
The automation is done using multiple Ansible playbooks, which are named according to the tasks they perform.
| Playbook | Description | Command |
|---|---|---|
| cleanup | Removes unused packages and fonts | make cleanup |
| customization | Customizes GNOME Shell, installs dotfiles, and some other settings | make customization |
| tools | Installs essential utilities | make tools |
| container | Installs Podman or Docker | make container |
| dev | Installs JDK, Node.js, Postman, and few IDEs and their settings | make dev |
| media | Installs media-related applications | make media |
| alternate | Installs Google Chrome, and optionally some other applications | make alternate |
| all | Runs all above playbooks | make all |
| server | Some setup required only for servers | make server |
Note
Check all available targets using make help.
-
Run the
inittarget. This creates a python virtual environmentPY-ANSIBLEwith the required dependencies.make init
-
Activate the virtual environment
PY-ANSIBLE.source .venv/PY-ANSIBLE/bin/activate -
To setup, lets say, dev tools, run below. This would install JDK, Maven, Node.js, Postman, and IDEs - VS Code, IntelliJ IDEA, and WebStorm - with their extensions/plugins installed and settings configured.
make dev
To setup everything what this repository offers, run:
make all
-
The programmatic way to check changes being done to your system is to run the playbooks with
--checkflag. Example:source .venv/PY-ANSIBLE/bin/activate ansible-playbook playbooks/cleanup.yaml --check -
Another way is to check the playbooks, roles, and group vars manually, which I find more reliable 😄
-
Run the
synctarget.make sync
-
And then commit the changes, eg:
git add . git commit -m "Sync" git push