Skip to main content

🌑 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

```