Démarrage Rapide
Ajouter vos Hosts
Commencez par ajouter vos serveurs dans la section Hosts. Chaque host nécessite un nom, une adresse IP et un système d'exploitation.
Bootstrap Ansible
Exécutez le Bootstrap sur chaque host pour configurer l'accès SSH et les prérequis Ansible.
Automatiser
Utilisez les Actions Rapides ou exécutez des playbooks personnalisés pour automatiser vos tâches.
Indicateurs de Santé des Hosts
Chaque host affiche un indicateur visuel de santé représenté par des barres colorées. Cet indicateur combine plusieurs facteurs pour évaluer l'état global de votre serveur.
Comprendre l'Indicateur
Host en ligne, bootstrap OK, vérifié récemment
Host fonctionnel mais certains aspects à améliorer
Attention requise - vérification recommandée
Host hors ligne ou non configuré
Facteurs de Calcul du Score
Le host répond aux requêtes réseau
SSH et prérequis Ansible configurés
Dernière vérification il y a moins d'une heure
Dernière vérification dans les 24 dernières heures
Astuce: Exécutez régulièrement un Health Check pour maintenir un score de santé élevé.
Statuts Bootstrap Ansible
Le host est entièrement configuré pour Ansible. L'utilisateur automation existe, la clé SSH est déployée et sudo est configuré sans mot de passe.
Le bootstrap n'a pas encore été exécuté sur ce host. Cliquez sur le bouton Bootstrap pour configurer l'accès Ansible.
Que signifie "Jamais vérifié" ?
Ce message apparaît lorsqu'aucun Health Check n'a été exécuté sur le host depuis son ajout. Le système ne peut pas déterminer l'état réel du serveur. Lancez un Health Check pour mettre à jour le statut et obtenir un score de santé précis.
Architecture de la Solution
Stack Technologique
- Backend: FastAPI (Python) - API REST haute performance
- Automation: Ansible - Gestion de configuration
- Frontend: HTML/CSS/JS avec TailwindCSS
- Déploiement: Docker & Docker Compose
- Temps réel: WebSocket pour les mises à jour live
Structure des Fichiers
homelab-automation/ ├── app/ │ ├── app_optimized.py # API FastAPI │ ├── index.html # Interface web │ └── main.js # Logique frontend ├── ansible/ │ ├── inventory/ │ │ ├── hosts.yml # Inventaire des hosts │ │ └── group_vars/ # Variables par groupe │ └── playbooks/ # Playbooks Ansible ├── tasks_logs/ # Logs des tâches ├── docker-compose.yml └── Dockerfile
Fonctionnalités par Section
Vue d'ensemble centralisée de votre infrastructure homelab.
- Métriques en temps réel: État des hosts (Online/Offline), statistiques des tâches (Succès/Échec).
- Actions Rapides: Accès immédiat aux opérations courantes (Mise à jour globale, Health Check général).
- Aperçu des Hosts: Liste condensée avec indicateurs de statut et OS pour une surveillance rapide.
- Notifications: Alertes visuelles sur les dernières activités importantes.
Gestion complète du cycle de vie de vos serveurs.
- Inventaire: Ajout, modification et suppression de hosts avec détection d'OS.
- Bootstrap Ansible: Préparation automatique des serveurs (User, Clés SSH, Sudo).
- Indicateurs de Santé: Score de santé détaillé basé sur la connectivité et la configuration.
- Actions Individuelles: Exécution de playbooks spécifiques (Upgrade, Backup, Reboot) sur un host.
- Détails Avancés: Vue détaillée avec historique des tâches et logs spécifiques au host.
Bibliothèque et exécution de playbooks Ansible personnalisés.
- Catalogue: Liste de tous les playbooks disponibles dans votre répertoire.
- Exécution Ciblée: Lancement de playbooks sur des hosts spécifiques ou des groupes.
- Logs en Direct: Suivi temps réel de l'exécution Ansible (console output).
- Historique: Accès rapide aux résultats des exécutions précédentes.
Traçabilité complète de toutes les opérations d'automatisation.
- Suivi d'État: Visualisation instantanée (En cours, Succès, Échec).
- Filtrage Avancé: Recherche par statut, par date ou par type d'action.
- Logs Détaillés: Accès aux sorties standard et d'erreur pour le débogage.
- Auto-refresh: Mise à jour automatique des tâches en cours d'exécution.
Planification automatisée des tâches récurrentes.
- Planification Cron: Configuration flexible de la fréquence d'exécution.
- Tâches Récurrentes: Backups quotidiens, Mises à jour hebdomadaires, Health Checks horaires.
- Ciblage: Définition des hosts ou groupes cibles pour chaque planification.
- Gestion: Activation, désactivation ou modification des planifications existantes.
Journal technique des événements système.
- Streaming WebSocket: Arrivée des logs en temps réel sans rechargement de page.
- Niveaux de Log: Distinction claire entre Info, Warning et Error.
- Export: Possibilité de télécharger les logs pour analyse externe.
- Rétention: Gestion de l'historique et nettoyage des logs anciens.
Système de Notifications
Restez informé de l'état de votre infrastructure grâce au système de notifications intégré basé sur ntfy.
Canaux & Configuration
Les notifications sont envoyées via le service ntfy, permettant de recevoir des alertes push sur mobile et desktop.
- Push Mobile: Via l'application ntfy (Android/iOS).
- Web Push: Notifications navigateur sur desktop.
- Priorité: Gestion des niveaux d'urgence (Low à High).
Types d'Alertes
Vous recevez des notifications pour les événements critiques :
- Succès des Backups
- Échecs de Tâches
- Changements de Santé Host
- Fin de Bootstrap
Playbooks Ansible Disponibles
bootstrap-host.yml
Configure un nouveau host pour Ansible: création utilisateur, clé SSH, sudo sans mot de passe.
Requis avant toute autre opérationhealth-check.yml
Vérifie l'état de santé: CPU, RAM, disque, services critiques.
Exécution rapide, non destructifsystem-upgrade.yml
Met à jour tous les paquets système (apt/yum/dnf selon l'OS).
Peut nécessiter un redémarragebackup-config.yml
Sauvegarde les fichiers de configuration importants (/etc, configs apps).
Stockage local ou distantRéférence API
L'API REST est accessible sur le port configuré. Authentification via header X-API-Key.
| Endpoint | Méthode | Description |
|---|---|---|
| /api/hosts | GET | Liste tous les hosts |
| /api/hosts | POST | Ajoute un nouveau host |
| /api/tasks/logs | GET | Récupère les logs de tâches |
| /api/ansible/playbooks | GET | Liste les playbooks disponibles |
| /api/ansible/execute | POST | Exécute un playbook |
| /api/metrics | GET | Métriques du dashboard |
Dépannage
Cause: Les identifiants SSH fournis sont incorrects ou l'utilisateur n'a pas les droits sudo.
Solution: Vérifiez le nom d'utilisateur et mot de passe. Assurez-vous que l'utilisateur peut exécuter sudo sur le host cible.
Cause: Le health check n'a pas été exécuté ou la clé SSH n'est pas configurée.
Solution: Exécutez le bootstrap si ce n'est pas fait, puis lancez un Health Check.
Cause: Le processus Ansible peut être bloqué ou le host ne répond plus.
Solution: Vérifiez la connectivité réseau. Consultez les logs système pour plus de détails. Redémarrez le conteneur Docker si nécessaire.
Cause: La connexion WebSocket est interrompue.
Solution: Rafraîchissez la page. Vérifiez que le port WebSocket n'est pas bloqué par un firewall ou proxy.
Raccourcis & Astuces
Navigation
- Cliquez sur le logo pour revenir au Dashboard
- Utilisez les onglets du menu pour naviguer
- Le thème clair/sombre est persistant
Productivité
- Filtrez les hosts par groupe pour des actions groupées
- Utilisez les filtres de date pour retrouver des tâches
- Exportez les logs avant de les effacer