docs: réorganisation complète de admin/ en 4 domaines thématiques

Structure avant : 20 fichiers à plat dans admin/ — difficile à naviguer.
Structure après : 4 sous-répertoires thématiques + index clair.

Réorganisation :
  admin/ops/    → cluster.md, ansible.md, systeme.md
  admin/infra/  → reseau.md, nfs.md, dnsmasq.md, ssh.md
  admin/k8s/    → talos.md, argocd.md, monitoring.md
  admin/ia/     → llama_server.md, rocm.md, litellm.md, hermes.md

Suppressions :
  - ask-agent.md : contenu fusionné dans ia/hermes.md (section ask-agent)
  - lm_studio.md : obsolète (LM Studio remplacé par llama-server)

Mises à jour contenu :
  - ia/hermes.md : fusion complète avec ask-agent.md (profils, skills,
    SOUL.md, ask-agent CLI, dépannage) — doc unifiée sans redondance
  - ops/cluster.md : section GitOps réduite à 2 lignes + lien argocd.md
  - incidents.md : tableau de résumé en tête + 4 nouveaux incidents
    (Grafana OOMKilled, AlertManager null receiver, llama-server 501,
    nftables règle après drop)
  - README.md : réécrit — navigation rapide + index par domaine

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-05-14 00:47:58 +02:00
parent d552abd2ef
commit 5bcf95b82e
19 changed files with 633 additions and 677 deletions

113
admin/infra/nfs.md Normal file
View file

@ -0,0 +1,113 @@
# NFS — Commandes d'administration
Le RAID5 `md127` (4×1 TB = 2.7 TB utiles) est monté sur **storage-01** à `/srv/data`
et exporté en NFS vers le LAN cluster (`192.168.10.0/24`).
---
## Côté serveur (storage-01)
```bash
# État du RAID
sudo mdadm --detail /dev/md127
cat /proc/mdstat
# Exports actifs
sudo exportfs -v
# Recharger les exports après modification de /etc/exports
sudo exportfs -ra
# Statut NFS
sudo systemctl status nfs-server
```
### Arborescence du RAID
```
/srv/data/
├── nfs/
│ └── k8s/ → export pour le NFS provisioner Kubernetes
├── models/ → modèles GGUF partagés (gpu-01 monte ce répertoire via NFS)
├── hermes/ → données persistantes Hermes Agent (à venir)
├── postgres/ → données PostgreSQL (à venir)
├── qdrant/ → données Qdrant (à venir)
└── minio/ → données MinIO (à venir)
```
### Exports (`/etc/exports`)
```
/srv/data/nfs/k8s 192.168.10.0/24(rw,sync,no_subtree_check,no_root_squash)
/srv/data/models 192.168.10.0/24(rw,sync,no_subtree_check,no_root_squash)
```
---
## Côté client (gpu-01)
```bash
# État des automounts
sudo systemctl status mnt-nfs.automount
sudo systemctl status mnt-models.automount
# Monter manuellement (debug)
sudo mount -t nfs -o nfsvers=4 192.168.10.1:/srv/data/nfs/k8s /mnt/nfs
# Vérifier les montages actifs
mount | grep nfs
df -h /mnt/nfs /mnt/models
```
### Comportement automount (extinctions fréquentes)
Les montages NFS sur gpu-01 utilisent `x-systemd.automount` :
- **Pas montés au boot** — montés uniquement au premier accès
- Si storage-01 est éteint au moment du boot → gpu-01 démarre normalement
- Au premier accès → montage déclenché (timeout 30 s)
- `soft` + `timeo=30` + `retrans=3` → jamais bloquant si le serveur est injoignable
---
## Modèles GGUF sur NFS
```bash
# Les modèles sont montés directement sur gpu-01
ls /mnt/models/
# → bartowski/
# → lmstudio-community/
# Ajouter un modèle (depuis gpu-01 — sera stocké directement sur NFS)
ssh g01 "lms get <modele>"
```
---
## Ajouter un nouveau répertoire partagé
1. Créer le répertoire sur storage-01 :
```bash
sudo mkdir -p /srv/data/<nom>
sudo chown <uid>:<gid> /srv/data/<nom>
```
2. Ajouter dans `host_vars/storage-01/vars.yml` :
```yaml
nfs_exports:
- path: /srv/data/<nom>
network: "{{ cluster_network }}"
options: "rw,sync,no_subtree_check,no_root_squash"
```
3. Ajouter le montage client dans `host_vars/<host>/vars.yml` :
```yaml
nfs_client_mounts:
- local_path: /mnt/<nom>
remote_export: /srv/data/<nom>
```
4. Appliquer :
```bash
ansible-playbook -i inventory.yml playbooks/storage-01.yml
ansible-playbook -i inventory.yml playbooks/<host>.yml
```