Skip to content

Ansible roles and Makefiles to configure my Ubuntu LTS based desktops

License

Notifications You must be signed in to change notification settings

jeroen-vankelecom/ansible-desktop

Β 
Β 

Repository files navigation

ansible-desktop

Test Lint Calendar Versioning

Ansible Playbook to configure my laptops and desktops

I care about not having to think too much about my setup between machines. Especially when I want to get right to work.

For that reason, it is very comfortable for me to have the same base configuration on each machine (look, feel, keyboard shortcuts, core software, etc.).

My journey to the current state of this repo

  • I found a cool bash script on the internet (I didn't understand most of it) 🀷
  • I modified cool bash script for my needs and it worked! πŸš€
  • I learned about Makefiles. πŸ˜„
  • I proceeded to do everything with Makefiles. 🀩🀩🀩
  • I got tired of running successive Make targets over and again 😐.
  • I used Ansible at work and decided to take a course to learn more about it. πŸ€“
  • I put off actually taking the plunge to use Ansible. πŸ•’πŸ••πŸ•˜πŸ•›
  • I finally took the plunge and decided to use Ansible for my configuration. βœ”οΈ

Calendar Versioning

This project adheres to Calendar Versioning, YY.0M.MICRO. This is similar to Ubuntu.

Note that I've iterated to this and it wasn't always calver.

Supported Ubuntu LTS Versions

I will support the LTS versions I use. There are no plans to support non-LTS versions.

LTS Last Supported Branch/Tag
Ubuntu 20.04 main
Ubuntu 18.04 2020.1.0

Ansible Galaxy Roles

There is broader LTS and Distribution support in the following roles:

Role Description
iancleary.docker Installs Docker and Docker-compose
iancleary.zsh Installs Zsh, oh-my-zsh plugin manager, and addes ~/.zshrc_aliases

Core Software


This isn't exactly the list of Ansible roles, but below is a list of what the repo helps install.

Application Base

  • Flatpak,
  • Snap,

AppImageLauncher

Application Launcher

  • ULauncher, A ctrl + spacebar productivity bar, Ulauncher is inspired by Alfred for macOS and similar semantic search tools that followed in its wake.

Backups

Chat Clients

  • Signal Desktop,
  • Slack,
  • Telegram,

Development Tooling

  • ansible,
  • docker,
  • docker-compose,
  • gh GitHub CLI
  • nodejs,
  • python3.8,
  • yarn
  • terraform
  • linode CLI
  • VSCode,

If you prefer a fully open source option, checkout VSCodium! Set "code_executable" to "/snap/bin/codium".

Dotfiles

  • yadm dotfile manager

Email

File Storage

  • Tresorit,

Games

  • Steam,

GNOME Configuration

The GNOME Ansible roles configure my GNOME personal preferences.

Music

  • Spotify,

Notes

  • cherrytree,
  • Standard Notes,

System Info

Terminal

Screenshots and GIFs

Flameshot keybinding to the Print Screen key using gsettings

  • Peek animated GIF screen recorder,

Text Editors

  • Sublime Text,

Utilities

Web Browsers

  • Chromium,
  • Firefox,

Documentation

Detailed documentation is hosted by Vercel at https://ansible-desktop.iancleary.me/.

Existing Machine

For a walk through of my process on existing machine, please visit https://ansible-desktop.iancleary.me/makefile.


New Machine Setup

For a new machine, I run the following command to set up my computer:

Please make sure you adjust your hostname as Ansible keys off this variable. I like to do this during the initial configuration of the machine.

wget -qO- \
https://github.com/iancleary/ansible-desktop/raw/main/run.sh | \
bash

This will prompt you for your sudo password for the bash script and then once later for ansible's "BECOME PASSWORD" prompt.

Voila! πŸŽ‰πŸŽ‰πŸŽ‰


Customization

If you want to edit the variables, hit CTRL + C at ansible's "BECOME PASSWORD" prompt.

The script created two extra files that ensure that the ansible-playbook will on your host name.

Note: Both files are intentionally not version controlled. This allows hostname specific group_vars relative to the playbook.

  • a private .inventory file
#.inventory
[$(hostname)]
127.0.0.1
  • a group_vars file
# group_vars/$(hostname)/all.yml
---
# You can copy and modify variables over from group_vars/all/*.yml

Then run make all

Voila (with your edits)! πŸš€πŸš€πŸš€


Changes

See CHANGELOG for history.


Authors

I benefited from the source work of others, see AUTHORS.md.

My choice to open source my work here is to share back with you.

About

Ansible roles and Makefiles to configure my Ubuntu LTS based desktops

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Makefile 48.6%
  • Jinja 30.5%
  • Shell 12.4%
  • Python 4.7%
  • JavaScript 3.8%