Fundamentally, Aegir5 maps a web GUI to CLI commands. It is made up of several components:
The front-end UI allows users to construct the Object Model, creating Platforms and Sites to represent the applications and instances they need to provision, host, and manage. Users can interact with Platforms and Sites by running Operations, composed of Tasks, which pass configuration variables into a distributed task queue, built on Celery.
The back-end Celery queue worker (
dispatcherd) receives these tasks,
and runs provisioner commands, based on the variables passed into the task from the
front-end. Currently the only backend provisioner is Ansible, but the system is
designed to support pluggable provisioners such as Terraform, Kubernetes, or
plain shell scripts.
The back-end provisioners SSH into the Minion servers to manipulate the Applications and Services running there. The minions may have a single application stack or support multiple types of applications on a single server (or container pod).
N.B. This architecture reflect the original design proposal. While much of what has been built has stayed fairly close to this design, the above diagram reflects actual implementations more accurately.