# Runbook — Ceph (démo mono-serveur) Démo du bloc C du CLAUDE.md : comprendre et savoir opérer Ceph, avant le « vrai cluster » prévu au 2ᵉ serveur. **Pas branché à OpenStack** (Cinder est désactivé sur ce déploiement — `enable_cinder: "no"`), pas de réplication (1 seul OSD), pas de stockage réel de l'application. Voir [ADR 0007](../adr/0007-ceph-demo-mono-serveur.md) pour le détail des choix et des contournements de bugs. ## État attendu | Composant | Attendu | |---|---| | mon | 1, `sd-124443` | | mgr | 1 actif + 1 standby | | osd | 1, up et in, mode `raw` sur `/dev/loop0` | | Pools | 0 en temps normal (démo seulement, rien de permanent stocké) | ``` sudo /usr/sbin/cephadm shell -- ceph -s ``` `HEALTH_WARN` est normal et attendu (1 seul OSD < taille de réplication par défaut) — pas une alerte à traiter. ## Où sont les choses - Config et clés : `/etc/ceph/ceph.conf`, `/etc/ceph/ceph.client.admin.keyring`. - Fichier épars de l'OSD (20 Go, alloué à l'usage réel) : `/var/lib/ceph-osd-demo/osd0.img`. - Service qui réattache ce fichier en `/dev/loop0` au démarrage : `/etc/systemd/system/ceph-osd-demo-loop.service` (copie suivie dans le dépôt : `infra/ceph/ceph-osd-demo-loop.service`, pas encore déployé par Ansible). - cephadm gère les daemons comme des conteneurs podman (`sudo podman ps`), pas docker (utilisé par Kolla et le portail) — deux runtimes de conteneurs coexistent sur ce serveur, sans conflit. ## Commandes utiles ``` # Santé du cluster sudo /usr/sbin/cephadm shell -- ceph -s # Lister les daemons sudo /usr/sbin/cephadm ls # RAM : à surveiller avant/après toute action Ceph (colonne "available", # pas "free" — c'est elle qui compte vraiment) free -h ``` ## Pourquoi RAM et disque sont serrés Le serveur a réellement **31 Go de RAM** et **230 Go en RAID 1** (pas 64 Go / 2×500 Go comme décrit dans le CLAUDE.md — à corriger si une vraie mise à jour matérielle est faite). OpenStack (Kolla, MariaDB Galera, Nova/qemu) et le portail Laravel tournent déjà sur cette même machine. Avant d'ajouter quoi que ce soit à ce cluster (dashboard, supervision, un 2ᵉ OSD), vérifier `free -h` : viser au moins 2 Go « disponibles » de marge. ## Nettoyer entièrement la démo (si besoin de récupérer la RAM/le disque) ``` ssh paillasse sudo /usr/sbin/cephadm ls # récupérer le fsid sudo /usr/sbin/cephadm rm-cluster --fsid --force sudo losetup -d /dev/loop0 sudo systemctl disable --now ceph-osd-demo-loop.service sudo rm /etc/systemd/system/ceph-osd-demo-loop.service sudo rm -rf /var/lib/ceph-osd-demo sudo rm /etc/apt/sources.list.d/ceph.list /usr/share/keyrings/ceph.gpg sudo apt-get update ``` ## Écueils rencontrés (pour ne pas les redécouvrir) - **`ceph orch daemon add osd :` plante** sur un périphérique loop (`IndexError`, bug de classification de `ceph-volume`, reproduit sur Pacific et Reef). Contournement : ajouter `raw` en second argument séparé : `ceph orch daemon add osd : raw` (la syntaxe `périphérique,method=raw` est refusée par la CLI). - **cephadm veut du SSH root** même pour gérer l'hôte local — incompatible avec `PermitRootLogin no`. Toujours bootstrapper avec `--ssh-user adam`. - **Mélanger une image Ceph et un `cephadm` de version différente échoue** (`Container release reef != cephadm release pacific`) : installer le `cephadm` du dépôt officiel de la même version que l'image voulue, pas forcer avec `--allow-mismatched-release`.