* [hostmaster](https://www.drupal.org/project/hostmaster) : interface web en Drupal 7 : <https://www.drupal.org/project/hostmaster>
* [provision](https://www.drupal.org/project/Provision) : suite de commandes [drush](HowtoDrupal#drush) pour installer des sites Drupal (cf `/usr/share/drush/commands/provision/`
* [hosting](https://www.drupal.org/project/hosting) : modules Drupal pour permettre l'UI de l'interface web d'Aegir
* [eldir](https://www.drupal.org/project/eldir) : thème Drupal pour Aegir
On peut ensuite activer différents modules via l'interface web d'Aegir : options pour Git, Let's Encrypt, etc.
## Utilisation
Le principe d'Aegir est de définir des plateformes associés à un serveur web (ou plusieurs, cf plus bas le [mode multi-serveurs](HowtoAegir#multi-serveurs)).
Un usage typique est de définir une plateforme de "PROD" et une plateforme de "PREPROD" associés à des serveurs web différents.
Une plateforme déploie le code Drupal sur le serveur associé, cela peut par exemple être un Drupal 8.8.5 ou en Drupal 9.4.5.
On peut ensuite créer des sites associé à une plateforme, cela s'appuye sur la fonctionnalité [multisites](https://www.drupal.org/docs/multisite-drupal) de Drupal.
### Servers
Par défaut il y a le serveur web local (type `Apache`) et un serveur de base de données local (type `MySQL`).
### Platforms
Ajouter une plateforme est l'étape la plus critique, car c'est là qu'Aegir va déployer le code source de Drupal.
Plusieurs [stratégies de déploiement](https://docs.aegirproject.org/usage/advanced/deployment/) sont possibles : récupérer le code de Drupal via Git, déploiement via Drush, etc.
Attention, à cette étape Aegir va scanner la présence d'un fichier `composer.lock` et lancera un `composer install` si il est présent… et ne se déploiera pas en cas d'erreur !
### Sites
Il faut définir un nom de domaine et l'associer à une plateforme.
On peut aussi : choisir un language pour le site, un profil (minimal, standard, personnalisé, etc.) et serveur de base de données.
## Ligne de commande
Lorsque que l'on définit des serveurs, plateformes, sites, cela va créer des fichiers de configuration stockés dans `/var/aegir/.drush/` :
~~~
# ls /var/aegir/.drush/
hm.alias.drushrc.php
hostmaster.alias.drushrc.php
server_localhost.alias.drushrc.php
server_master.alias.drushrc.php
platform_hostmaster.alias.drushrc.php
platform_PROD.alias.drushrc.php
platform_PREPROD.alias.drushrc.php
FQDN1.alias.drushrc.php
FQDN2.alias.drushrc.php
FQDN3.alias.drushrc.php
...
~~~
On peut ainsi lancer plein de commandes Drush du type :
On peut aussi modifier le Cron et ajouter l'option `--debug`.
Ou alors vider le cache Drush :
~~~
# su - aegir
$ drush cache-clear drush
~~~
Par l'interface web on peut accéder à la liste des Tasks via <http://aegir.example.com/admin/content/node/overview> et supprimer une Task (à utiliser avec précaution).
Pour d'autres infos, voir <https://community.aegirproject.org/content/administrator/troubleshooting-aegir/>
* créer un utilisateur "aegir" ainsi : `adduser --home /var/aegir --uid 113 --gid 120 --disabled-password aegir` (même UID/GID que sur le serveur Aegir)
* valider la connexion SSH entre l'utilisateur "aegir" depuis le serveur Aegir vers l'utilisateur "aegir" du noeud (avec une clé SSH sans mot de passe)