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
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 applicatives 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, mongodb...)
- les languages (php, python, nodejs...)
## 4 - Le déploiement de l'instance applicative et mise à jour
C'est la partie qui définit la méthode de déploiement et de mise à jour d'une instance applicative. Elle met en oeuvre,
pour le déploiement :
- 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
pour la mise à jour :
- le téléchargement de la nouvelle version
- l'arrêt du service
- la sauvegarde complète de la version courante à froid
- la mise à jour du logiciel et de la base de données + ou - automatisée selon l'application
- le redémarrage du service
Les rôles utilisent des parties factorisées dans des rôles réutilisables (création de base de données, de certificats etc...)
Il est possible d'installer directement une liste d'instance ou de piloter leur mise à jour en déclarant les instances sous forme de listes dans l'inventaire (fichiers host vars).
- Obtention de certificats letsencrypt pendant la coupure nocturne : **playbook_new_certificates.yml**
- base platform (apache, nginx, mysql/mariadb, mongodb, nodjs, postgres )
- 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)
- fusionner les rôles php7_apache2 et php7_nginx, passage à 7.2 (terminé pour les nouvelles instances)
- nextcloud upg :
occ db:add-missing-indices / occ db:convert-filecache-bigint à surveiller
- mise à jour automatique des application (version 15)
- multi instance pour mattermost
- mise à jour des scripts mattermost avec les éléments réutilisables