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

14 KiB

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.
      • 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.
      • 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.
      • Cloudflare DDNS : Service de DNS dynamique utilisant Cloudflare pour mettre à jour les enregistrements DNS automatiquement.
    • deploy-docker-duplicati.yml: Playbook pour déployer 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.
      • 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.
      • File Browser : Interface web pour gérer et partager des fichiers sur un serveur.
    • deploy-docker-firefly.yml: Playbook pour déployer 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.
      • 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.
      • Gitea : Service d'hébergement de dépôts Git léger et open-source.
    • deploy-docker-heimdall.yml: Playbook pour déployer Heimdall.
      • Heimdall : Page d'accueil pour organiser et accéder facilement aux applications et services.
    • deploy-docker-homepage.yml: Playbook pour déployer Homepage.
      • Homepage : Interface web personnalisable pour accéder rapidement aux applications web et services.
    • deploy-docker-planka.yml: Playbook pour déployer 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.
      • 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.
      • Portainer : Interface de gestion pour déployer et superviser des environnements Docker.
    • deploy-docker-rainloop.yml: Playbook pour déployer Rainloop.
      • Rainloop : Client webmail rapide et moderne.
    • deploy-docker-uptimekuma.yml: Playbook pour déployer Uptime Kuma.
      • Uptime Kuma : Outil de surveillance de sites web pour suivre le temps de disponibilité.
    • cloudflare.yml: Playbook pour déployer Cloudflare.
      • Cloudflare : Réseau de diffusion de contenu et service de sécurité web.
    • codeserver.yml: Playbook pour déployer 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.
  • deploy-homepage-config/: Rôle pour déployer la configuration de la Homepage.
  • pallxk.code_server/: Rôle pour déployer l'environnement de 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

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

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 :
      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 :
      some_variable: some_value
      
  3. Lancer le Playbook :

    • Utilisez la commande suivante pour lancer le playbook souhaité :
      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 :

    ansible -i inventories/localhost -m ping all
    
  • Exécuter un playbook pour déployer FiveM :

    ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml
    
  • Exécuter un playbook en mode test :

    ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml --check
    
  • Lister toutes les tâches :

    ansible-playbook -i inventories/localhost playbooks/docker/deploy-docker-fivem.yml --list-tasks
    
  • Redémarrer un service :

    ansible -i inventories/localhost -m service -a "name=docker state=restarted" all
    

Dépannage

  • Vérifier la syntaxe d'un playbook :

    ansible-playbook --syntax-check playbooks/docker/deploy-docker-fivem.yml
    
  • Exécution avec plus de détails :

    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)