Testing of the academic desktop playbook
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Taha Ahmed 79e03cf7fb Added two more roles 6 months ago
group_vars Forgot to include dependency python3 role. Fixed. 6 months ago
roles Added two more roles 6 months ago
templates First test with minimal set of roles 6 months ago
.gitignore First test with minimal set of roles 6 months ago
.gitmodules Added two more roles 6 months ago
LICENSE First test with minimal set of roles 6 months ago
README.md Test role swap (forgot to add the submodule) 6 months ago
ansible.cfg ansible-pull failed with "Could not match supplied host pattern" 6 months ago
hosts.yml Test role swap 6 months ago
local.yml Added two more roles 6 months ago

README.md

Ansible playbook to provision your academic desktop

At present this playbook supports only Ubuntu. Please help me extend support to other Debian and Linux flavours by contributing issues or pull requests.

Start by flashing Ubuntu Server 22.04.4 Live ISO image to a USB stick (for example, using balenaEtcher) and use the installer to install the default Ubuntu Server OS on your computer (setup the disk however you like).

Getting started

You have a freshly installed OS. Now we will install and configure your workstation using Ansible in pull mode from this repo.

First, install Ansible on your machine (to do that we first install pip, then use that to install ansible):

$ sudo apt install python3-pip
$ sudo python3 -m pip install ansible jmespath

Note that this installs ansible and its related binaries in /usr/local/bin/. We do it this way to avoid messing with PATH or virtual environments at this point.

We also installed jmespath which is required by the json_query filter which is used in some tasks of this playbook.

ansible-pull pulls a playbook from a remote repo and executes it on the host.

$ ansible-pull -U https://codeberg.org/ansible/playbook-workstation --ask-become-pass

The warning about Could not match supplied host pattern can safely be disregarded.

Why zhutop? The reason is not very creative, it is simply a portmanteau of the name of my academic advisor (whose desktop was the first host configured using this playbook), and desktop.

Working with roles (git submodules)

Add a new role as a git submodule (standing in the playbook root):

$ git submodule add https://codeberg.org/ansible/dotfiles.git roles/dotfiles

Update all the roles from their respective remotes:

$ git submodule foreach git fetch
$ git submodule foreach git pull origin main

Installing Ansible from pip

Ansible pull

Ansible inventory