Skip to content
README.md 4.75 KiB
Newer Older
jerome's avatar
jerome committed
# 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**
jerome's avatar
jerome committed
partiellement : **debian 9**
jerome's avatar
jerome committed

Choix, discutables ! :

- configuration basée sur deux partitions, 1 système, 1 "production" montée sur **/mnt/vdb** par défaut
- monitoring : monit
jerome's avatar
jerome committed
- 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

jerome's avatar
jerome committed
- 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
jerome's avatar
jerome committed
- **tous** les services web utilisent des certificats **letsencrypt**
jerome's avatar
jerome committed

jerome's avatar
jerome committed
**L'organisation des scripts se fait de la façon suivante :**
jerome's avatar
jerome committed

## 1 - L'inventaire
jerome's avatar
jerome committed
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.
jerome's avatar
jerome committed

***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

jerome's avatar
jerome committed
**rôle : base_server**
jerome's avatar
jerome committed

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,...)
jerome's avatar
jerome committed
- les serveurs de base de données (mariadb, postgres, mongodb...)
- les languages (php, python, nodejs...)
jerome's avatar
jerome committed
- le monitoring associé à ces composants

jerome's avatar
jerome committed
**rôle : base_platform**
jerome's avatar
jerome committed

jerome's avatar
jerome committed
## 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 :
jerome's avatar
jerome committed
- 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
jerome's avatar
jerome committed
- le démarrage du service
jerome's avatar
jerome committed

jerome's avatar
jerome committed
**rôles : \<application\>_instance**
jerome's avatar
jerome committed

jerome's avatar
jerome committed
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
jerome's avatar
jerome committed

jerome's avatar
jerome committed
**rôles : \<application\>_instance_upg**
jerome's avatar
jerome committed

jerome's avatar
jerome committed
## 5 - Éléments réutilisables
jerome's avatar
jerome committed

Les rôles utilisent des parties factorisées dans des rôles réutilisables (création de base de données, de certificats etc...)

jerome's avatar
jerome committed
**rôles : \_app\_\<fonction\>**
jerome's avatar
jerome committed

jerome's avatar
jerome committed
## 6 - Gestion multi-instance (en cours de généralisation)
jerome's avatar
jerome committed

jerome's avatar
jerome committed
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).
jerome's avatar
jerome committed

jerome's avatar
jerome committed
cf: le fichier d'inventaire host.example.yml 
jerome's avatar
jerome committed

jerome's avatar
jerome committed
**rôle : applications**
jerome's avatar
jerome committed

jerome's avatar
jerome committed
## 7 - Playbooks utilitaires

- Obtention de certificats letsencrypt pendant la coupure nocturne : **playbook_new_certificates.yml**
jerome's avatar
jerome committed

jerome's avatar
jerome committed
Notes :
jerome's avatar
jerome committed
ROLES STABLES
- base server
jerome's avatar
jerome committed
- base platform (apache, nginx, mysql/mariadb, mongodb, nodejs, postgres, php7_fpm, _python3 )
- _app_backup, _app_logrotate, _app_monit, _create_database, _letsencrypt_certificate
jerome's avatar
jerome committed
- application
- backup en mode master/slave

- nextcloud (install-upgrade)
- collabora online (partner)
- dolibarr (install-upgrade)
jerome's avatar
jerome committed
- rocket.chat
jerome's avatar
jerome committed

ROLES NOUVEAUX OU EN DEVELOPPEMENT (qui peuvent subir un refactoring important):
jerome's avatar
jerome committed
- wekan snap
jerome's avatar
jerome committed
- _web_app (chrooted sftp only user, git, static, php)
jerome's avatar
jerome committed
- _app_env_python3 (virtual env, requirements, git) (refactoring)
jerome's avatar
jerome committed
- _flask_app_instance 
jerome's avatar
jerome committed
- mpapi_instance
jerome's avatar
jerome committed
- nap_instance
- turn_server
jerome's avatar
jerome committed
- _app_log_inventory (refactoring)'
jerome's avatar
jerome committed

jerome's avatar
jerome committed
TODO : 
jerome's avatar
jerome committed
priorité :
jerome's avatar
jerome committed

- nextcloud upg :  
  occ db:add-missing-indices / occ db:convert-filecache-bigint à surveiller
  - mise à jour automatique des application (version 15)

jerome's avatar
jerome committed
- déplacer le /var/lib/ postgres.... dans /mnt/vdb/ à l'étude
jerome's avatar
jerome committed

- failtoban pour les services (ou pas)
jerome's avatar
jerome committed
- multi instance pour mattermost
- mise à jour des scripts mattermost avec les éléments réutilisables
jerome's avatar
jerome committed

jerome's avatar
jerome committed
En cours d'abandon : 
- mattermost, pour rocket.chat 

jerome's avatar
jerome committed
[paquerette.eu](http://paquerette.eu)