🌑 Moon Cheat Sheet
Moon est le Task Runner officiel de la plateforme Homelab.
Il fournit une interface unique permettant d'exécuter les tâches d'administration, de maintenance et de déploiement sans avoir à mémoriser les commandes complexes.
🎯 Objectif
Moon simplifie l'utilisation de la plateforme en standardisant l'exécution des scripts et des playbooks.
Il gère automatiquement :
- l'exécution depuis la racine du dépôt ;
- les variables d'environnement nécessaires ;
- la configuration Ansible ;
- la standardisation des commandes ;
- la mise en cache des tâches lorsque cela est possible.
🚀 Commandes principales
Toutes les commandes doivent être exécutées depuis la racine du dépôt.
cd ~/workspace/homelab-infra-monorepo
🛠 Maintenance de la plateforme
| Commande | Description |
|---|---|
moon run :apply-system_update-config |
Mise à jour des systèmes Linux (APT/DNF), redémarrages automatiques et maintenance. |
moon run :apply-cluster-restart |
Rolling Restart complet du cluster Kubernetes (Drain → Reboot → Uncordon). |
moon run :apply-docker-prune |
Suppression des images Docker inutilisées sur les hôtes Docker. |
moon run :apply-network-config |
Déploiement de la configuration réseau (AdGuard Home, DHCP, DNS). |
📦 Gestion des applications
| Commande | Description |
|---|---|
moon run :apply-docker-registry-config |
Déploiement et mise à jour du Docker Registry. |
moon run :apply-bookstack-config |
Mise à jour de BookStack. |
moon run :apply-plex-config |
Configuration du serveur Plex. |
☸ Mise à niveau du cluster Kubernetes
Via Moon
moon run :upgrade-k8s-cluster -- \
-e "target_version=1.3x.x-1.1"
Commande Ansible équivalente
ansible-playbook \
-i infra/ansible/inventory.yml \
infra/ansible/playbooks/upgrade-cluster.yml \
-e "target_version=1.3x.x-1.1"
⚙ Ajouter une nouvelle tâche
Les tâches Moon sont définies dans les fichiers de configuration du dépôt.
Exemple :
tasks:
ma-nouvelle-tache:
command: |
export ANSIBLE_ROLES_PATH=$(pwd)/infra/ansible/roles
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook \
-i infra/ansible/inventory.yml \
infra/ansible/playbooks/mon_playbook.yml
options:
runFromWorkspaceRoot: true
interactive: true
inputs:
- infra/ansible/playbooks/mon_playbook.yml
🔍 Débogage
Simulation (Dry Run)
moon run :ma-tache --dryRun
Forcer l'exécution
moon run :ma-tache --force
Cette option ignore le cache de Moon.
Afficher les tâches disponibles
moon project :
🚨 Dépannage
| Problème | Solution |
|---|---|
| La tâche est indiquée comme "cached" | Utiliser --force. |
| Erreur Ansible | Vérifier l'inventaire et les rôles. |
| Variables d'environnement manquantes | Exécuter la commande depuis la racine du dépôt. |
| Commande inconnue | Vérifier la définition dans la configuration Moon. |
💡 Bonnes pratiques
- Utiliser Moon comme point d'entrée pour toutes les opérations manuelles.
- Ne pas exécuter directement les playbooks Ansible lorsqu'une tâche Moon existe déjà.
- Conserver des noms de tâches cohérents.
- Une tâche Moon = une responsabilité.
- Versionner systématiquement la configuration Moon dans Git.
- Préférer Moon pour les opérations répétitives afin de garantir une exécution homogène.
🏗 Philosophie de la plateforme
| Composant | Responsabilité |
|---|---|
| Git | Source de vérité |
| Moon | Point d'entrée utilisateur |
| Terraform | Provisionnement de l'infrastructure |
| AWX / Ansible | Configuration des systèmes |
| ArgoCD | Déploiement GitOps Kubernetes |
Moon ne remplace pas Terraform, AWX ou ArgoCD. Il fournit une interface unique permettant d'orchestrer les opérations manuelles de la plateforme de manière simple et reproductible.
📚 Voir également
- Ansible
- Terraform
- ArgoCD
- Kubernetes
- Monitoring
```
No comments to display
No comments to display