Show all posts

Introducing Marvin

Image CC-BY-SA John Greenaway

Image CC-BY-SA John Greenaway

At the start of the year we spent some time on behind the scenes work. We had a long overdue software upgrade that we needed to perform on our main server. At the same time we took the opportunity to improve how we maintain the systems to run the tools we use for P2PU.

Maintaining a server requires a lot of work. Someone needs to know what software is required, then install and update the software in questions, edit configuration files, remember what services to stop and start again, pick good passwords and remember them, etc!

Instead of having someone slaving away at a command line and trying remember what to do each time, we decided to automate the process. It is almost like writing down a recipe and handing it to a robotic cook with all the ingredients!

We named our robotic cook Marvin, after Marvin the Paranoid Android from the “Hitchhikers Guide to the Galaxy”. Almost everything that is needed to get P2PU up and running can be found in this github repository.

You may stop reading at this point if you wish to skip the technical details and incomprehensible abbreviations 🙂

We chose to use Ansible to implement Marvin. Ansible uses YAML configuration files called playbooks to describe the tasks needed to setup and configure a server. These tasks are then executed over SSH on the remote host. The advantage of this is that it’s easy to bootstrap a system – you just need to know what operating system you are targeting and setup SSH access.

The Marvin repository contains the playbooks to setup lernanta running at, badges running at and Etherpad Lite running at

There is still potential to improve and better organize these playbooks. If you would like to give them a test drive, you can install Ansible, setup a virtual machine and run the playbooks! See the repository for more instructions.

Leave a Reply

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Show all posts