|
|
Aegir is made up of several components. First off, there is a front-end built on Drupal 8. This user interface passes configuration variables into a distributed task queue, built on Celery. Finally, queue workers receive these tasks, and run various operations, based on the variables passed into the task from the front-end. A command-line client, built on Drupal Console, can also post tasks to the queue, allowing for relatively simple scripting.
|
|
|
AegirNG is made up of several components. First off, there is a front-end built on Drupal 8. This user interface passes configuration variables into a distributed task queue, built on Celery. Finally, queue workers receive these tasks, and run various operations, based on the variables passed into the task from the front-end. A command-line client, built on Drupal Console, can also post tasks to the queue, allowing for relatively simple scripting.
|
|
|
|
|
|
## Front-end
|
|
|
|
... | ... | @@ -44,7 +44,11 @@ A separate `aegir.drupal8-codebase-verify` task could then ensure that proper fi |
|
|
|
|
|
## Security model
|
|
|
|
|
|
Broadly speaking, Aegir maps a web GUI to CLI commands. Ansible provides a handy, secure mechanism to allow multiple servers, since it uses SSH to communicate between VMs. We *don't* want to be able to run arbitrary commands on the back-end, since this could easily lead to compromised security. Rather, the Ansible roles will represent a whitelist of commands, and safe variables.
|
|
|
Broadly speaking, AegirNG maps a web GUI to CLI commands. Ansible provides a handy, secure mechanism to allow multiple servers, since it uses SSH to communicate between VMs. We *don't* want to be able to run arbitrary commands on the back-end, since this could easily lead to compromised security. Rather, the Ansible roles will represent a whitelist of commands, and safe variables.
|
|
|
|
|
|
CLI provides a more or less universal API for applications. By supporting CLI tools, as our principal backend engines, we can standardize mechanisms for both calling and gathering feedback from them. SSH provides a secure, proven, widely supported communication mechanism between hosts.
|
|
|
|
|
|
In contrast, interacting with various backends via web-based APIs would generally involve multiple authentication mechanisms, differing serialization formats, etc.
|
|
|
|
|
|
### Secrets
|
|
|
|
... | ... | |