Skip to content
README.md 4.77 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
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**
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 des instances 
jerome's avatar
jerome committed

jerome's avatar
jerome committed
Il est possible de déclarer toutes les instances d'une machine dans la liste **app_instances"" dans les fichiers host_vars.
Elles sont gérées à l'aide de l'utilitaire **play.py** qui génère les playbooks pour l'exécution du rôle lié à l'instance, avec l'ensemble de ses variables.
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
par exemple : ./pay.py host_example nc_mydomain_eu install

**utilitaire : play.py**
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
- 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
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

jerome's avatar
jerome committed
En cours d'abandon : 
jerome's avatar
jerome committed
- mattermost, pour rocket.chat
- 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
[paquerette.eu](http://paquerette.eu)