The official Fabfile for Freeside.
A FabFile is a configuration file for fabric a way of automatically deploying commands on many machines at once. If you'd like some software installed or a configuration changed on the Freeside machines, then it's the Fabfile in this repository that you'll want to edit! See the instructions below for more details.
We use Drone as our continuous integration server. On every push , it pulls it down and checks the configuration with a tool called Flake8, to ensure there aren't any syntactical errors etc. Then, if it's ok and the push was to the master
branch, it will automatically wake up the PCs in the Freeside lab, and deploy any updates to them.
Simply run the following sequence of commands:
git clone https://github.com/FreesideHull/Freeside-Fabfiles
cd Freeside-Fabfiles
virtualenv .venv
. ./.venv/bin/activate
pip3 install -r requirements.txt
Make sure you pay attention to the output, in case an error is thrown.
Using the fabric FabFile in this repository is easy. Here's how:
Run a task:
$ fab -H comma,seperated,hosts taskname
List tasks
$ fab -l
Example usage:
$ fab -H fs-desktop01 install.app.neovim
Running multiple tasks in a collection:
# Installs all desktop apps
$ source hosts
$ fab -H "$desktops" $(fab --complete | grep "desktop.install")
Want some software installing on the Freeside computers? You've come to the right place! Here's a simple guide on how to request software to be installed:
- Make sure you're logged into your GitHub account.
- Take a look at
fabfile/desktop/install.py
. - Press the edit button in the top-right.
- Figure out how to install the software you want on a standard Fedora machine.
- Add a new function to the Fabfile in the same vein that the existing ones that installs the software you want. We prefer it if the software is available through
dnf
, Fedora's official package manager. That way it stays up-to-date automatically! - Click Propose File Change at the bottom of the page and follow it through to submit a Pull Request for your changes.
- Take a look at
fabfile/desktop/__init__.py
. - Add a task to the
all()
function that calls your new install function. - Create a Pull Request for this as before.
- Once your pull requests are accepted, then your software will get installed automatically within a few minutes!