|
|
|
|
@@ -1,14 +1,39 @@
|
|
|
|
|
# Belgium RP - Ansible Infrastructure
|
|
|
|
|
# Bruxelles Life - Ansible Infrastructure
|
|
|
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveur Belgium RP. Le dépôt contient plusieurs rôles, tâches et playbooks Ansible pour automatiser le processus de déploiement.
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
- **host_vars/**: Variables spécifiques aux hôtes.
|
|
|
|
|
- `localhost.yml`: Variables spécifiques à localhost.
|
|
|
|
|
- `localhost/`: Répertoire contenant des variables supplémentaires spécifiques aux hôtes.
|
|
|
|
|
- **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.
|
|
|
|
|
@@ -32,8 +57,8 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
|
|
|
|
|
- **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-kanboard.yml`: Playbook pour déployer [Kanboard](https://github.com/kanboard/kanboard).
|
|
|
|
|
- **Kanboard** : Application de gestion de projets utilisant une approche Kanban pour organiser les tâches.
|
|
|
|
|
- `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).
|
|
|
|
|
@@ -46,9 +71,11 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
|
|
|
|
|
- **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.
|
|
|
|
|
- `deploy-homepage-config.yml`: Playbook pour déployer la configuration de la [Homepage](https://github.com/benphelps/homepage).
|
|
|
|
|
- **Homepage Configuration** : Configuration de l'interface web personnalisable pour accéder rapidement aux applications web et services.
|
|
|
|
|
- **roles/**: Contient les rôles Ansible pour le déploiement.
|
|
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
@@ -64,7 +91,7 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
|
|
|
|
|
- `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).
|
|
|
|
|
- `kanboard.yml`: Configuration pour [Kanboard](https://github.com/kanboard/kanboard).
|
|
|
|
|
- `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).
|
|
|
|
|
@@ -79,23 +106,70 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
|
|
|
|
|
- **tests**: Contient les fichiers de test pour le rôle.
|
|
|
|
|
- **vars**: Contient les fichiers de variables pour le rôle.
|
|
|
|
|
|
|
|
|
|
## Prérequis
|
|
|
|
|
- Docker
|
|
|
|
|
- Ansible
|
|
|
|
|
## Stack FiveM avec Docker Compose
|
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
1. Clonez le dépôt :
|
|
|
|
|
```bash
|
|
|
|
|
git clone https://gitlab.com/votre-utilisateur/votre-depot.git
|
|
|
|
|
cd votre-depot
|
|
|
|
|
```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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Exécutez le playbook Ansible :
|
|
|
|
|
## Tutoriel d'utilisation d'Ansible
|
|
|
|
|
|
|
|
|
|
### Installation d'Ansible
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
ansible-playbook -i inventories/localhost.yml playbooks/docker/deploy-docker-bitwarden.yml
|
|
|
|
|
sudo apt update && sudo apt install ansible -y
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Tutoriel de Déploiement de Playbook Ansible
|
|
|
|
|
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` :
|
|
|
|
|
@@ -133,6 +207,45 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
|
|
|
|
|
- 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`).
|
|
|
|
|
@@ -142,11 +255,7 @@ Ce projet Ansible est conçu pour déployer et gérer l'infrastructure du serveu
|
|
|
|
|
6. Ouvrez une Merge Request.
|
|
|
|
|
|
|
|
|
|
## Licence
|
|
|
|
|
Ce projet est sous licence MIT - voir le fichier [LICENSE](LICENSE) pour plus de détails.
|
|
|
|
|
Ce projet est sous licence MIT
|
|
|
|
|
|
|
|
|
|
## Créateurs du Projet
|
|
|
|
|
- Big Geo: Ne supporte pas les humains donc Contact Via MichMich.
|
|
|
|
|
- MichMich (Discord: mitch_grey48)
|
|
|
|
|
|
|
|
|
|
## Remerciements
|
|
|
|
|
- Big Geo
|
|
|
|
|
|