Newer
Older
# ansible-roles-paquerette
*Proposition de rôles ansible **minimaux**, pour mettre en oeuvre et maintenir des applications sur des machines auto hébergées ou dans le cloud.*
Systèmes supportés : **Ubuntu 16.04 LTS**, **Ubuntu 18.04 LTS**
Choix, discutables ! :
- configuration basée sur deux partitions, 1 système, 1 "production" montée sur **/mnt/vdb** par défaut
- monitoring : monit
- backup : backupninja (!), backup externe en mode "master/slave" : un serveur externe se connecte sur la machine pour récupérer les archives mises à sa disposition
- mail, remontée de messages : **postfix configuré en relai SMTP**, copie cachée systématique permettant l'envoi de sms par exemple, non détaillé ici
**L'organisation des scripts se fait en 8 catégories :**
## 1 - L'inventaire
C'est la partie qui définit la liste des machines pilotées, la composition de la plateforme de support applicative, la liste des instances et toutes les variables utiles aux rôles.
***En gras**, les groupes à définir localement, selon les besoins.*
- secret : les variables qui doivent rester secrètes (mot de passe etc...)
- - base_server : toutes les variables communes non secrètes
- - - **test** : toutes les variables propres aux machines de test
- - - **prod** : toutes les variables propres aux machines de production
etc...
fichiers dans group_vars
*cf hosts.example*
## 2 - Le serveur
C'est la partie qui définit les base du serveur, elle est la couche basse. Elle met en oeuvre :
- l'organisation des répertoires et fichiers
- la localisation du serveur
- la stratégie de sauvegarde
- la stratégie de monitoring
utilitaires : server_\<...\>
## 3 - La plateforme de support applicative
C'est la partie qui définit l'ensemble des services ou composants nécessaire au fonctionnement d'une instance applicative. Elle met en oeuvre :
- les serveurs web (nginx, apache,...)
- les serveurs de base de données (mariadb, postgres,...)
- les languages (php, python,...)
- le monitoring associé à ces composants
C'est la partie qui définit la méthode de déploiement d'une instance applicative. Elle met en oeuvre:
- le téléchargement d'une application
- la création des bases de données et dépendances (certificat letsencrypt...)
- la configuration de base de l'application
- la mise en place des sauvegardes et du monitoring
- démarrage du service
C'est la partie qui permet de mettre à jour une instance applicative. La mise à jour d'une instance se distingue de son déploiement :
- téléchargement de la nouvelle version
- arrêt du service
- sauvegarde complète de la version courante
- mise à jour du logiciel et de la base de données + ou - automatisée selon l'application
- redémarrage du service
## 6 - Éléments réutilisables
Les rôles utilisent des parties factorisées dans des rôles réutilisables (création de base de données, de certificats etc...)
rôles : \_app\_\<fonction\>
## 7 - Gestion multi-instance (en cours de généralisation)
Il est possible d'installer directement une liste d'instance ou de piloter leur mise à jour en déclarant les instances sous forme de liste.
## 8 - Playbooks utilitaires
- Obtention de certificats letsencrypt pendant la coupure nocturne : **playbook_new_certificates.yml**
ROLES STABLES
- base server
- base platform (apache, nginx, php7, mysql/mariadb, )
- application
- backup en mode master/slave
- nextcloud (install-upgrade)
- collabora online (partner)
- dolibarr (install-upgrade)
ROLES NOUVEAUX OU EN DEVELOPPEMENT (qui peuvent subir un refactoring important):
- _app_env_python3 (virtual env, requirements) (refactoring)
- mise à jour des scripts mattermost avec les éléments réutilisables
- multi instance pour mattermost
- fusionner les rôles php7_apache2 et php7_nginx (en cours)
- failtoban pour les services (ou pas)