Build Status

AAROC is DevOps

The mission of the Africa-Arabia Regional Operations Centre is to promote and support collective, coherent and sustainable interoperability of e-Infrastructures within the region and beyond, to peer infrastructures in the rest of the world; and to act as a point of coordination and support to computational resource providers in the region, in order to promote and develop regional scientific and technical collaboration.

The Africa-Arabia Regional Operations Centre (AAROC) is an e-Infrastructure collaboration with members across Africa and the Middle East. AAROC is an resource infrastructure provider to [], and has signed an Operating Level Agreement with EGI.


EGI provides several infrastructure services which enable interoperability :

  • GOCDB : The operations database, where all sites and services are defined. GOCDB provides a topology which is used by various other services, and is used to declare service states and downtimes.
  • Operations Portal : The dashboard for the Regional Operator on Duty
  • Accounting Portal : The accounting portal where usage by various communities is reported.

Software-Defined Infrastructure

Communicating and Collaborating.

We're on Slack. Come on over if you want to hang out and work with us. If you have something you want to help on, see The usual workflow for collaboration on Github is recommended. If you want to request documentation or guides, or would like to contrbute to the more 'meta' aspects, discuss these things with on the forum.

Development Status and Roadmap

You can see the development roadmap on the project milestones. Feel free to propose new milestones based on features you would like to see.

There is a development status board at, a snapshot of the current state is below.

Issues Identified Issues Diagnosed Issues in Progress Issues Ready



Quickstart guide for site administrators

This is the repository for the DevOps code which executes AAROC infrastructure. We support Ansible and Puppet. Site administrators have freedom of choice in managing the services at their site, as long as they


If you would like to use Ansible to deploy your site :

  1. Clone the repository's master branch : git clone
  2. Create create a new branch with your site name as defined in GOCDB : git branch <site-name>
  3. Propose the local site configuration : 4. Inventory. Contribute your inventory to to Ansible/inventories/inventory.<site-name>. If your playbooks are very site-specific, create a subdirectory in Ansible/sites for your site as declared in the GOCDB and work there.
    1. Variables. Create two variables files for your site in Ansible/group_vars :
      1. <site-name>, where <site-name> is the name of your site in the GOCDB (e.g. za-meraka). This will contain the site-specific variables, but not sensitive information.
      2. <site-name>-passwords (e.g. za-meraka-passwords) : This is the site-specific variables file containing sensitive information. It should be encrypted with ansible-vault before being committed : ansible-vault encrypt Ansible/group_vars/passwords-<site-name>.
    2. Send a pull request to the repository so that the configuration can be checked and verified.
  4. Create your <site-name>.yml playbook to deploy the services which you need at your site - use as many of the provided roles as you need.
  5. Run ansible : ansible-playbook -i inventories/inventory-<site-name> --ask-vault-pass <site-name>.yml


Contribute your code to Puppet/ If your Puppet modules are site-specific, create a subdirectory in Puppet/sites for your site as declared in GOCDB and work there.


If you have questions, comments or suggestions, please open an issue and assign it the right tag.

How to cite this work


We like our code so much, we put a DOI on it ! If you like it, please use it, but also cite us, so that our funders will be happy.