About AnsibleCube

AnsibleCube is a set of instructions (source code), that automatically deploys the IdeasCube platform and downloads several types of content (Kiwix content, Khan Academy videos, Libraries Without Borders curated content).

How Ansible Works

Ansible pulls configuration files, software and content to the IdeasCube server (either an AMD64 server or an ARM server).

It was originally designed to push configuration files from a primary server to several replicas. But you can also use it the other way around where the replicas can pull content from a Git server.

How We Use It

In our case, the master is the GitHub repository, which contains a playbook with several roles. Each time the IdeasCube Box gets an Internet connection, it synchronizes the distant Git repository with its local Git repository and updates its system. At this stage you can do almost anything!

Network Configuration

Our network architecture is based on:

  • A GitHub repo which holds all the recipes

  • A Filer which holds all the large files to allow fast synchronization of the GitRepo

  • A Data Server where content from the IdeasCube Box can be automatically pushed towards the server

Supported Platforms

So far, AnsibleCube has only been tested with ARM Olimex Lime2 A20, Debian Jessie, Kernel 3.4/4.8 and AMD64 servers. It should work on any Jessie distribution, and probably on Ubuntu and Raspberry Pi.

Deployment

What does Ansible do?

This playbook installs:

  • IdeasCube software. It can be installed simply with the APT tool from Debian. AnsibleCube will take care of all the small tweaks to make it work.
  • Kiwix-server to load ZIM files
  • Kalite (Khan Academy Mooc platform)
  • BSF Campus Mooc platform
  • Import data in IdeasCube media-center
  • Synchronise Kalite videos

It will setup :

  • dnsmasq (to resolve local domain)
  • hostapd (to setup the local WiFi hotspot)
  • nginx (to serve http content)
  • uwsgi (to manage python scripts)
  • Network-Manager
  • All system tweaks