README pour le Projet Open-Xchange Infra as Code
Les fichiers de configurations et les secrets pour la DiNum sont ici
SOMMAIRE
- Introduction
- Arborescence du Projet
- Accès et Configuration
- Déploiement et Configuration
- Environnements
- Liens Utiles
Introduction
Open-Xchange est une suite logicielle libre dédiée à la messagerie collaborative sous Linux, incluant des fonctionnalités telles que la gestion des e-mails, des calendriers et des disques virtuels. Ce projet utilise Terraform et Ansible pour déployer et configurer l'infrastructure nécessaire à Open-Xchange.
Arborescence du Projet
- 10_backend_ovh: Déploiement du backend Terraform (S3 bucket).
- 20_network: Éléments réseau "durables" (IPS, A record DNS).
- 30_vms: Infrastructure réseau et machines.
- 40_ansible_single: Installation et configuration du serveur mail Open-Xchange (infrastructure single server).
- Makefile: Commandes Terraform selon l'environnement sourcé.
- .editorconfig: Configuration pour l'édition des fichiers du repo.
Accès et Configuration
La documentation sur les accès est ici
Déploiement et Configuration
Déploiement Terraform
-
Init:
make init
-
Plan:
make plan
-
Apply:
make apply_backend
make apply_network
make apply_vms
-
Autres Commandes:
make check
vérifie l'environnement avant toute opération.
Installation et Configuration Ansible
Utilisez le dossier 40_ansible_single
pour lancer les playbooks Ansible :
# Il est important de noter que, pour lancer le playbook Ansible, il faut un plan Terraform à jour.
ansible-playbook playbook.yml
Environnements
Pour se positionner dans l'environnement de développement :
- Lancer
. ./$FICHIER_ENV_DEV
puismake init
Pour se positionner dans l'environnement de production :
- Lancer
. ./$FICHIER_ENV_PROD
puismake init
Rôles ansible
cert_http
Description
Ce rôle manipule les configurations du proxy http (Nginx en règle général) afin que les challenges HTTP Let's Encrypt puissent fonctionner avec des sous-domaines qui pointent sur les machines cibles, en coordination avec le cert_manager.
Dépendance
Ce rôle fait appel au rôle :
nginx_server
cert_manager
Description
Ce rôle permet de centraliser les certificats dans un serveur et d'ouvrir une configuration rsync
en mode serveur pour que ces derniers se synchronisent dans les machines clientes.
Dépendance
Ce rôle fait appel au rôle :
rsync_server
cert_user
Description
Ce rôle permet de configurer un cron qui récupère régulièrement les certificats produits par cert_manager
.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
db_server
Description
Ce rôle permet de créer et de configurer le serveur de bases de données MariaDB sur la cible (primary + replica).
Dépendance
Ce rôle fait appel au rôle :
rclone_access
icinga
Description
Ce rôle permet l'installation et la configuration de l'outil icinga
afin de superviser le système.
Dépendance
Ce rôle fait appel au rôle :
nginx_server
imap_master
Description
Ce rôle permet de centraliser les configurations imap
dans un serveur et d'ouvrir une configuration rsync
en mode serveur pour que ces derniers se synchronisent dans les machines clientes.
Dépendance
Ce rôle fait appel au rôle :
rsync_server
imap_server
Description
Ce rôle permet l'installation et la configuration de dovecot.
Dépendance
Ce rôle fait appel au rôle :
nginx_server
rclone_access
imap_slave
Description
Ce rôle permet de configurer la réplication par rsync+cron des données des mails sur le serveur de backup.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
nginx_server
Description
Ce rôle installe et configure nginx
proxy http.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
ox_server
Description
Ce rôle permet l'installation et la configuration d'OpenXchange.
Dépendance
Ce rôle fait appel au rôle :
nginx_server
prometheus
Description
Ce rôle installe et configure Prometheus
pour monitorer le système.
- Si le serveur a un rôle de monitoring, il installera la partie serveur
- Sinon, il installera les exporters.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
rclone_access
Description
Ce rôle installe et configure rclone
pour avoir accès au bucket S3.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
rsync_server
Description
Ce rôle installe rsync
et configure ce dernier en attente d'autres configurations.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
secure_vms
Description
Ce rôle renforce la sécurité des serveurs avec différents réglages, sur le système et OpenSSH notamment.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
setup_disk
Description
Ce rôle s'assure que les volumes (raw disk) sont montés sur les bons chemins.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
setup_logs
Description
Ce rôle configure les dossiers de logs
des systèmes.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
setup_repo
Description
Ce rôle configure les repositories Debian nécessaires aux installations de dépendances.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
setup_systeme
Description
Ce rôle permet d'installer et de configurer les logiciels requis pour le bon fonctionnement du système.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
smtp_server
Description
Ce rôle installe et configure postfix.
Dépendance
Ce rôle fait appel au rôle :
nginx_server
test_data
Description
Ce rôle teste les données présentes sur le serveur.
Dépendance
Ce rôle fait appel à aucun autre rôle ni collection.
Liens Utiles
Liens pratiques pour l'infra :
Documentation Open-Xchange :
- Documentation technique des process OX
- Tutoriel pour construire une architecture OX single server sur Debian 10
- Tutoriel pour construire une architecture OX pour 10K users
- Tutoriel pour construire une architecture pour 100K users