Ansible scripts for FRI classrooms
roles | ||
unattended_install | ||
vars | ||
linsetup.yml | ||
macsetup.yml | ||
README.md | ||
setup.yml | ||
winsetup.yml |
Using the ansible scripts
Ansible playbooks for deploying classroom computers. Run with something like:
ansible-playbook --user <local admin> -k -K -i inventory.yml setup.py
or, for Apple computers:
ansible-playbook --user <local admin> -k -K -i inventory.yml macsetup.py
How classroom computers are prepared at FRI
The computers are prepared as follows:
- Ask teachers to check their requirements.
- Fix ansible scripts according to the requirements.
- Set up a fresh Windows and Linux install on a VM, using files in unattended_install.
- Use ansible to deploy the software, fixing fresh bugs due to changes in the install processes along the way.
- Fix root filesystem UUIDs to what they were last year so the network-booted menu still works.
- Create partition table image and partition images using FRI Backup.
- Deploy the images on separate VMs - one for Linux, one for Windows.
- Have teachers check their software in the VMs, report any problems.
- Fix problems on the VMs.
- Create partition images for Windows on one VM, for Linux on the other.
- Deploy the images on a limited number of computers in the classrooms using FRI Backup.
- Test the newly deployed computers, fix identified problems on the VMs.
- Join the Linux VM into AD. One AD account is used for all computers.
- Deploy the partition tables and partitions to the classrooms using custom ansible scripts running FRI Backup and UDPCast.
- Join Windows into AD.
Immutable computers
Some pieces of modern software assume that a computer is only used by one user who has practically unlimited space in their home folder. Examples of such software are Android Studio, Visual Studio Code, Matlab, Windows Subsystem for Linux (WSUS) and others. Instead of trying to get the software to work, we might just give up and have everyone use the same account on each computer, then wipe all data after they log out / reboot.
Windows
We intend to use UWF.
Linux
We intend to use snapper.