Files
ansible_bxlife/README.MD
2025-03-12 23:41:48 +00:00

262 lines
14 KiB
Markdown

# Bruxelles Life - Ansible Infrastructure
## Overview
Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveur Bruxelles Life. Le dépôt contient plusieurs rôles, tâches et playbooks Ansible pour automatiser le processus de déploiement.
## ⚠️ Disclaimer - Droits et Utilisation
Ce projet et l'ensemble des fichiers Ansible (y compris les playbooks, rôles et configurations) ont été **conçus et développés par Origamitech/MichMich** pour une utilisation **exclusive** par **Bruxelles Life**.
Bruxelles Life bénéficie **d'un droit illimité et exclusif** d'utilisation, de modification et d'adaptation du code en fonction de ses besoins.
Cependant, **ce code reste la propriété intellectuelle de Origamitech** et **toute revente, distribution, divulgation publique ou partage non autorisé est strictement interdit**.
En aucun cas, ce projet ne peut être revendu, publié sur une plateforme publique, partagé avec des tiers ou utilisé en dehors de Bruxelles Life sans une autorisation écrite de MichMich.
---
## Structure du Dépôt
Les fichiers Ansible sont stockés dans le répertoire système :
```
/etc/ansible/
```
- **inventories/** : Contient les fichiers d'inventaire Ansible.
- **playbooks/** : Contient les playbooks Ansible pour déployer les applications.
- **roles/** : Contient les rôles définis pour le déploiement des services.
Le serveur dédié tourne sous **Ubuntu Server (dernière version)**.
## Rôles et Playbooks
### Playbooks
Les playbooks se trouvent dans le répertoire **playbooks/** et sont utilisés pour orchestrer le déploiement.
- **docker/**: Playbooks pour déployer les conteneurs Docker.
- `deploy-docker-bitwarden.yml`: Playbook pour déployer [Bitwarden](https://github.com/bitwarden/server).
- **Bitwarden** : Gestionnaire de mots de passe open-source qui stocke et gère les informations de connexion de manière sécurisée.
- `deploy-docker-bookstack.yml`: Playbook pour déployer [Bookstack](https://github.com/BookStackApp/BookStack).
- **Bookstack** : Logiciel de gestion de documentation et de wiki pour créer et organiser des livres et des pages.
- `deploy-docker-cloudflare-ddns.yml`: Playbook pour déployer [Cloudflare DDNS](https://github.com/oznu/docker-cloudflare-ddns).
- **Cloudflare DDNS** : Service de DNS dynamique utilisant Cloudflare pour mettre à jour les enregistrements DNS automatiquement.
- `deploy-docker-duplicati.yml`: Playbook pour déployer [Duplicati](https://github.com/duplicati/duplicati).
- **Duplicati** : Solution de sauvegarde open-source pour stocker des sauvegardes chiffrées de manière sécurisée.
- `deploy-docker-easywall.yml`: Playbook pour déployer [Easywall](https://github.com/ThomasKaiser/EasyWall).
- **Easywall** : Pare-feu simplifié pour la gestion et la sécurisation du réseau.
- `deploy-docker-file_browser.yml`: Playbook pour déployer [File Browser](https://github.com/filebrowser/filebrowser).
- **File Browser** : Interface web pour gérer et partager des fichiers sur un serveur.
- `deploy-docker-firefly.yml`: Playbook pour déployer [Firefly III](https://github.com/firefly-iii/firefly-iii).
- **Firefly III** : Outil de gestion financière personnelle pour suivre les dépenses et gérer les budgets.
- `deploy-docker-fivem.yml`: Playbook pour déployer [FiveM](https://github.com/spritsail/fivem).
- **FiveM** : Plateforme de modification pour GTA V, permettant la création de serveurs multijoueurs personnalisés. Cette version Docker simplifie le déploiement et la gestion des serveurs FiveM.
- `deploy-docker-gitea.yml`: Playbook pour déployer [Gitea](https://github.com/go-gitea/gitea).
- **Gitea** : Service d'hébergement de dépôts Git léger et open-source.
- `deploy-docker-heimdall.yml`: Playbook pour déployer [Heimdall](https://github.com/linuxserver/Heimdall).
- **Heimdall** : Page d'accueil pour organiser et accéder facilement aux applications et services.
- `deploy-docker-homepage.yml`: Playbook pour déployer [Homepage](https://github.com/benphelps/homepage).
- **Homepage** : Interface web personnalisable pour accéder rapidement aux applications web et services.
- `deploy-docker-planka.yml`: Playbook pour déployer [Planka](https://github.com/plankanban/planka).
- **Planka** : Application de gestion de projets utilisant une approche Kanban pour organiser les tâches.
- `deploy-docker-nginx.yml`: Playbook pour déployer [Nginx Proxy Manager](https://github.com/NginxProxyManager/nginx-proxy-manager).
- **Nginx Proxy Manager** : Interface utilisateur pour gérer les proxys Nginx, avec une gestion simplifiée des certificats SSL.
- `deploy-docker-portainer.yml`: Playbook pour déployer [Portainer](https://github.com/portainer/portainer).
- **Portainer** : Interface de gestion pour déployer et superviser des environnements Docker.
- `deploy-docker-rainloop.yml`: Playbook pour déployer [Rainloop](https://github.com/RainLoop/rainloop-webmail).
- **Rainloop** : Client webmail rapide et moderne.
- `deploy-docker-uptimekuma.yml`: Playbook pour déployer [Uptime Kuma](https://github.com/louislam/uptime-kuma).
- **Uptime Kuma** : Outil de surveillance de sites web pour suivre le temps de disponibilité.
- `cloudflare.yml`: Playbook pour déployer [Cloudflare](https://github.com/cloudflare).
- **Cloudflare** : Réseau de diffusion de contenu et service de sécurité web.
- `codeserver.yml`: Playbook pour déployer [Code Server](https://github.com/coder/code-server).
- **Code Server** : Version de Visual Studio Code qui peut être exécutée dans un navigateur web.
### Rôles
Le répertoire **roles/** contient divers rôles Ansible permettant l'automatisation du déploiement de services.
- **deploy-docker/**: Rôle pour déployer les conteneurs Docker.
- **tasks/**: Contient le fichier de tâches principal pour le déploiement.
- `main.yml`: Fichier de tâches principal pour exécuter les tâches de déploiement.
- **templates/**: Contient divers fichiers de configuration YAML pour différentes applications.
- `bitwarden.yml`: Configuration pour [Bitwarden](https://github.com/bitwarden/server).
- `bookstack.yml`: Configuration pour [Bookstack](https://github.com/BookStackApp/BookStack).
- `cloudflare-ddns.yml`: Configuration pour [Cloudflare DDNS](https://github.com/oznu/docker-cloudflare-ddns).
- `duplicati.yml`: Configuration pour [Duplicati](https://github.com/duplicati/duplicati).
- `easywall.yml`: Configuration pour [Easywall](https://github.com/ThomasKaiser/EasyWall).
- `filebrowser.yml`: Configuration pour [File Browser](https://github.com/filebrowser/filebrowser).
- `firefly.yml`: Configuration pour [Firefly III](https://github.com/firefly-iii/firefly-iii).
- `fivem.yml`: Configuration pour [FiveM](https://github.com/spritsail/fivem).
- `gitea.yml`: Configuration pour [Gitea](https://github.com/go-gitea/gitea).
- `heimdall.yml`: Configuration pour [Heimdall](https://github.com/linuxserver/Heimdall).
- `homepage.yml`: Configuration pour [Homepage](https://github.com/benphelps/homepage).
- `planka.yml`: Configuration pour [Planka](https://github.com/plankanban/planka).
- `nginx.yml`: Configuration pour [Nginx Proxy Manager](https://github.com/NginxProxyManager/nginx-proxy-manager).
- `portainer.yml`: Configuration pour [Portainer](https://github.com/portainer/portainer).
- `rainloop.yml`: Configuration pour [Rainloop](https://github.com/RainLoop/rainloop-webmail).
- `uptimekuma.yml`: Configuration pour [Uptime Kuma](https://github.com/louislam/uptime-kuma).
- **deploy-homepage-config/**: Rôle pour déployer la configuration de la [Homepage](https://github.com/benphelps/homepage).
- **pallxk.code_server/**: Rôle pour déployer l'environnement de [Code Server](https://github.com/coder/code-server).
- **defaults/**: Contient les variables par défaut pour le rôle.
- **handlers/**: Contient les handlers déclenchés par les tâches.
- **meta**: Contient les métadonnées sur le rôle.
- **tasks**: Contient les fichiers de tâches pour le rôle.
- **templates**: Contient les fichiers de template pour le rôle.
- **tests**: Contient les fichiers de test pour le rôle.
- **vars**: Contient les fichiers de variables pour le rôle.
## Stack FiveM avec Docker Compose
```yaml
version: "3.9" # Déclare la version du fichier Docker Compose
services:
fivem:
image: spritsail/fivem:13227 # Utilise l'image FiveM de Spritsail, version 13227
container_name: fivem # Nomme le conteneur "fivem"
environment:
- NO_LICENSE_KEY=1 # Désactive l'utilisation d'une clé de licence (non recommandé en production)
- NO_DEFAULT_CONFIG=1 # Empêche le chargement de la configuration par défaut
- PUID=0 # Définit l'ID utilisateur à 0 (root)
- PGID=0 # Définit l'ID de groupe à 0 (root)
volumes:
- ./config:/config # Monte un volume local "config" vers "/config" dans le conteneur
- ./txData:/txData # Monte un volume local "txData" vers "/txData" dans le conteneur
ports:
- '40120:40120' # Ouvre le port 40120
- '30120:30120' # Ouvre le port 30120 (TCP)
- '30120:30120/udp' # Ouvre le port 30120 (UDP)
restart: always # Redémarre toujours le conteneur en cas de crash
depends_on:
- fivem-db # Attend que le service "fivem-db" soit actif avant de démarrer
fivem-db:
image: mariadb:10.11.6 # Utilise l'image MariaDB version 10.11.6
container_name: fivem_db # Nomme le conteneur "fivem_db"
environment:
- PUID=0 # Définit l'ID utilisateur à 0 (root)
- PGID=0 # Définit l'ID de groupe à 0 (root)
- MYSQL_ROOT_PASSWORD=tdDgrdv6cs2J0D # Déclare le mot de passe root de MySQL
- TZ=Europe/Paris # Définit le fuseau horaire à Paris
- MYSQL_DATABASE=hardb # Définit le nom de la base de données à "hardb"
- MYSQL_USER=har-admin # Définit l'utilisateur MySQL "har-admin"
- MYSQL_PASSWORD=Xu22DW2SUwfGFv # Mot de passe de l'utilisateur MySQL
command:
--sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION # Définit les options SQL de MySQL
ports:
- 3306:3306 # Ouvre le port MySQL 3306
volumes:
- ./mysql:/var/lib/mysql # Monte un volume pour stocker les données MySQL
restart: always # Redémarre toujours le conteneur en cas de crash
phpmyadmin:
image: phpmyadmin # Utilise l'image officielle de phpMyAdmin
restart: always # Redémarre toujours le conteneur en cas de crash
ports:
- 8080:80 # Associe le port 8080 en local au port 80 du conteneur
environment:
- PMA_ARBITRARY=1 # Autorise la connexion à n'importe quelle base de données MySQL
- UPLOAD_LIMIT=100M # Définit la taille maximale d'upload à 100 Mo
depends_on:
- fivem-db # Attend que le service "fivem-db" soit actif avant de démarrer
```
## Tutoriel d'utilisation d'Ansible
### Installation d'Ansible
```bash
sudo apt update && sudo apt install ansible -y
```
1. **Configurer l'inventaire** :
- Assurez-vous que le fichier `inventories/localhost.yml` contient les informations nécessaires sur les hôtes.
- Exemple de contenu pour `localhost.yml` :
```yaml
all:
hosts:
localhost:
ansible_connection: local
```
2. **Configurer les variables d'hôte** :
- Modifiez le fichier `inventories/host_vars/localhost.yml` pour adapter les variables à votre environnement.
- Exemple de contenu pour `localhost.yml` :
```yaml
some_variable: some_value
```
3. **Lancer le Playbook** :
- Utilisez la commande suivante pour lancer le playbook souhaité :
```bash
ansible-playbook -i inventories/localhost.yml playbooks/docker/deploy-docker-fivem.yml
```
- Remplacez `deploy-docker-fivem.yml` par le playbook correspondant à l'application que vous souhaitez déployer.
### Détails du Répertoire
- **inventories/host_vars/localhost.yml**: Inventaire et variables spécifiques à localhost.
- **playbooks/docker/**: Contient les playbooks pour déployer divers conteneurs Docker.
- Chaque fichier YAML correspond à la configuration de déploiement pour une application spécifique.
- **roles/deploy-docker/tasks/main.yml**: Point d'entrée principal pour déployer les conteneurs Docker.
- **roles/deploy-docker/templates/**: Contient les configurations YAML pour chaque application.
- **roles/deploy-homepage-config/**: Gère le déploiement des configurations de la homepage.
- **roles/pallxk.code_server/**: Gère le déploiement de l'environnement du serveur de code.
## Configuration
- Modifiez les fichiers YAML dans `roles/deploy-docker/templates/` pour configurer les applications selon vos besoins.
- Mettez à jour le fichier d'inventaire avec les détails corrects du serveur.
### Commandes essentielles
- Vérifier la connexion aux hôtes :
```bash
ansible -i inventories/localhost -m ping all
```
- Exécuter un playbook pour déployer FiveM :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml
```
- Exécuter un playbook en mode test :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml --check
```
- Lister toutes les tâches :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml --list-tasks
```
- Redémarrer un service :
```bash
ansible -i inventories/localhost -m service -a "name=docker state=restarted" all
```
### Dépannage
- Vérifier la syntaxe d'un playbook :
```bash
ansible-playbook --syntax-check playbooks/docker/deploy-docker-fivem.yml
```
- Exécution avec plus de détails :
```bash
ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml -vvv
```
## Contribuer
1. Forkez le dépôt.
2. Créez une nouvelle branche (`git checkout -b feature-branch`).
3. Apportez vos modifications.
4. Commitez vos modifications (`git commit -am 'Ajout d'une nouvelle fonctionnalité'`).
5. Poussez sur la branche (`git push origin feature-branch`).
6. Ouvrez une Merge Request.
## Licence
Ce projet est sous licence MIT
## Créateurs du Projet
- MichMich (Discord: mitch_grey48)